EmotionTechテックブログ

株式会社エモーションテックのProduct Teamのメンバーが、日々の取り組みや技術的なことを発信していくブログです。

テスト自動化に取り組んだ結果

はじめに

こんにちは、QAエンジニアのもときです。 エモテクにjoinして、まもなく1年になろうとしています。 「もう1年なのか……」と思えるぐらい、1日1日の経過が早く感じております。

今回はこの1年で活動してきたことをお伝えできたらと思います。 この記事はエモーションテック Advent Calendar 2023 の2日目の記事です。

今までの活動

別の記事(https://tech.emotion-tech.co.jp/entry/2023/07/31/100000)で既にお伝えしていますが、joinした直後にまず始めたのはテスト管理です。テスト管理は、一時的な活動では無く、持続的な活動として、プロダクトチーム全体を巻き込んで実施できています。

ただ、これだけではQA活動としては、まだまだ不十分です。他にも、バグ集計、バグ分析、品質判断基準の策定、リリース判定基準の策定、性能試験の実施、脆弱性試験の実施、などなど……やりたいこと、やらなければならないことは挙げていったらキリがありません。

取り上げたいネタは、色々あり、迷ってしまうのですが、今回は、テスト自動化について、取り上げます。

背景

テスト管理を定常的な活動として進めていくうちに、テストタスクの多い時期、少ない時期が分かってきました。「タスクが落ち着くタイミングで他にQA活動ができないかな?」と考え、そこでテストの自動化に取り組んでみました。また「時間短縮やコスト削減に繋げる活動にも取り組みたい」とも常々考えていたのも取り組む理由のひとつです。

自動化に取り組む前のお気持ち

長年、私はQAエンジニア/テスターとして、働いています。自身のキャリアとして、Windows のバッチファイルやVisual Basicぐらいしか書いたことが無くコーディングから遠ざかっている身としては「テスト自動化 → コードを書く→ ハードルが高そう」と感じていました。その反面「テスト実施以外のタスクにも挑戦してみたい」と言う気持ちもありました。

調査

まずはどのようなツールが市場で使用されているかを調査してみました。また、ツールの試用版をインストールして操作感の善し悪しも確認してみました。ツールによってそれぞれ特色があり、得手不得手もあり、悩みました。 数日間、幾つかのツールを使用した結果、Cypressを使用して自動化を進めるようにしました。

なぜCypressなのか?

Cypress以外で、コード記述が不要のツールもあり、導入のハードルが低そうだと感じるツールはいくつもありました。また、Cypressは「コードを書く」という点で、正直気乗りしなかったのですが、以下の点でCypressにしました。

  • 試しにコードを書いてみたところ、そこまで難しく感じなかった
    • ログイン確認、ログアウト確認のテストを書いてみたところサンプルコードを参考にしながらですが、そこまで負担になること無く記載できました。
  • ネット上にサンプルコード、ナレッジが多く、困った時に活用できそうと感じた

取りあえずコードを書いてみよう

と言うことで、タスクの合間を見て少しずつコードを書いてみました。 上記で挙げたように、ネット上にサンプルコードが多く、存在していたことや、コード記述のTry&Errorを繰り返していった結果、記述頻度が高いコードが分かってきました。また、記載したいこと(テストしたいこと)の細分化をやってみると、意外に難易度は高くなかったです。記載したいことの細分化は、テストケースのテスト手順の記述のようなタスクだったので、普段のテスト活動で実施して、慣れていました。 コード記載の手順を纏めると、以下の手順でコードの記述を進めています。

  1. 「実施したいこと」「期待値」を考える
  2. 「実施したいこと」を細分化する → テストケースの手順を作成するようなイメージ
  3. コードを書く
  4. 挙動確認

自動化を取り組んでみて良かった点

今回、自動化に取り組んでみて、良かった点は以下になります。

  • コード記述のスキルが身についた
  • ユーザー視点を再度意識する切っ掛けになった
    • コードを記載する際にユーザー操作に近づけるように気を付けました
  • 影響確認が早く実施できるようになった
    • プロダクトのコードに変更が入った時の早めに影響が確認できるようになりました

今後の課題

今後、更に自動化を進めていく上で課題点がいくつか見えてきました。

  • テスト範囲が狭い
    • 現在の自動テストはあくまでもテストの一部を自動化しただけです。自動化可能だが自動化できていない箇所も多々ありますので、このあたりの自動化の検討が必要です。
  • 自動テストへの置き換えが未実施
    • 自動テストが動作することは確認していますが、手動テストから自動テストへの置き換えはまだ進んでいません。そのため、当初の目的の「コスト削減」が実現できていません。
  • 自動テストが不安定な時がある
    • 手動テストを自動テストへ置き換える上で、自動テストの精度は課題になっています。NGになった時、再実行すればOKになるケースもあります。ネットワーク速度の影響で、タイムアウトエラーになっているだけの場合もあります。精度も上げつつ、NG要因が外的要因なのか、プロダクトコードの変更に依るものなのか、見極める必要もあります。安定化するようにコードの質を高めていく必要があります。

おわりに

簡単ではありますが、テスト自動化に取り組んだ時の経緯、エピソードを紹介させていただきました。コードを書いたことの無いQAエンジニアで「コードを書くのは難易度が高そう……」と感じている方々の参考になれば幸いです。