QAエンジニア勉強会メモ
質問箱
食べログのソフトウェア自動化デザインパターン(カカクコム hagevvashiさん)
食べログはリリースから17年間QA組織なし。開発者が開発とQA
2016年からQA組織が発足
テスト自動化で気をつけるポイント
最初から成功率100%を目指していないか?
テストケースんお追加は簡単か?
テスト実行ごとにテスト結果が同一か?
DevOpsからDeveloper Productivity Engineeringへ
デザインパターン概要
課題
自動化の目的の早期のフィードバック
テストの再利用性の低さ
テスト自動化基盤
テストランナー(キューカンバー)→Selenium→ブラウザ
キューカンバー
Feature
Step
PageObject
テスト観点表(ゆもつよメソッド)
パターン1: いきなり100%を目指さない
テスト自動化を始めるコンテキストの話
解決策
最初のスプリングで95%(これは一律の基準ではない)の成功率を目指す
次のスプリントでより改善する
Circle CIのinsights
テストに関する統計データを可視化したダッシュボード
テストのステップ数
実行ごとのテスト失敗率
テスト実行時間
Flaky Testを避ける工夫
パターン2: 容易なテスト実装、変更に強いフレームワーク設計
キューカンバーのテストファイルの管理方法の話
Browser Automation API Wrapper
ブラウザ操作を自動化するテストではテストアクションに機能追加したいことが多い
課題
ブラウザ操作自動化ライブラリに機能追加が簡単にできない
解決
Wrapperオブジェクトを用意することでテストアクションに機能を追加する
結果
アクションが1つの箇所に集まる。DRYなテストファイルの管理
Page Object / Component Object
STEPファイルに何でもかんでも書いていると、画面の仕様変更でStepファイル内の色んな所を修正する必要がある
解決
ページ、UIパーツ固有の情報を集約したオブジェクトを用意
結果
画面仕様の変更時に対象オブジェクトを修正するだけで済む
パターン3: 安定したテストのためのテストケース自動化設計
JSONデータ駆動テスト
一般的なデータ駆動テストで用いる2次元表はパターンの増減に対応しづらい
課題
パターンの増加に応じて、Step関数が増えていく
解決
テストの入力値と期待結果はJSONで表現する
JSONをパースする必要はあるが、パターンの増減に柔軟に対応
StepにWait処理を書かない
課題
Flaky Testを避けるために、テスト対象の要素表示を待つ時間がバラバラに実装されてしまう
解決
ページオブジェクトやコンポーネントオブジェクトで要素表示を待つ実装をする
ログインタグパターン
課題
キューカンバーの実行単位がFeatureファイルであり、Featureファイルをまたいだ事前条件などで絞り込めない
解決
事前条件(ログインしていることなど)をタグとして設定する
結果
事前条件で絞り込みができるようになる
より早い段階からのテスト(クラスメソッド長友さん)
シフトレフト
テスト活動をソフトウェア開発ライフサイクルの最初にシフトすること(要件定義から入り込む)
バグの予防・早期発見につながる
テストは難しい
システムを十分荷テストしたいとしたら、十分にテストができるまで行わなければならない
テストの7原則
欠陥が「ない」ことは示せない
全数テストは不可能
テストレベル
系統的にまとめ、マネジメントしてくテストの活動グループ
ユニットテスト、統合テスト、システムテスト(←これがレベル)
各テストレベルでメリット・デメリットがある
テストピラミッド
システムの各部分に対して、テストの効果を最大化することが目標
ユニットテスト→統合テスト→システムテスト
この順で量が少なくなっていく(ユニットテストが一番多くやる)
ユニットテストだけではカバーできない部分については、統合テストやシステムテストを使って確認
Googleの場合
ユニットテスト 85%
統合テスト 10%
システムテスト 5%
テストに期待されること
体系的であること
あるコード(テスト対象)に対して、誰が考えても同じテストスイートを考え出せること
効果的であること
小さな労力で発見できるバグの数を多くすること
テストにはいろんなトレードオフがあるので、何をテストすべきかを知る
効果的で体系的なテストを作るには
開発者とテストエンジニアが一緒になってテストを作っていく
シフトレフトの先へ
シフトレフトは機能テストだけではなく、パフォーマンステストなど全部に当てはまる
「品質はチームの責任である」という意識をもつ
品質のキーとなるスキル
テスト知識だけではなく、良好な協力関係を気づくスキルも大事
prismatix
(iCARE銭丸さん)
リグレッションテストの工数が膨れ上がる
mabl(ローコードテスト自動化)を導入
テストに関する知識や経験
チーム内外のメンバーとの勉強会を開催