>& STDOUT

主にソフトウェアに関する日々の標準出力+標準エラー出力

BTS開発プロセス俺流

バグトラッキングシステムを導入するにあたり、どんなことを考えてどのように導入したらよいか?をまとめた記事を去年の冬コミに寄稿したのを、許諾を頂いたのでこちらにも転載します。既に運用されている方も、これから運用を考える方も、何かのご参考になれば幸いです。本エントリはバグ票ワーストプラクティスプロジェクトの提供でお送りします。それでは本編どうぞー。


こんにちは!しんすけさんと呼ばれることの多いしんすく(@snsk)です。なんでも「BTSについて好きなこと書いていい」という素敵なお話を頂きましたので、この機会に「俺が愛したBTS達」を赤裸々に…… は先日某コミュニティの予習会でやったので、今回は真面目な方の話をしたいと思います。題して「BTS開発プロセス俺流」。俺流とは言うものの、この方式で作ればそうそう外すことは無いはずという汎用的なものを目指しています。

1.BTS要件分析

どんな開発プロセスであってもはじめに要件分析ありき、ということでBTSもその類に漏れません。素人目にはウェブ上でちょいちょいっと設定するだけに見えても、そこは開発プロセスやバグのライフサイクルに密接に関係するツールですので、最初に考えておくべきことは意外にあります。

1-1.プロジェクト構成/利用言語の把握と定義

まず、既に使っている、またはこれから使う予定のBTSについてそのプロジェクト構成を確認します。大抵のBTSはデータベースをプロジェクト単位に分割可能でかつ、入れ子にすることが可能です。そのシステムを利用している最も大きな組織単位でどのような構成を採用しているのか、あなたが最初の導入者であれば、今後どのような構成を取るのかを確認/検討する必要があります。例えば、標準版を親プロジェクトとして、そこからのカスタマイズや派生開発はそのプロジェクトの子としておいて、子プロジェクトで出た標準版の問題は、上位のプロジェクトのトラッカーに登録する、等。また、このBTSが横断する国の言語は原則抑えておく必要がありますが、想定できない場合でも日本語と英語ぐらいは設定しておいたほうが無難でしょう。

1-2.プロセス改善強度の把握

「プロセス改善強度」ってなんですか?という声も聞こえてきそうですが、開発プロセスの改善にあたり基礎となるデータの取集をどれぐらいBTSに頼る予定なのか?をプロジェクトマネージャやQAマネージャと予め詰めておく必要があります。もし、あなたがQAマネージャの場合は自分でこの水準を設定することになります。どのタイミングでどんなデータを取ればどんな状況の把握に役立つはずである、というアレですね。例えば「混入工程」や「混入原因」、「テスト漏れ原因」などです。一見とても魅力的なフィールドで即採用してしまいそうですが、きちんとその理由と背景を把握しておかないと、のちのフィールドデザインの際の取捨選択時に正しい判断ができなくなってしまいます。また、運用開始時にメンバーに説明するためにも重要な資料となりますので、必ず行なっておきましょう。

1-3.連携が想定されているシステムの把握

今日日のBTSはSCMやテストマネジメントツールなど、さまざまな外部システムと連携することができます。どういうI/Oをさばく必要があるかによって、構築時のプラグイン選択などに制限がでることがあります。

2.バグライフサイクルデザイン

さて、ここからいよいよ「それっぽい」BTSの設計に入って行きます。まず最初に検討しなければならないのがこのバグのライフサイクルです。バグがいつ生まれて(認識されて)、開発チームのロールによるどのような過程を経て消滅(完了)するのか、主に「ステータス」を軸に検討します。

2-1.ステータス、ワークフロー設計

百聞は一見に如かずということで、まず例としてBugzillaという著名なBTSが定義しているライフサイクルを示します。

f:id:shinsuku:20151203130409p:plain

最も重要なのは、

  • 解析/修正などの”担当者”がアサインされたか否か - 図中ではASSIGNED
  • バグが解決されたかどうか - 図中ではRESOLVED
  • 修正されたバグは正しく確認されたか - VERIFIED or CLOSED

の3点です。もちろん状況を把握する為にはステータスは細ければ細かいほどよいでしょうが、今度はルールが守られにくくなるというリスクも抱えてしまいます。この辺の縛りと規律のバランスはこの先も常に悩まされることになります。迷ったら「削る」方向に倒しましょう。ステータスを増やすのは本当に本当に困ってからで充分、かつそうでないと、誰も本気でそのステータスを運用しようとは思わないでしょう。先に例示した3点であれば運用は明らかと思われますが、もしこれ以上増やす場合は、あるステータスからあるステータスに遷移する際の”条件”や”権限”も一緒に検討する必要があるでしょう。例えば、「修正インパクトが大きいので本バージョンでは凍結」を意味する FREEZE というステータスを新設する際には、いったいだれがインパクトが大きいと判断したのか?そのフィーチャーが次版に入らない事は同意を得ているのか?辺りをルールとして策定する必要があります。

2-2.ユーザとロール

次に検討するのはそのBTSを誰が、どんな役割で利用するのか?です。ロールの設定は先にあげたステータスを遷移させる権限と紐付くことがあります。代表的なのは「CLOSED」に出来るのは”テスター”や”テストリーダー”といったようなロールの人のみ、などです。ここをどれぐらい細かく設定できるか?はBTSによってさまざまですが、導入初期はプロジェクトリーダー、テスター、デベロッパーの3種ぐらいが設定できれば充分でしょう。一般的には登録とアサインは全員が可能。RESOLVEDにできるのはデベロッパー、またはプロジェクトリーダーで、CLOSEDは先述の通りテスターのみといった様子です。

3.フィールドデザイン

先にあげたステータスもこのフィールドの一種ですが、BTSには他にもさまざまな入力項目が設定できます。BTSとして機能させるために最低限必要なフィールドは「ステータス」「担当者」「現象の説明」「再現手順」の4つです。どれひとつ抜けても機能しませんが、「プロセス改善強度」が最低にセットされており、最小、最速の運用を臨む場合はこれだけでも良いかも知れません。Excel等のスプレッドシートでも何とかなるのではないかと考えるのも無理はないですが、ファイルで管理してしまうと 1.複数人編集が困難、2.バグ件数が増えると一覧性が極端に落ちる、3.必須の入力項目を設定することが容易にはできないなどの不都合が生じます。スプレッドシートは「祭りのあと」の分析に留めておきましょう。

3-1.プレフィールドとポストフィールド

実はいままで挙げたフィールドはすべてバグ登録時に記入、または自動的に設定される"プレフィールド"です。これに対し、そのレポートがCLOSEに相当するステータスに移行する際に記入されているべきフィールドが”ポストフィールド”です。プレフィールドが主にバグ自体の状況を記述するのに対し、ポストフィールドはそのバグがなぜ発生したのか?という背景を記述します。フィールドを新たに置くときはそのフィールドが”いつ”記入されるべきなのかを念頭においておく必要があります。

3-2.優先度?重要度?カテゴリ?必須?

必須ではないが推奨されるフィールドとしては他に「要約」「カテゴリ」「重要度」「優先度」「発生したバージョン」「コメント」「期日」などがあります。「重要度」と「優先度」の設定はよく混乱を招きますが、ひとつの指針として「重要度」は”その製品にとってどれぐらい問題の大きいバグか?”を表し、「優先度」は”そのプロジェクトにとってどのぐらい優先して解決すべきバグか?”を表す、と定めるとよいでしょう。つまり、「重要度」はテスターやデベロッパーが設定し、「優先度」はプロジェクトリーダーが設定するイメージです。「カテゴリ」はそのバグが製品にとってどのような不都合を生じさせるのかを端的に表す言葉を選びます。筆者はこれと「重要度」を一緒に運用できるよう、「P1.クラッシュ/フリーズ」「P1.セキュリティ問題」「P2.既定の仕様と異なる」「P3.他製品の一般的な動作と異なる」といった文言で運用していました。もちろんどんな現象が問題なのか?は製品ごとに異なるので、それぞれに問題を考えて設定し直す必要があります。これは設定前にプロジェクトリーダーやメンバーと同意をとっておくべきで、なおかつこの問題の裏返しでうすーく品質指標を意識してもらうことにも繋がります。地味ながら(コストが低そうに見えるが)とても効果的なのでオススメです。
 
また、フィールドをデザインするときに悩ましいのが「必須」フィールドの扱いです。これを入力しないと編集が完了できないというオプションですが、そのままバグ登録1件あたりのコストに跳ね返ります。かといって「任意」が多すぎるとこれまたBTSとしての精度を保てなくなってしまいます。これは組織やチームの文化の成熟度や先に述べた「プロセス改善強度」によって適宜調整することになりますが、BTS自体を上手に運用できなければその先も無いので、基本は極限まで少なく、です。

4.実装とインテグレーション

ここまで設計できたらいよいよ実装に入りましょう。いまどきの大抵のBTSはブラウザのみで設定が可能ですが、国際化やワークフローの設定などはそれなりに時間を取られるので、1日はしっかり確保しておいたほうが無難です。実装が完了したら、ひと通りのロールでステータスを遷移させてみて、想定通りの運用が可能かどうかチェックすることもお忘れなく。

5.運用

さて、とうとうあなたのBTSのがオープンします。まず最初に行うことはワークフローの説明会と資料の公示です。この時、先に設定したロールが具体的にチームメンバーの誰にあたるのかを確実に周知しましょう。ワークフローの説明は実際に動かしながら行うと更に効果的です。この時、のちのプロセス改善のためのフィールドについても、それがなぜ必要で、いつどんな役に立てるつもりなのかを一緒に説明しておきましょう。また、定期的に利用状況や不審なステータスの集計を行いBTSが健全に運用されているかどうかをチェックすることも重要です。また、あるステータスからあるステータスに遷移するまでの時間、いわゆるターンアラウンドタイムはプロジェクトマネージャにとっても非常に有用な情報になるはずです。例えば、新規登録からASSIGNEDになるまでの時間が不審に長い場合はリーダーの稼働状況や、テスターの登録精度に問題がある可能性があります。


以上、BTSを導入する際に検討すべきポイントについて、僕なりの経験に基づいてお話をさせて頂きました。BTSはプロジェクトの渦中中の渦中に運用されるシステムですので、そのプロジェクトがいまどういう状態にあるか、定性的な情報を導き出すのにとても有用なツールです。ぜひテストリーダに任せきりにせず、マネージャにも有効活用していただければと思います。

逆引きソフトウェアテスト関連技術まとめ

Software Test & Quality Advent Calendar 2011」の8日目。アドベントカレンダーということで、普段と少しトーンを変えてソフトウェアテストにあまり造詣のない方へ向けて何か役に立つ記事を考えてみました。先の記事でも述べたとおり、ソフトウェアテストの関連技術を表す用語はそれが何に使えて、何に役立つのか、門外漢にはとってもわかり難いので、そちらを軸にした紹介があると便利かもしれないということで、関連技術を目的別に整理し、参考になる記事や資料にリンクする形でお届けします。

テストの戦略を定めたい

ソフトウェアテストプロジェクトの最上流工程と考えられているテスト分析の方法論です。プロダクト、プロジェクトに対してそれぞれ独自の方式で戦略を検討します。テスト計画と一部被る部分もありますが、プロジェクトの予算やスケジュールをひとまずおいて技術的な視点から本当に必要なテストを考えるのに役立ちます。

マインドマップは方法論というより考えをまとめるためのツールですが、テスト戦略や設計など容易に果てしなく拡がってしまう検討事項をまとめるのにとても適しています。こちらも参照。

テストの方針を定めたい

戦略とどう違うのか説明が苦しいところですが、ここでは戦略策定の中で実際に採用されるもっとも高位のテスト方針の具体例を列挙しています。スクリプトテストは「先にテストケースを準備してから実行する」タイプの普通「テスト」と聞いて思い浮かべる方針です。なお、このテスト方針で通常生成される成果物(テスト計画、テスト設計、テストレポート等々)のひな形はIEEE829に定義されています。探索的テストはテストの実行と設計を同時に行なっていくアプローチで、リスクベーステストはテスト戦略/マネジメントにある特徴的な方向性を付与します。モデルベースドテストはソフトウェアのあらゆるレベルの(使えそうな)構造から、テストケース、テストデータを自動的に導いていく、というものです。

テストの開発プロセスを定めたい

テストスイートも分析して、設計して、実装してはじめて生まれる開発成果物ですので、当然開発プロセスが存在します。するのですが、多種多様な開発側?(この言い方はあまり好きではないのですが)のプロセスに比べてテスト側?(この言い方は(略))はかなり希少です。

テストのボリュームを”正しく”抑えたい

そもそもソフトウェアテストがひとつの技術として成立した背景にはこの問題がそびえ立っています。テストすべき無限の空間から、効率的かつ網羅性を担保しつつ現実的にテストできる量を”正しく切り出す”ための方法論がこちらです。この”正しさ”をどう捉えるかによってさまざまな技法が考案されています。また、これらの技法は要件定義や業務フローに対するテストでも粒度を大きく取ることで活用することができるので、その適用範囲は決して下流限定ではないことに注意です。

テストのヒット率を向上させたい

こちらはある程度完成しているテストに対して更に検出率を高めるためにふりかけるスパイスのような技法です。エラー推測は経験ベースのテスト技法に分類され、設計、実行するテスト担当者に対象製品への深い造詣と使用またはテスト実施経験が必要なので、案外導入の敷居が高いです。ある程度熟練したテスト設計者であれば用語は意識しないまでも、取り込まれていることでしょう。

ある特定の目的に向けてテストしたい

一般的に「テストの種類」と言うとこの辺があがってくるかと思います。単語で検索して良質な記事が出てくる割合が高いので用語だけで。JSTQBでは「テストタイプ」と呼称される、特定の品質モデルの要素を検証することに特化したテストの方式、方法論を指します。「特定の品質モデルの要素」に特化したもの、ですので必ずこれより先にテスト戦略や方針の策定を行わなければなりません。

  • テストタイプで挙げられているテスト群
ストレステスト、ロードテスト、セキュリティテスト、ユーザビリティテスト、
互換性(インターオペラビリティ)テスト、インストールテスト、などなど

異常系のテストを効率よくやりたい

異常系試験の悩みどころは正常系の試験に比べてテストケースを絞るのに規則性を使い難いところ、です。なにせ”異常”系なので、前述の「テストすべき空間」を無限に押し拡げるのにとても貢献しています。この困ったちゃんに対するアプローチはふたつ、1.正常系よりさらにアグレッシブな同値分割(≒トリアージ) 2.無限にチャレンジする。どう考えても頭の悪い2番を最もスマートに実現する方法が下記のファズテストです。

改めて整理してみて加瀬さんのサイトへのリンクが多いこと!来年のアドベントカレンダーではもう少し自分のサイトから紹介できるように技術系の記事をもっと増やそうと改めて感じました。もちろんここに挙げたのが全てではないです。新しい技法、手法も日々開発されていますので、日頃からアンテナを高くもってリストをメンテナンスしていきたいと思います。

モデルベーステストに入門する・その2

一つ前の記事で、生涯一テスターさんよりコメントを頂いた部分について補強。ハンドルネームかっこ良すぎなこのかたのBlogはこちらです。ソフトウェアテストの歴史を綴る、というおそらく日本ではここ以外にないテーマで、この筋の方にはたまらない内容となっています。未見の方はぜひ。知らず知らずのうちに大変お世話になっていることの多い、あの方のBlogです。

TEFでのモデルベーステストについての議論

アーカイブはこちら。メーリングリストのアーカイブで、TEFに参加していないと読めないのでこの機会にこちらもどうぞ。
このスレッドの議論の中で辰巳さんが整理されているモデル検査とモデルベースドテスティングの違い、がとても参考になるので引用します。

1)モデル検査
・モデル化の対象:対象システムの振る舞い(状態遷移に着目)
・モデル化の目的:実装しようとしている設計(状態遷移モデル)に仕様レベルの欠陥がないか否かの検証(検査項目は別途作成する必要あり)
・モデル化の方法:状態遷移(発表論文の多くは状態遷移。他にもあり?)
2)Model-based testing
・モデル化の対象:対象システムの振る舞い(仕様)
・モデル化の目的:テストケース,テストスイート,テストスクリプトなどの自動生成
・モデル化の方法:Grammar, Finite State Machine, Marcov chains, Statechart, Decision tables, Tabular definition 等


やはり目的はテストケースやテストスクリプトの自動生成ということでそんなにズレてないようです。モデル化の方法として挙げられているステートチャートやデシジョンテーブル以外があまり馴染みのないものだったので、別途調査してみます。デシジョンテーブルからの自動テスト生成はたぶんどこかにツールや論文があるような気がします。

モデルベースドテストに入門する

まったく意図してなかったのに、NativeDriver(駆動系), TABOK(自動テスト知識体系), モデルベースドテスト(ちょっとメタなテスト方法論) となんとなく部品が揃ってきた感じがします。ドキドキ。

モデルベースドテストってなんですか?

名前はよく聞くのですがいったいそれが何なのかさっぱりなのでまずは”認識”から。

個人的にはこの業界ネーミングが非常によろしくないと感じています。
テストの段階を示す用語やテスト設計方法論、テスト実行の方式を表す言葉、
そしてこのモデルベースドテスト、などメタな概念まですべて「xxテスト」
という言葉がついているので、どこにどのように適用していいのか直感的には
わからない。門外漢にはいよいよサッパリ。

テストについて困ったらJaSSTのサイトを見ろ!ってぐらいとっかかりには最強なサイトなのでまずはチェック。2007年(早っ)には既にモデルベースドテストについての言及があります。

にしさんによる、

で概略を掴んでから、小川さん(日立製作所)による

という順番で確認してみると良さそうです。


にしさんの発表の冒頭でも触れられていますが、モデル検査ではないことに注意。同じセッションにモデル検査の話もあるので同じコンテキストで読むと混乱するかもです。

資料で述べられているモデルベースドテストの定義

  • 「モデルベースドテスト入門」:にしさん
モデルベースドテスト(Model Based Testing)とは
ーテスト設計モデルを用いてテストケースを設計する技術の総称
ー網羅型テストを設計している時には必ず実施しているはずである
  • 「モデルベースドテストの技術動向と研究事例」:小川さん
モデルベースドテストとは、
ーテスト対象システム(SUT)の性質を記述したモデルから
ー全部または一部のテストケースが生成される
ーソフトウェアテスト

わかったこと

  • モデルベースドテストとは、テスト対象から導けるモデルを利用して”抽象テストケース”(テスト設計とテスト実装の間にあるイメージ)を自動的に導くテスト設計からテスト実装の直前までをカバーする手法
  • モデル検査ではないってば
    • これによってテスト設計自体や実装時のカバレッジが自動的に保証されることが嬉しい
  • 各種テスト設計方法論で用いられているモデルの種類
    • フローモデル(制御フロー、データフロー)
    • 状態遷移モデル
    • トレースベースモデル(シーケンス図やコラボ図など)
    • 組み合わせモデル
    • 統計モデル(ユーザプロファイルモデルなど)
    • 代数的モデル
    • 形式モデル

次にやること

実際のソフトウェアを使ってモデルを導く⇒それを使って抽象テストケースを導く をやってみる。

ここまでの感想

ソフトウェアテストを考えるときにテスト設計を最上位に置くより、こういうったメタな概念から連なるものと考えたほうが、応用や新しいものを生み出すときに有利に働くかなと。テストプロセスでいう、テスト分析とテスト設計の間に挟まるもの、ですね。智美塾でまさに議論しているテストアーキテクチャの一種なのかも。

TABOK - テスト自動化のスキルカテゴリ まとめ


http://www.automatedtestinginstitute.com/home/index.php?

数回にわたってお送りしてまいりました、テスト自動化の知識体系TABOKのさわり(アブスト)に触れるシリーズ。訳にかなり苦しんだところもありましたので、誤訳や意味落ちについては是非ご指摘を頂ければと思います。


スキルカテゴリ1〜7がリーダー、マネージャ向け。8〜12がエンジニア向けです。テスト自動化技術者のこと、"Automator"と呼ぶのですね。Macの自動操作環境みたい。一応Windowsにも"WSH"という自動操作環境があります。簡単なプロダクトであれば操作だけならこれで充分なので、興味のある方は調べてみてくださいね。

目次

TABOK - テスト自動化のスキルカテゴリ 10, 11, 12


http://www.automatedtestinginstitute.com/home/index.php?

TABOKで定義されている12のスキルカテゴリの触りをお伝えするこのシリーズもこれで完結です。本も届いたので中身を読み込んでいこうと思います。

Skill Category 10: Debugging Techniques

Types of Errors.

自動テストがどのように設計、実装されているかに関係なく問題が発生することがあります。時にスクリプトの問題であったり、アプリケーションに関連するものであったりしますが、根本原因を見つけることは必ずしも容易ではありません。スクリプトデバッグを効率的に行えないと深刻なスケジュール遅延をもたらし、時に自動化の推進自体をストップさせてしまうことがあります。


スクリプトデバッグの最初のステップは、検出される可能性があるエラーの種類を理解することです。スクリプトの実行時に発生する可能性のある主要、かつ一般的なエラーには次の4つがあります。

  • 構文エラー
  • ランタイムエラー
  • 論理エラー
  • アプリケーションエラー
Debugging Techniques

デバッグの最も困難な部分は、エラーの真の原因を見つけることです。これにはエラーを再現させ、エラーの主な情報源を発見するプロセスが伴います。とても頻繁に発生するエラーにはそれを発見するためのいくつかのテクニックが存在します。これはその時点でそのエラーがアプリケーションの欠陥であるか、スクリプトのエラーであるのかを判別し、その後エラーを修正するための対策を検討するのに役立ちます。効果的なデバッグプロセスは通常次のようになります。

  1. エラーの識別
  2. エラーの再現
  3. エラーのローカライズ
  4. エラーの修正

Skill Category 11: Error Handling

Error Handling Implementation

エラー処理はテスト自動化スクリプトの中でもさまざまな方法で実装されていますが、そのほとんどは次の3つのカテゴリに収めることができます。

実行実装(Run Implementation)ってなんですか… 
Error Handling Development

過度の実行時エラーはテスト自動化を致命的に妨げるため、実行時エラーやその他予期しないシステムを効果的にハンドリングするルーチンはとても重要です。下記の図はエラー処理のアプローチを成功させるための開発プロセスを示しています。プロセスは以下のとおりです。

  1. 潜在的なエラーの診断
  2. エラー補足メカニズムの定義
  3. エラーログデータの生成
  4. エラーハンドルルーチンの生成


Skill Category 12: Automated Test Reporting

テストレポートとその分析は非常に反復的なプロセスであり、多くの時間を必要とすることがあります。このカテゴリではどのように効果的にこれらのレポートを生成するか、にフォーカスします。自動テストフレームワークによって生成されるレポートの種類は以下のとおりです。

  • ハイレベル(スイート/テスト)レポート
  • ローレベル(検証ポイント)レポート

TABOK - テスト自動化のスキルカテゴリ 8, 9


http://www.automatedtestinginstitute.com/home/index.php?

Skill Category 8: Programming Concepts

あなたが利用するツールとそのスクリプト言語、ツリー構造、基本的なプログラミングの概念はテストがカバーできるシステムや柔軟性に大きな影響を及ぼします。変数、制御構文 (if..then..else, for..next, etc)及びモジューラビリティはこのカテゴリで議論されます。

Skill Category 9: Automation Objects

アプリケーションオブジェクトの認識

むかしむかし、機能テストの自動化は、主にアプリケーション上でシミュレートされたユーザーのマウスとキーボード操作の再現を、画面やアプリケーションウィンドウの特定の座標位置に依存する、"アナログ"なアプローチを用いていました。それは画面やウインドウがわずかに変更されただけで、存在しないオブジェクトへアクセスしてしまい自動テストが失敗するという、とても信頼性の低いものでした。近代的なテスト自動化は必要なオブジェクトの位置やアクセス方法をそのオブジェクト自身のプロパティから取得するという、異なるアプローチを取ります。

オブジェクトマップ

自動化テストスイートの保守性と堅牢性を向上させる最も簡単な方法のひとつに、オブジェクトマップの導入があります。 オブジェクトマップはプロパティに関連付けられている値を外部ファイルに格納し、テストコードはそれを参照することで、テストコード自体が保持する(依存性の高い)情報量を減らすことができます。

オブジェクトモデル

多くのソフトウェアアプリケーションは、いくつかの相互に関連するオブジェクトで構成されます。オブジェクトモデルは、アプリケーションの機能を実現するために協調、関連するオブジェクトの階層を抽象的に表現します。オブジェクトモデルが提供する利点は次のとおりです。

  • アプリケーションの理解性の向上
  • スクリプト記述能力の向上
動的なオブジェクトの振る舞い

自動テストのエンジニアが直面する最大の課題のひとつに動的なオブジェクトの振る舞いがあります。目視による検査はアプリケーションの情報を柔軟に処理できますが、自動テストではオブジェクトのプロパティを利用します。目視であれば、アプリケーションに若干の変更があった場合も容易に調整することもできますし、多くのプロパティの変更を無視することができます。しかし、コンピュータにこの調整は容易ではないため、どんな調整が必要になるかは、予め自動テストのプログラミング時に予測されていなければなりません。

ここでいう動的なオブジェクトとは、恐らく可変長のリストコンポーネントや
動的に生成されるボタンなどのUIオブジェクトを指すものと思われます。