Automation Testについて(背景編)

まやすまさん
·

今日はまだ自動テストの経験や知見がない方向けに、ちょっぴり苦手意識がなくなるよう、わたしの自動テストとの出会いや勉強方法など記します。※技術的なところはしっかり纏めて別記事で書きます。

結論から言うと、自動テストは難しくないです。自動テストは奥深くて面白いです。自動テストは全てを解決できるわけではないですが、多くの人を幸せに出来ます。

まず、筆者である私の性格ですが、とてもめんどくさがりで、細かい単純作業が壊滅的にできない人。ただし、頭を使って難しい問題を解決するのが大好き。まとめると、人間しか出来ない仕事に集中するために、めんどいことは自動化しちゃおうって価値観のひと!業務外でもあらゆることを自動化してます。

そんな私自身が自動テストというワードと出会ったのは2014年の夏。某大手第三者検証会社でアルバイトしていた頃でした。当時はアジャイルテスティングもAI自動テストツールも、シフトレフトもQA内製ブームも存在しない世界線。自動テスト(E2E)も選択肢がなくSeleniumな時代でした。

そんな自動テストに初めて自分で触れたのが2022年頃、SaaSの会計アプリの会社に常駐したことがきっかけです。入場後はスクラムチームの中に入り、手動の探索的テストやスプリント内でのQAの動きを覚えていきます。その流れで徐々に自動テスト領域にも踏み込ませてもらいました。

そちらの現場はとても素晴らしい環境で、JSTQBやアジャイルテスティング系の本の著者、翻訳者達と一緒に働ける環境で、QA向けのオンボーディングや、ドメインや技術のドキュメントがしっかり整備されていました。自動テスト周りも例外なくありました。アジャイルテストや自動テストの最初の一歩を踏みだすにはこれほどないくらいに素晴らしい環境でした。とはいえ、コードの文法自体は独学が必要だったので、githubで他の人の書いたコードを読んだり、日々飛び交うコードレビューからコツコツと学び、仕様変更による数行の修正からコーディングに入りました。

なんだか、ノンプログラマにはすごく高い壁だと思った自動テストもやってみたら意外と簡単!俺にもできるんだって嬉しかったのを覚えています。コードを書くと聞くと難しく感じるかもしれませんが、英語の文法を覚えるより簡単だし、難しいプログラム(JavaScript)を書く時はChatGPTが教えてくれるし、フロントエンドエンジニアと仲良くなっておけば力を借りれるかもしれません。

ちなみに自動リグレッションテスト(E2E)の運用フローを細かく分けていくと、だいたいどこでも以下のようになるかと。

新機能が実装/または仕様変更かされる

1 自動テストが通るシナリオを作成

2 自動テストを実装(コーディングorツールに操作を記録する)

3 自動テストが決められた時間やCI/CDで起動される

4 ログを受けとって問題あれば、エンジニアへ報告

※フロー自体は手動テストと変わらないです

◇自動テストの勉強方法

1 本を読む

技術的な観点で学ぶなら、オライリーの「初めての自動テスト」がおすすめです。逆に他の本はいらないかも。自動テストの基礎知識、ロケートの知識、Selenium(e2e)による自動化からユニットテストまで自動テストの技術が内包されています。ただし、Selenium自体が今ではレガシーとなってきていますので要注意ではありますが、考え方自体は普遍的なものなので、PlaywrightやCypressのコードに読み替えたり、またはAutifyやMagicpodの裏側を想像しながら読むとわかりやすいです。

特に、Magicpodの開発者にはこの本の訳者もいらっしゃって、裏側の仕組みはSeleniumベースです。Autifyとmablとはまた違った毛色ですね。

2 実務で学ぶ

これが出来るなら一番です。私もこれでした。ロケートやコードの書き方(文法以外)、自動テストのポリシー、Gitのプルプッシュなんかは教えて頂きました。また、コードレビューで厳しい指摘をいただき何クソ精神で学びがエスカレートしましたね!あとは、実際に自分がブランチ切って、コードを書いて、プルリクを出して、テスト環境への反映までするといった一連の流れを行うと、開発者側の作業の流れも理解できてとても勉強になりました。

3 外部カンファレンスや情報収集

基本的に現代はQA技術についてもたくさんの情報が溢れていますし、発信者もたくさんいらっしゃいます。こういった方をXで追っていくと、有益な情報に辿り着けます。

また、コードを書き始める、ツールを利用すると大体壁に当たるので、そういった際にWeb検索するとqiitaの技術ブログで既に扱われているテーマだったりする事が大概です。結局のところ、やってみて上手くいかなくて自分で調べて再トライが一番の近道かもしれません。

例えば、これから始める方向けのこんな技術ブログ見つけました。とっても丁寧にわかりやすく書いてくれていますね!

https://ops.jig-saw.com/tech-cate/e2e_cypress

◇現在の自動テストとの関わり方

現職では開発チームから自動テストをやってほしいと希望ありますが、QA組織では自動テストが推奨されていないという状態。

なので、自動テストは行なってないですが、Cypressを使って自動のデータ作成を行っています。私自身はスクラムの一員としても動いてますので、プランニングで入ってきたアイテムに対して、開発中からスクリプトを書いてテストデータを作れるものはコーディングをして、QAフェーズでの効率アップに役立てています。また、開発エンジニア側で必要なテストのサポートとしてスクリプトを提供するようなことをしています。E2Eって開発エンジニアに知見ないことも多いのでとても有り難がっていただけます。開発チーム内でのポジション作りにも役立ちますね!

ただ、自動テストから離れてもうすぐ一年。最近では、せっかく実体験として鍛えた筋肉が落ちてきているような気がして、危機を感じています。やっぱりやらないと覚えないし、忘れちゃうなと。。

まぁ、飯食って寝ます

@yuyukun
表現者です QA Engneer/Softwear Engneer in Test