
前回の記事では、組織の中でテスト自動化を普及するためには個人やチームが頑張るだけではなく、組織でどう取り組むかについて考える必要があるというお話をしました。
たとえばマネジメント層の理解や適切なリソース配分などが大事、という内容でしたが、組織で普及していくために欠かせない要素は他にもあります。
それは、テスト自動化に関わる個々のエンジニアがテスト自動化について知識とスキルを身につけること、です。
テスト自動化に限らず、組織の後押しだけでは物事は進みません。現場で業務をおこなうひとりひとりが技術や考え方を身につける必要がありますよね。
今回は前回の記事とは視点を変えて、実際にテスト自動化をおこなう個人に焦点を当て、テスト自動化スキルを身につける方法について解説します。
なお、本記事中の「テスト自動化」は前回までと同様、E2Eテストなどテスト対象のUI、とくに画面を操作しておこなうようなテストのことをターゲットとします。
テスト自動化をおこなうために身につけるべきもの
システムテストの自動化をおこなうにはさまざまなスキルが必要ですし、同時にすでに知られているベストプラクティスやアンチパターンなどの考え方を把握しておくことも大切です。
これらをひとつずつ挙げていくとキリがないですし、何においても「学ぶべきこと」は無限にあります。
ここでは
- 技術面
- 知識面
の2つの側面から主な例を説明し、次の項目でその学び方についてご紹介します。
技術面
技術面、テクニカルなスキルとして身につけておきたい点は大きく2つです。
①プログラミングのスキル
ひとつは、プログラミングのスキルです。
SeleniumやPlaywright、SikuliXなどのライブラリを用いる場合はプログラミング言語でテストを書く必要があるため、当然プログラミングスキルは必要になります。
しかし、最近ではノーコード・ローコードのテスト自動化ツールも普及しています。プログラミングのスキルがなくてもテスト自動化にトライできる環境が整ってきているといえるでしょう。
ここで注意が必要なのは、テストを自動化できることと、自動化したテストをうまく使い続けられることとは別である、という点です。たとえノーコード・ローコードのツールであっても、行いたいテストに応じた詳細な設定などをおこなう機会はあり、「結局JavaScriptを書く必要が出てきた」というシチュエーションもよくあります。
また、テスト手順の一部を共通化したり、同じ手順でもより効率的な操作の仕方を考えたりと、一般的なプログラミングで求められるスキルが転用できる部分は多々あります。
プログラミングのスキルがなくてもテストは自動化できるけれども、うまくやる、継続するためにはあったほうがいい、と考えておきましょう。
②テスト対象を構成する技術要素のスキル
もうひとつは、テスト対象を構成する技術要素に関するスキルです。
極端なことを言えば、「テスト対象を自分でも作れるくらいになりましょう」です。ただ、これからテストを自動化を学ぼうと思っている方にとってはハードルが高いですよね。こんなことを書いているわたし自身も、いまテストしているWebサービスと同じものを作れ!と言われたら、おそらくできないと思います。
QAエンジニア・テストエンジニアの方が開発者と同等のスキルを身につけることは大変です。ただ、ここで言いたいのは、基本的なところについては実際に手を動かして理解をしましょう、ということです。
たとえばWebサービスのテストを自動化したいのであれば、HTML・CSS・JavaScriptなど、使われている技術要素に関する基本的な理解が必要です。Windowsのアプリケーションを自動化するには、ウィンドウハンドルの考え方や、場合によってはWin32APIを知っておくことも必要かもしれません。
以上2点がベースにあれば、あとは個々のツールやライブラリの使い方を身につけることで、テスト自動化に関して「手を動かして進める」ことができるでしょう。
ただし、手を動かせるだけではテスト自動化ができるとは言えません。技術面のスキルと同時に、考え方についても学ぶ必要があります。
知識面
手を動かしてテストを自動化するだけでなく、どんなテストを自動化するかや、テスト自動化自体をどう進めていくかを考えることも必要です。
そのために必要な知識として、こちらも大きく2つが挙げられます。
①ソフトウェアテストの知識
ひとつはソフトウェアテストに関する知識です。テストプロセスや、各テストレベルにおいてどんなテストをおこなうべきか、などを知っておく必要があります。
ソフトウェアテストについての知識がなくとも、技術面で挙げたスキルを持っていればテスト自動化はできます。しかし、『テスト自動化の8原則』にも
2. 手動でおこなって効果のないテストを自動化しても無駄である
とあるように、そもそもテストとして有効かどうかが重要なポイントです。
意味のあるテスト自動化をおこなうためには、その土台としてソフトウェアテストに関する知識が必須です。
②テスト自動化の知識
もうひとつは、テスト自動化に関する知識、とくに一般に公開されている事例およびベストプラクティス・アンチパターンは押さえておくべきです。
テスト自動化も取り組む組織が増えてきたおかげで、「こうしたらうまくいった」「こうしたら失敗した」といった事例が多く公開されています。これからテスト自動化を学ぶ方にとっては、とてもありがたい状況です。
他社での成功事例をそのまま真似すればいい、というわけではありません。しかし、すくなくとも同じ失敗をしないように他社事例を把握しておくことは大切です。
学ぶための手段
ここまで、技術面と知識面それぞれ身につけておくべき代表的な事項について説明しました。
ここからは、実際にそれらの事項を身につけるにはどうしたらいいのかをご紹介します。
わたしが考える、テスト自動化に関する技術と知識を身につける最良の方法は「詳しい人に教わりながら実務でテスト自動化をおこなう」です。そうはいっても、そんな方法で身につけられる機会というのはそうそうない、とも思っています。
たとえば社内の研修がある、もしくは詳しい方に聞ける環境があれば、それらを最大限活用するところから始めましょう。
なかなかそうした機会が得られない、身の回りにはない、という場合は以下を参考に学び始めてみてください。
技術面の学習方法
身につけるべき内容、として先に挙げた
- プログラミングのスキル
- テスト対象を作るためのスキル
については、書籍やWebサービスなどが多数あります。
プログラミングが未経験である、という場合は簡単な入門書から始めてみたり、最近ではWebブラウザ上でプログラミング学習ができるサービスを利用したりするのがオススメです。わたしが過去、テストエンジニア向けにプログラミングを教えていた際には、ブラウザ上で説明を読みながらコードが書けるタイプの学習サービスを用いていました。独力で書籍を頼りに学習するのに比べ、効果的に身についていた印象です。
プログラミングの感覚が掴めたら、ごく簡単なものでもよいので、動作するアプリケーションを作ってみましょう。
また、最近ではプログラミングや開発に関して学ぶためにChatGPTを使うのも有効です。プログラミング言語を指定して「こんなものを作りたいから、順序立てて説明してほしい」と書くと丁寧に教えてくれますし、エラーが出た場合に「こんなエラーが出たが、どう解決すればいいか」と聞くと答えてくれます。
あまりにもChatGPTに頼りすぎてしまうとスキルアップに繋がらないため、ある程度自分で考えたうえでどうしてもわからない場合に質問をするか、「直接答えを書かずにヒントを教えてほしい」と依頼すれば上手にサポートしてくれます。
テスト自動化に関する技術を学ぶ際は、プログラミングを学ぶのとは少し違ったアプローチになります。
わたしのオススメは、テスト会社や第三者検証会社、テスト自動化ツールを開発している会社がおこなっているハンズオンに参加することです。誰かに教わりながら実際に手を動かしてテスト自動化ができるという点で、よい機会になるでしょう。
一方ハンズオンだけでは実践レベルのスキルを身につけることが難しいので、学んだことを手元で、できれば業務でテストを自動化したい対象でおこなってみるのが理想です。
SeleniumやPlaywright、あるいはKatalonStudioなど無料で使えるツールやライブラリもあるので、これらを用いて実践してみることが一番です。
テスト自動化ツールは テスト自動化関連ツール・ライブラリまとめ – Qiita にまとめてありますので、ここから無料のものを探して使ってみてください。
他には、動画で学ぶという方法もあります。
たとえば Test Automation University | Applitools では、テスト自動化に関するさまざまなツールやライブラリの使い方など、実践的な動画が公開されています。すべて英語にはなってしまいますが、動画自体はYouTubeにアップされており、自動翻訳で字幕をつけることもできます。
知識面の学習方法
技術面の学習に比べると、テスト自動化の知識をたくさんインプットするほうが始めやすいかもしれません。
身につけるもの、として挙げた「ソフトウェアテストに関する知識」は、書籍や資料がたくさん存在します。
個別のテスト技法に習熟することも大事ですが、テスト自動化の前提知識として学ぶ場合にはテストプロセスやテストの全体像を把握することのほうが優先です。
テストプロセスなど、ソフトウェアテストに関して学ぶには
が無料でいますぐ見られる点でオススメです。こちらを読んで&視聴して、必要に応じて書籍などを読むのがよいでしょう。
テスト自動化について学ぶには、『テスト自動化の普及と推進【前編】~阻害要因と対策』の最後でもご紹介した、以下の書籍やサイトが参考になります。
- Test Automation Patterns
- Experiences of Test Automation: Case Studies of Software Test Automation
- システムテスト自動化 標準ガイド (CodeZine BOOKS)
ただ、上記はいずれも英語だったりボリュームが多かったりと、最初に読むには大変かもしれません。
もっとも短くてポイントをおさえられるのは、本記事でもご紹介している『テスト自動化の8原則』です。こちらはテスト自動化研究会が公開しているもので、テスト自動化をおこなううえで意識すべき点が簡潔にまとまっています。
他にも、玉川 紘子(たまがわ ひろこ) | Sqriptsさんの連載も読んでおくとテスト自動化を実際に運用する面で大切なことを学べます。
学習の両輪を回そう
本記事では、技術面と知識面の2つの側面からテスト自動化について何をどう学ぶかを説明しました。
テスト自動化のコードやスクリプトだけが書けても継続的な自動化は難しいですし、一方で知識のみがあっても手を動かせなければ自動テストは実現できません。技術と知識はどちらも必要です。
手を動かすことと、ベストプラクティス・アンチパターンなどを知ることの両輪を回しながら学習と実践をしていきましょう。
連載一覧
テスト自動化ツールの選定【前編】~ツールの比較表をどう活用するか
テスト自動化ツールの選定【後編】~AI自動テストツールを選ぶ時に気をつけるべきポイント
テスト自動化の普及と推進【前編】~阻害要因と対策
テスト自動化の普及と推進【後編】~個人レベルでテスト自動化を学ぶ
テスト自動化とテスト設計【前編】~作成済のテストケースの整理と加工
テスト自動化とテスト設計【後編】~テスト自動化のためのテスト設計

