こんにちは!
LIFULL HOME'S事業本部 QAグループの佐藤です。
今回初めて、3月7,8日の2日にわたり開催されたJaSST’18 Tokyoへ参加させて頂きました。
JaSSTソフトウェアテストシンポジウム-JaSST'18 Tokyo
本記事では2日目の講演内容についてご紹介させて頂きます。
How to identify test flakiness in your test result data テスト結果からテストの不安定性(test flakiness) を読み解く
登壇者:John Micco 氏 (Google)
オープンソースのデータセットとBigQueryを用いて、実際にSQL文を実行し、 テストデータの分析を行う手法について具体的なレクチャーを頂きました。 前半はテスト結果の分析、後半はGitリポジトリに蓄積されたデータの分析でした。
本チュートリアル用に作成されたリポジトリ
オープンソースのデータセット
感想
弊社QAグループにおいても、Seleniumを用いて継続的にE2E自動テストを実行し、 テスト結果をデータベースに格納し、ダッシュボードにおいて可視化と分析を行っております。
Flakyなテストについては、弊社の自動テスト実行環境においても、度々発生しており、 再実行回数を増やすことで対応しているといった状況です。 もちろんテスト結果の量においても、分析においてもまだまだGoogleのレベルに達しておりません。
今回のBigQueryにおける分析、Gitのコミットデータの分析はシンプルですぐに導入でき実用的なので、 メトリクス計測の手段のひとつとして検討していきたいと思います。
私が経験したソフトウェアテストの変遷
登壇者:柴田 芳樹 氏 (ソラミツ)
テスト駆動開発と継続的インテグレーションの技術的変遷について、 具体例として柴田さんの経験を交えての講演を頂きました。
気になった点を要約すると、
- 1990年代までは結果を目視で確認していたが、2000年以降はテストファースト・テスト駆動開発による自動化されたテスト
- テストファースト
- 歴史的にフィードバックループは短くしてきた
- 最短はいま書いたコードを見直すこと
- テストファーストだとフィードバックループが短くなり、いま書いたコードを見直すことができる
- デバッグしているという感覚から、ひたすら実装しているという感覚へ
- 自動化されたテストは、いつでも何度でも実行可能なので、ソフトウェアの資産になる
- 手で行ったテストはもう一度時間をかけて目視で確認する必要があるので資産ではない
- 1990年代までの夜間ビルドから、2000年以降は継続的インテグレーションへ
- 昔はそれぞれ開発していて、ある程度できたら集める、というビックバン・インテグレーションだった
- 失敗する継続的インテグレーション
- マネージャーが関心を払っていないため、常にビルドに失敗している
- 静的解析ツールの警告が高度すぎて警告の意味がわからない
- 手動の単体テストを行う前にレビュー
- テストが終わった後にレビューをすると名前の変更などで手戻りが発生する
- マルチスレッドプログラミングのテストは難しい
- 間違っていても動いてしまうことがあるため、動かす前に知識・経験を持った人がきちんとしたレビューをする
- 100回動作しても保証されないので、自動テストが必須
- 発生した障害をきちんと記録して分析するが、どう分析していいかわからないので、専門家に相談していた
- Flakyな部分がある
- 例えば、3ヶ月前の変更部分がたまたま特定のマシンで露見する
- 継続的インテグレーションや自動テストを実践することが当たり前で、むしろ実践していないことが「弱み」になる
- QAは開発プロセス全体を通して深く関与しなくてはならない
まとめ
- テスト駆動開発と継続的インテグレーションは必須
- 開発者とQAは開発の早い段階からソフトウェアの品質を作り込むために協業すべき時代となっている
感想
開発者とQAは開発初期から協業するべきということは本当にその通りだと思います。
テスト駆動開発と継続的インテグレーションの導入という点でも、テスト全体のサポート(弊社ではテスト計画の作成やレビューなど)においても、 初期の段階からQAチームなどのノウハウを持っているチームがサポートできる状態になっていることで、ソフトウェアの品質を作り込むことができるかと思います。
当然、人的リソースの問題などはありますが、協業を円滑に進めるための仕組み作りも必要かと思いました。
総評
ソフトウェアテストのカンファレンスには初めて参加させて頂きましたが、他のカンファレンスと違って明らかに参加者がテストに情熱を持っている雰囲気があり、Miccoへの質問も次々と出ており、参加者の私にもワクワク感が伝わってきました。
Googleのように先を進んでいるチームもあれば、そもそも自動テストの導入段階のチームもあり、ソフトウェアテスト業界全体を幅広く知ることで、自社の立ち位置も知ることができ、非常に有意義でした。
また、講演頂いたお二人に共通して、QAはゲートキーパーというよりも、全体を見守る立ち位置であるように感じられました。
継続的インテグレーション、継続的デリバリーなどによりソフトウェアテストの自動化が進み、より創造的な仕事に集中していけるような未来が見えてきました。
運営・参加者の皆さま、どうもありがとうございました!
最後に
LIFULLではエンジニア各職種の中途採用募集中です!
エントリーお待ちしております。