Classi開発者ブログ

教育プラットフォーム「Classi」を開発・運営するClassi株式会社の開発者ブログです。

テスト自動化〜運用編〜

こんにちは!Classi QAチームの池田です。

今回は、Classiで取り組んでいるテスト自動化の運用についてご紹介します!

弊社ではテスト自動化ツールにAutifyを使用しており、テストを自動化したお話についてはこちらの記事で紹介しておりますので、よろしければご覧ください!

運用の取り組み①定期実行

弊社のQAエンジニアは、各開発チームに「専任QA」として配属されています。 私が専任QAとして所属している開発チームの担当領域は「設定・登録」です。

自動化を進める前は定期的なリグレッションテストが行われていなかったため、自動化したテストを定期実行し、品質の担保に貢献していきたいと考えていました。

また、長い時間を要してしまう手動でのリグレッションテストを自動化することで、検証時間の削減にも繋げていきたいと考えました。

自動テストを作成し始めてからは定期的に開発チームに進捗を共有していたのですが、「できてるシナリオからどんどん回していけば?」と提案していただいたので、完成したシナリオから定期実行を始めました。

定期実行に含まれるシナリオの一部

「設定・登録」では、先生や生徒の情報を登録したり、授業や時間割を設定することができます。 そのため自動化のシナリオ内では各種設定や情報を操作することが多いのですが、その際シナリオの順序性により不都合が出てしまうことがありました。

例えば、シナリオを並列実行することにより、あるシナリオの情報変更操作が原因で並列実行しているシナリオが失敗してしまう、途中で実行失敗しシナリオ内で削除されるべきデータが削除できず後続のシナリオに影響が出て失敗してしまう、などの事象が立て続けに起こりました。

そのため、実行は並列から直列に変更、他に影響を及ぼす可能性のあるシナリオの実行順序を後回しにする、などの改善を行いました。

定期実行に関する資料の一部

成果としては、定期実行により障害を検知することができました。

開発チームは不定期にリリースを行っており、ライブラリのアップグレードなどのQAを通さない簡素なリリースもあります。 そのリリースで影響範囲の考慮が一部漏れており障害が出てしまったのですが、定期実行で検知しユーザーからの問い合わせが入る前に対応することができました。

運用の取り組み②開発のテスト工程での自動テスト活用

リリース時のQA検証としても、自動テストの活用を開始しました。 QA検証の際には、影響範囲である機能をリグレッションテストとして実行しています。

自動テストを実行している間に手動項目を検証できるので検証時間短縮に繋がっています。自動テストを活用し始めてから、月10時間ほど検証時間を短縮できた時期もありました。

また、リリース内容によっては自動テストだけで完了できるものもあります。 その場合には自動テストを実行しながら別作業ができるので、より効率的に仕事ができるようになりました。

運用の取り組み③シナリオ改善作業

自動テストを作成後、既存機能に修正が入った場合や、新機能や画面に新しい文言が追加された場合などの状況に応じて修正や改善作業を行っています。

文言を確認するステップを自動テストに入れている場合、UIの僅かな変化でも自動テストが失敗してしまうことがあるので注意が必要です。

また開発の都合上、別の開発チームが担当領域の改修等を行うことがあるため、自動テストの修正要否を判断するために、他のチームのリリース情報を随時キャッチアップするようにしています。

運用していくにあたり、自動テストの改善も必要です。 内容によっては実行に時間がかかってしまったり、よく失敗してしまうテストもあります。 どうしたら実行時間をより短縮できるか、どうしたらテストを安定させられるか、という観点で改善していくことが多いです。自分達だけで解決が難しそうな場合は、ツールのカスタマーサポートに問い合わせて助けていただくこともあります。

例えば、自動テスト内で情報の入力や選択をする際、要素を探索する時間が長くなってしまう場合があります。そういった場合、CSSセレクターを利用して要素を選択し時間短縮を行う方法があります。ただし、CSSセレクターの中にテストのたびに変わってしまうclassの値などが入っているとテストが失敗してしまうため、注意が必要です。

CSSセレクターを指定したステップの例

運用の取り組み④ナレッジ蓄積

自動テストを運用するにあたり、ナレッジの蓄積も重要となります。

自動テストを作成から運用までしていると、情報や知識が属人化しやすくなります。自分以外のメンバーが対応することになってもいいようにナレッジを蓄積していく必要があると感じました。

自動テストシナリオの一例

以下、ドキュメントを残す際の観点の一例です。

  • 自動テスト運用の概要
  • シナリオ一覽
  • データ編集内容
  • 使用している環境/アカウント
  • 注意事項

このドキュメントを見れば、仮に自分が不在の場合でも他のメンバーが運用の内容を把握し、対応できるようにしています。

ドキュメントの一部

運用の取り組み⑤開発メンバーへの自動テスト解放

そして、今年度から取り組んでいる運用が「開発メンバーへの自動テスト解放」です!

昨年度までに全ての開発チームに対するテスト自動化がほぼ完了しました。 次のステップとして、QAチーム内のみで管理していた自動テストを開発チームにも解放し、開発チームも自動テストを使ってテスト工程で検証できる体制作りを進めています。

狙いとしては開発チームのリリース頻度向上、およびQAチームの工数削減を目的としています。

開発チームが自動テストで検証することで、QAチームに依頼する工数が削減できリリースしやすい状況になること、且つQAチームも検証にかかる工数を削減できるようになることを想定しています。

現在、一部のチームから解放するトライアルを実施しています。解放対象は既にQAが作成した自動テストの実行のみで、自動テストのメンテナンスや作成は引き続きQAメンバーが対応していますが、今後の状況によっては解放範囲も変わってくるかなと思います。

現在はトライアルの段階ですが、開発メンバーへヒアリングを実施して運用の改善に努めていく予定です。

運用フローの一部

さいごに

以上、Classi QAチームのテスト自動化の取り組みをご紹介しました!

どの運用もまだまだ試行錯誤している段階のため、課題やフィードバックを基により良い運用になるよう努めていきたいと思います!

© 2020 Classi Corp.