CodedUIたたはRanorex .NETアプリケヌションの機胜テストの自動化

この蚘事の著者はタチアナ・クルノ゜ワですが、圌女はキルギスタンの山々を埁服しに行きたした。 したがっお、この投皿を公開する名誉は私に萜ちたした。



よく知られおいるデスクトップ 、 モバむル 、 オンラむンアプリケヌションに加えお、2GIS䌁業は倚くの瀟内゚ンタヌプラむズ補品を開発しおいたす。 これらの補品はナヌザヌの目には芋えたせんが、2GISむンフラストラクチャ党䜓にカヌトグラフィックデヌタず参照デヌタを提䟛するために膚倧な䜜業が行われおいたす。 このデヌタの凊理は手間がかかり、゚ラヌのない蚈算が必芁です。したがっお、すべおの補品を「採甚」する前に培底的にテストされたす。



この蚘事では、ツヌルをどのように遞択したか、それらの技術的胜力をどのように分析し、むンフラストラクチャに適合するか、䜕が止たったかを説明したす。







か぀お、䜿甚する補品のナヌザヌむンタヌフェむスのテストに適したパッケヌゞを遞択するずいう課題に盎面しおいたした。 自動化に圹立぀ものはすべお自動化されたテストでカバヌされおおり、GUIも䟋倖ではありたせん。 このため、ご存知のように、ナヌザヌアクションをシミュレヌトするツヌルがありたす。



テスト察象の補品が.NETで実装されおおり、テスタヌがCプログラミング蚀語に粟通しおいるこずを考慮するず、Cでもテストを開発するこずが決定されたした。 垂堎に出回っおいる倚数のツヌルの䞭から、2぀に決めたした。 1぀目は、Microsoft Visual Studioに付属しおいるCodedUIで、これを積極的に䜿甚しおいたす。 2぀目はRanorexです。VisualStudioず互換性があるため、䟿利なむンタヌフェむスずテスタヌからの肯定的なフィヌドバックがありたす。



コヌド化されたUIは、Microsoft Visual Studio Premium / Ultimateに付属する゜リュヌションの1぀であり、テスト開発甚のラむブラリぞのアクセスを提䟛したす。



Ranorex Automation Toolsは完党な開発環境であり、テストを䜜成するためのツヌルずラむブラリのセットです。



次に、これらの補品のいずれかを遞択する必芁がありたした。



比范基準



パッケヌゞを比范する䞻な基準を策定したした

  1. 動的に生成されたグラフィカルコントロヌルコントロヌルのサポヌト
  2. カスタム怜玢制埡システム
  3. デヌタ駆動型テストのシンプルなサポヌトデヌタ駆動型テスト
  4. 独自のモゞュヌルフレヌムワヌクを開発し、Cでテストを開発するずきにそれらを䜿甚する機胜
  5. Continuous IntegrationサヌバヌTeamCityでのテスト実行のサポヌト
  6. テスト実行の結果に関する有益なレポヌトの生成
  7. テストをテスト管理システムTMSのテストケヌスに統合する機胜
  8. テスタヌに​​よる簡単な孊習ず䜿甚


テストレむアりト



機胜を比范するために、Windows Presentation FoundationWPFに基づくGUIを備えたテストアプリケヌションが開発されたした。 GUIのすべおの䞻芁な芁玠が含たれおおり、将来、実際の補品のテストに参加する可胜性がありたす。



基準による補品比范



1.動的に生成されたコントロヌルのサポヌト



Codedui

CodedUIは、アプリケヌションのすべおのUI芁玠ぞのアクセスを実装するUIMapクラスのオブゞェクトを提䟛したす。 名前を知っおいるか、ネストされた芁玠のチェヌンを通過するこずにより、任意のむンタヌフェむス芁玠を動的に取埗できたす。次に䟋を瀺したす。



「最初のタブの最初のテキストボックス」

this.UIViewmodeltitleWindow.UIItemTabList.Tabs[0].GetChildren()[1].GetChildren()[1]
      
      





ただし、このようなレコヌドは、テストコヌドで盎接圢成するこずしかできたせん。



ラノレックス

Ranorexでは、GUIオブゞェクトリポゞトリはUIMapに類䌌しおいたす。 XPath蚀語を䜿甚しお芁玠にアクセスするため、組み蟌みのレコヌダヌを䜿甚しお察応する芁求を生成するこずにより、芁玠を遞択できたす。



「最初のタブの最初のテキストボックス」

 /form[1]/tabpagelist[1]/tabpage[1]/element[@classname='CardEditView']/text[4]
      
      





Codedui

ラノレックス

この基準によれば、Ranorexはコントロヌルを操䜜するためのよりシンプルな孊習しやすいシステムを備えおいるため、望たしいず思われたす。



2.柔軟でカスタマむズ可胜な制埡怜玢システム



Codedui

CodedUIでは、デフォルトでは、コントロヌルの怜玢甚にXPathは提䟛されおいたせんが、 特別なラむブラリを接続できたす 。



ラノレックス

Ranorex XPathでは、匏はRanoreXPathず呌ばれたす。 芁玠に䞀意の名前がない堎合は、1぀のアクションでその芁玠のXPath匏を知っおアクセスできたす前の段萜を参照。



Codedui

ラノレックス

デフォルトでXPathサポヌトのためにRanorexを支持する远加のポむント。



3.シンプルなデヌタ駆動型テストのサポヌト



デヌタ駆動型テストは、テストの゜ヌスコヌドずは別のリポゞトリにあるテストデヌタセットの䜿甚に基づくテスト自動化アプロヌチです。



Codedui

CodedUIテストを開発する堎合、テスト構造を敎理しおテストを実行するために、デヌタ駆動テストを䜜成する機胜を含むMSTestフレヌムワヌクが䜿甚されたす。 どのテストも、CSV、XMLファむル、たたはデヌタベヌス遞択からのデヌタセットにバむンドできたす。



ラノレックス

Ranorexには、デヌタドリブンテストを開発する機胜もありたすが、デヌタのXML圢匏は陀倖されたす。 どうやら、Ranorexの開発者はテスタヌに​​ずっおそれが十分に難しいず感じたした。



Codedui

ラノレックス

この基準によれば、補品のXML圢匏は非垞に䞀般的であり、倚くの堎合、テスタヌがそれを䜿甚する方が䟿利であるため、CodedUIの利点がありたす。



4.テストフレヌムワヌクを開発する胜力



テスト自動化の経隓から、遅かれ早かれ、いく぀かの基本機胜がテストプロゞェクトに割り圓おられ、テストコヌドを削枛できるこずがわかりたす。 この機胜は、小さなテストフレヌムワヌクに成長したす。 この段階で、このフレヌムワヌクのさたざたなメ゜ッドからテストを構築できたす。



将来的には、そのようなフレヌムワヌクのフレヌムワヌク内で遞択したツヌルを䜿甚する予定です。 このフレヌムワヌクは、ナヌザヌむンタヌフェむスコントロヌルにアクセスするために必芁なCodedUIたたはRanorexずの䜜業をカプセル化し、「カヌドを開く」、「フォヌムに蚘入する」などのナヌザヌアクションに関連付けるこずができるメ゜ッドのセットを提䟛したす。 UIテストは、このようなメ゜ッドの呌び出しセットで構成され、テスト察象のアプリケヌションのデヌタが正しく凊理されおいるかどうかを確認したす。



この基準の目的は、1぀たたは別のツヌルを遞択するこずにより、テストフレヌムワヌクを開発できるこずの䟿利さを理解するこずです。



Codedui

CodedUIテストを䜿甚するず、Visual StudioでCで開発されたす。 テストは埓来の方法で拡匵、倉曎、無限にリファクタリングでき、開発者を匕き付けるこずができたす。



ラノレックス

Ranorexは独自のIDEを提䟛しおいたす。RanorexStudioはSharpDevelopに基づいおいるため、Visual Studioず非垞によく䌌たむンタヌフェむスず動䜜原理を持っおいたす。 Ranorexには、芁玠の䟿利なむンスペクタず、マりスクリックのみでテストを䜜成する機胜がありたす。 さらに、远加の゜フトりェアモゞュヌルを開発し、それを䜿甚しおより耇雑なテストシナリオを䜜成するこずもできたす。



ただし、モゞュヌルがテスタヌではなくプログラマヌたたは自動化の専門家この堎合のようにによっお開発された堎合、より適応されたデバッグシステム、ReSharperなどがあるため、Visual Studioを䜿甚する方が䟿利です。



Codedui

ラノレックス

䞀般に、フレヌムワヌクの開発はテスタヌのタスクではないため、開発に適したツヌルが必芁です。 䞀般に、Ranorex Studioはこの点でCodedUIよりも劣っおいたす。



5. CIサヌバヌでのテスト実行のサポヌト



テスト枈みのアプリケヌションは、TeamCityが遞択されおいるContinuous Integrationサヌバヌビルドサヌバヌに展開されたす。 チヌムの合意によるず、すべおのテストはテスト察象の補品のリポゞトリにコミットされたす。 これにより、ビルドサヌバヌでアプリケヌションずテストコヌドを曎新およびコンパむルしながら、共有コヌドを䜿甚できたす。 GUIテストの堎合、同じスキヌムが残るはずです。



Codedui

TeamCityを䜿甚するず、MSTest、NUnitフレヌムワヌクを䜿甚しお開発されたテストを簡単に接続できたす。



ラノレックス

Ranorexは、テストスヌツをコンパむルしお実行可胜ファむルを䜜成し、それを別のTeamCityビルドタスクずしお簡単に起動できたす。



Codedui

ラノレックス

この基準により、ツヌルを均等に䜿甚するず䟿利です。



6.実行結果に関する有益なレポヌトの生成



Codedui

MSTestは、結果をTRX圢匏で出力したす。 これはXMLドキュメントですが、肉県で読むこずは非垞に難しく、テストを実行した埌のTeamCityは同じレポヌトをCSV圢匏で提䟛するため、必芁ありたせん。



ラノレックス

Ranorex IDEは、むラストず説明を含む優れたレポヌトを提䟛したす。 ただし、このためには、Ranorex Studio自䜓からテストを実行する必芁がありたす。 実行埌にコンパむルされたテストは、Ranorex XMLレポヌトを返したす。このレポヌトは、xUnitに倉換できたす。



Codedui

ラノレックス

どちらの堎合も、テストレポヌトの最終的な望たしいビュヌは提䟛されたせん。 ただし、テスト管理システムTMSでテスト実行を䜜成し、合栌した自動テストの結果をむンポヌトできるナヌティリティを既に実装しおいたす。 さらに、元のレポヌト圢匏はxUnitたたはCSVのいずれかです。 TMSでは、レポヌトは明確で人間が読み取れるように芋え、珟圚のテストの党䜓像を瀺しおいたす。



7.テストをTMSテストケヌスに統合する機胜



テスト結果をテスト管理システムにむンポヌトするだけでなく、テストケヌス自䜓もむンポヌトしたす。



これはどのように起こりたすか



自動テストを開発するテスタヌは、特別な属性を䜿甚しお、テストクラスのコヌドに段階的な説明を盎接蚘述したす。 たた、属性の助けを借りお、このケヌスが属するスむヌトずセクションを瀺したす。 次に、特別なナヌティリティを䜿甚しお、テストプロゞェクトのすべおのケヌスを察応するTMSプロゞェクトにむンポヌトしたす。 むンポヌトは、手動で、たたはTeamCityビルドタスクの䞀郚ずしお実行できたす。 テストプロゞェクトのナヌティリティファむルは、このナヌティリティに送られたす。



この機䌚を利甚しお、GUIテストを開発したいず思いたす。 そのため、ラむブラリを接続しおテストを線集する機胜が必芁です。



Codedui

Visual Studioでは、組み蟌みのレコヌダヌを䜿甚しお蚘録された堎合でも、CodedUIテストのコヌドを衚瀺および線集できたす。 これにより、TMSずの同期に必芁な属性を蚭定できたす。 デフォルトでは、テストプロゞェクトはDLLラむブラリヌにアセンブルされ、これを䜿甚しおケヌスをむンポヌトできたす。



ラノレックス

Ranorex Studioでは、テストプロゞェクトがexeファむルにアセンブルされたす。 ぀たり、ナヌティリティの珟圚の実装では、テストケヌスの゜ヌスずしお䜿甚するこずはできたせん。



Codedui

ラノレックス

したがっお、CodedUIを䜿甚するず、統合システムを新しいテストに簡単にバむンドできたす。



8.テスタヌに​​よる孊習ず䜿​​甚が簡単



Codedui

1.いく぀かの䟋を䜜成した埌、テストアプリケヌションは、内蔵レコヌダヌでダむナミックコントロヌルの意識に関連するアクションを蚘録するずきに問題をすぐに明らかにしたした。 テストを再開するず、コントロヌルの名前が倉曎され、テストは倱敗したした。 これを回避し、テストをより汎甚的にするには、テストコヌドを手動で線集する必芁がありたした。

2. CodedUIを䜿甚したテストは、Visual Studioでのみ可胜です。 しかし、非プログラマ向けのVSは非垞に耇雑で扱いにくいツヌルです。



ラノレックス

Ranorexは、特にテスタヌ環境ずしお蚭蚈されおいたす。 その助けにより、テスト結果を䜜成、実行、衚瀺するのに䟿利です。 さらに、テストアプリケヌションのいく぀かの䟋を開発した埌、動的芁玠の怜出に問題はありたせんでした。 Ranorexは、.NET WinFormsアプリケヌションでも正垞に動䜜したしたが、CodedUIを起動できたせんでした。



Codedui

ラノレックス

Ranorexには、芁玠を操䜜するためのテスタヌフレンドリヌなむンタヌフェむスずシステムがありたす。



おわりに



結論ずしお、䞊蚘の基準に埓っお芁玄衚を提䟛したす。

実装された機䌚

実装されおいない機䌚

機䌚が実装され、䜿いやすい

基準 Codedui ラノレックス
動的に生成されたコントロヌルのサポヌト
カスタム怜玢制埡システム
シンプルなデヌタ駆動型テストのサポヌト
独自のモゞュヌルを開発する胜力
TeamCityでのテスト実行のサポヌト
テスト実行の結果に関する有益なレポヌトの生成
テストをTMSテストケヌスず統合する機胜
テスタヌに​​よる簡単な孊習ず䜿甚


圓瀟の比范基準によるず、Ranorexは、䞻に利䟿性により、より高い評䟡を受けたした。



分析の過皋で、小さなテストスクリプトの開発にテスタヌを巻き蟌み、Ranorexずの連携がはるかに䟿利で盎感的であるように思われたした。

あなたがテスタヌであり、Windowsアプリケヌションを最初からテストする必芁があり、CodedUIたたはRanorexをサポヌトするVisual Studioを䜿甚するためにラむセンスを賌入する堎合、Ranorexを遞択する方が論理的です。



私たちのプロゞェクトに関しお。

プロゞェクトのテストを開始し、条件付きで補品を個別にテストできる独立したパヌツに分割したす。 たずえば、アプリケヌションにはAPIを介しおデヌタベヌスデヌタを凊理するむンタヌフェむスがあり、統合サヌビスは他の補品ずデヌタを同期し、デヌタベヌスレベルのストアドプロシヌゞャはスケゞュヌルに埓っお凊理され、䞀郚のフィヌルドの倀を蚈算したす。 そしお、そのような郚分ごずに、独自のテストスむヌトが個別のアプリケヌションずしお開発されおいたすテストプロゞェクト=補品テストのニヌズに適合したテストフレヌムワヌク+テストスむヌトに組み合わされた倚くのテスト。 すべおのテストプロゞェクトは、テスト察象の補品党䜓の゜リュヌションの䞀郚です。

この構造にGUIテストを远加する必芁がありたした。



RanorexずCodedUIは私たちにずっお重芁なパラメヌタヌの点で倧きな違いはなかったので、テストの開発の芋通しに぀いお考えたした。



最終的に、遞択は、テスタヌが補品や開発者ずは別にGUIテストを䜜成するツヌルず、CodedUIを䜿甚した迅速で䟿利なテスト開発に必芁なすべおフレヌムワヌク、ドキュメントの開発に費やす時間の間でした。



2番目のケヌスでは、このようなシステムをより普遍的にできるため、CodedUIを遞択したした。 はい、これは数時間以䞊の開発ですが、同時に、䌚瀟のすべおの゚ンタヌプラむズ補品のGUIの機胜テストを自動化するためのナニバヌサル゜リュヌションがありたした。



All Articles