JaSST nano vol.8 (2022/1/[email protected]) https://jasst-nano.connpass.com/event/235252/
システムテスト自動化スクリプトのレビュー観点を挙げてみたの@JaSST nano Vol.82022/1/18ぱいん1
View Slide
サマリ1. 開発経験を踏まえて、レビュー観点を整理してみた2. 規定したテスト条件を実現し、期待通りの検証することが合格ライン3. 理想的には、初期からレビュー観点を整備できれば最適だが、プロジェクトやテスト対象に応じて積み上げていくのが現実的2
自己紹介• ぱいん• 本業– テストエンジニア@テスト会社– 1児のパパ• 社外活動など– JaSST Review実行委員– JaSST Online実行委員 など• 趣味– Twitter– Bリーグ鑑賞(川崎BTファン)3
本日の発表のスコープ4[1]
おことわり• こちらの資料は、ぱいん個人の考えです。会社や所属組織の考えではありません• Q&Aはないので、Twitter #jasstnano でお願いします• 資料は公開します5Speakerdeck ぱいん
ぱいん的レビュー観点&比重1. 検証方法(40点)2. テスト条件(25点)3. コードアーキテクチャ(15点)4. 再実行可能性(10点)5. リーダブルコード的なあれ(10点)6あああああああああああ美しいコードであったとしても、テストができていなければ不合格
1. 検証方法• 理由:対象がテストコード=テスト実行を行うコードであるため• 判定方法の妥当性– 想定した出力を判定条件に使っているか• 例1)文字列を判定 (”このプランで予約”)• 例2)オブジェクトの存在を判定 (id=“reservation_plan”)• 例3)表示を判定 (画像判定)• 判定方法の安定性– どういうパタンで落ちる可能性があるか– 判定の待ち時間の過不足• 仕様で規定されている通りか• (仕様がない場合)無用に長く設定しすぎていないか7
脱線1) 何をassertion (検証) するのか• 例) 手動テストでは無意識に以下の3つを検証している• 3つのチェックポイント1. オブジェクトの存在を判定2. 文字列を判定 (”このプランで予約”)3. 表示のレイアウト、見切れを判定• 自動テストにおいてはそれぞれ検証方法が異なる1. オブジェクトの存在を判定 (id=“reserve_btn”があるか)2. 文字列を判定 (”このプランで予約”とマッチするか)3. 表示のレイアウト、見切れを判定 (画像判定など)8OKOKNG
2. テスト条件• 理由: 期待どおりのテストの条件を設定する必要がある• テストケースに対する一致性– ユーザ操作との一致を重視• システムテストとしての役割を果たしているか– 明記されていないテスト条件が実装されているか• 言語• ロケール• App version• 冗長なテストコードを作成していないか– 複数テストケースにまたがって同じコードがある場合、関数化する• Preconditionの簡潔性– データ準備などで不要なテストステップを実装していないか• (Tips) テストに直接関係ないステップはAPIを使う (ユーザ作成)• (Tips) テスト対象に二段階認証回避するパスを準備しておく9
待って!これってコードレビュー観点以前の話じゃない?10
脱線2)待って!これってコードレビュー観点以前の話じゃない?• その疑問は正しい!• これらの大半は、コード実装開始前に済ませておきたいこと• 実際のところ、具体的な観点や観点の粒度はテスト対象、チームの状況による⇨上流へフィードバックをかけて行くのが現実的11[2]
3. 再実行可能性• 単一テストケースでの再実行可能性– 再実行を妨げる処理• 既存データの更新、削除• ユーザプロファイルの更新• 他のテストケースへの影響• 他のテストケースに依存していないか• 他のテストケースに依存されていないか12
4. コードアーキテクチャ• 理由: 大人数での開発、規模拡大の際の効率性に影響する• setup, teardownは書かれているか• setup, teardown: 前処理、後処理で共通化したもの• 前提条件を戻す (ログアウト, キャッシュ削除 他)• エビデンス確保 (設定データ、スクリーンショット、ログ他)• エビデンスの取り方• 起票するのに必要な箇所は残せているか• 実行時間が長すぎないか• (使用している場合) Page Object Moduleの呼び方が合っているか13
5. リーダブルコード的なあれ• ←細かいことは読んでください• 命名規則• 読みやすさ• コメント• 制御フロー• フォーマッタ適用• 文法チェック• 例外処理14[3]
まとめ• 開発経験を踏まえて、レビュー観点を整理してみた• 規定したテスト条件を実現し、期待通りの検証することが合格ライン– 合格ライン(当たり前品質)を満たした上で、規模やレベルに応じたアーキテクチャ整備を進める• 理想的には、初期からレビュー観点を整備できれば最適だが、プロジェクトやテスト対象に応じて積み上げていくのが現実的– 開発者が習熟してくると、合格ラインのレビューは楽になる– レビュアーは安定性や運用性などに考慮した、より良いアーキテクチャに導いていく15
参考文献、サイトNo. Slide # ページ名 URL1 4 テスト自動化研究会 - 本会について https://sites.google.com/site/testautomationresearch/about2 11 テスト自動化プロジェクトを支える技術と仕組み, SpeakerDeckhttps://speakerdeck.com/yoshikiito/tesutozi-dong-hua-puroziekutowozhi-eruji-shu-toshi-zu-mi?slide=183 14 Dustin Boswell, Trevor Foucher著, 角征典訳,“リーダブルコード ――より良いコードを書くためのシンプルで実践的なテクニック”,O’Reilly Bookshttps://www.oreilly.co.jp/books/9784873115658/いらすとや https://www.irasutoya.com/16