[E2Eテスト自動化]データの掃除はE2Eじゃなくて良い?
こんにちは。SODAでクオリティエンジニアをやっているokauchiです。最近のテスト自動化での気づきをメモがてら紹介します!
テストシナリオの掃除はE2Eテストでやる必要がある?
E2Eテストシナリオで生み出して二度と使わないデータを量産していませんか?一時的に作成をしただけでその後は二度と参照がされないようなデータです。スニダンの自動化で言うと出品や取引、アカウントなどが該当しますね。二度と使われないのであれば残しておく必要もないし、逆にあることで不便になることが多いです。情報の検索性が下がったりするので。これをついついE2Eで対処してしまおうとしてしまった時の話です!
E2Eテスト自体がそもそも失敗がしやすいもの
地産地消の考えは筋が通っているし、やりっぱなしよりはもちろんマシ!ただすべてをE2Eテストで賄おうとすると、
・テストシナリオ自体が巨大化してしまう
・テストシナリオの名前と実態がズレてしまう
・ステップ数が増えることで成功率が下がる
と言うような、課題が出てきます。
テストシナリオ自体が巨大化してしまう
自動化ツールや運用方法によっては1テストシナリオの上限ステップに触れてしまう、巨大化することのメリットはほぼなく、テストシナリオが読みにくくなったり、以降の課題にもつながります。
テストシナリオの名前と実装がズレてしまう
テストシナリオ名は「XXXの作成」となっているのに、実装が「XXXの作成、編集、削除」と言うようなものに変わってしまう。運用を開始した時にテストが失敗すると「XXXの作成」と言うテストシナリオなので、作成で失敗したのか、それ以外の処理で失敗したのか詳細を見るまでわからないし、誰かに説明する時も毎回実装は違ってまして・・というような説明が必要になってしまう。
ステップ数が増えることで成功率が下がる
現在のステップの成功後に、次のステップの実行があるので、単純にステップ数が増えれば増えるほどテストシナリオ全体としての成功率が下がる。
誰しも出来ることから課題解決をついつい考えがち
E2Eテストで生み出したから必ずE2Eテストで消さないといけない・・という縛りは存在しません。むしろE2Eに頼らない方がより速く、確実にデータを消すことができます。例えばテストシナリオで作成したデータを削除するAPIが提供されているようなら、UI操作に頼らずそれを利用すればより確実ですし、Webエンジニアと協力してバッチ処理、それをスケジューリングや同じトリガーを起点にして動かす方法がないかを一緒に考えたり、開発するのも有効です。自動化=E2Eという頭で考えてしまうとつい陥りがちな罠でもありますね。危うく僕も少し足を踏み入れるところでした。
チームや組織で働いているのだから、お互いに頼りあおう
人によってはWebエンジニアに頼るのが苦手な人もいるかも知れません。彼らに楽をさせてあげたいのに協力をしてもらうことで彼らの時間を奪ってしまったら元も子もない・・と言うのもわからなくはないです。ただそれは視点が自分だけに向き過ぎで、少し相談すれば解決できるようなことも相談してもらえない関係性ってちょっと窮屈ですよね。お互いの専門領域はリーダーシップを発揮しつつも、組織で働いているので、自分だけで、QAチームだけで課題を解決しようとせず、エスカレーションや相談することであっさり、本当にあっさり解決することもあるので、専門家を抜きにして自分達だけでどうにかしようとしていないかというのは考えたいところですね!
株式会社SODAの開発組織がお届けするZenn Publicationです。 是非Entrance Bookもご覧ください! → recruit.soda-inc.jp/engineer
Discussion