見出し画像

テスト自動化するとどんな良いことあるの?~JSTQB TAEシラバスを読んで、テスト自動化を学んでみる Vo.4~ 1.1 テスト自動化の概要と目的(3)

こんにちは、毎週投稿に疲れてきました。(いきなりこんなこと言っていいのか。。)
が、「継続は力なり」ということで引き続き頑張っていきたいと思います。

今回はJSTQB AL テスト自動化エンジニア シラバス 1.テスト自動化の概要と目的に記載されている「テスト自動化の利点」について、見ていこうと思います。

【JSTQB TAEシラバス構成】
0.イントロダクション(完了)
1.テスト自動化の概要と目的
 1.1 テスト自動化の目的(←この続き)
 1.2 テスト自動化の成功要因
2.テスト自動化の準備
3.汎用テスト自動化アーキテクチャ
4.導入のリスクとリスクヘッジ計画
5.テスト自動化のレポートとメトリクス
6.手動テストから自動化環境への移行
7.TASの検証
8.継続的な改善

 みなさんはテスト自動化するとどんないいことがあると考えますか?
「違う作業している間にテストしてくれるから楽になる」「人手が浮くから、コストが下がる」等、さまざまではないでしょうか。
このシラバスにも上記と同じようなことが書いてあるかもしれないし、書いていないかもしれません。
そのような部分に着目して、読み進めていければなと思います。

注意事項

・このシリーズの投稿は個人の意見であり、所属企業・部門見解を代表するものではありません。
・また、テスト自動化のエキスパートではありませんので予めご了承ください。

テスト自動化の利点

 このシラバスではテスト自動化を行うことによって、以下の利点が得られると説明しています。

テスト自動化の利点①:より多くのテストをビルドごとに実行可能にする

 ビルドというと、あまり開発をやったことのない人は聞き覚えがないかと思います。(もちろん私もないです。)

・ビルド
プログラミング言語で書かれたソースコードなどを元に実行可能ファイルや配布パッケージを作成する処理や操作のこと。また、組み立てられた実行ファイルなどの特定の版を指す場合もある。(IT用語辞典 e-Words)

ビルドごとにテストをするということは、新たな変更を加えるたびにテストを実施するということです。
これが手動テストだけ実施するとどうでしょうか。工数やリソースの確保が難しく、テストも十分にできないのではないかと思います。
ただ、それをテスト自動化で代用してくれるとなるととてもありがたいことです。
またそのテストで不具合が見つかれば、早期に修正できるので、その結果、全体の修正コストは抑えることができます。

おそらく、何人の方はこの利点を聞いて、CI/CDツール(ex. Jenkins、Circle CI)を思い浮かべるのではないかなと思います。

・CI(継続的インテグレーション)
あらかじめ定めた時刻やバージョン管理ツール上のソフトウェア成果物に変更があるたびに、コンパイルやテスト、静的解析といった一連のビルドおよび関連作業を実施し、ソフトウェアを常に統合することである。

・CD(継続的デリバリー)
CIの概念を発展させたもので、開発だけでなく、本番ソフトウェアの作成や本番システムへのデプロイ(※)を対象にする

(SQuBOK Guide V3)

これによって開発者へのフィードバックを早めたり、時系列に品質を可視化することができます。
テスト自動化する上で強力な方法の一つでもあります。

・デプロイ
開発したソフトウェアを実際の運用環境に配置・展開して実用に供すること
(IT用語辞典 e-Words)

テスト自動化の利点②:手動では行えないテストを作成できるようにする

手動では行えないテストとはどんなものでしょうか。
例をあげると以下のようなテストです。

並列テストで50台のユーザーでテストしたい

手動だと人手が50人必要で現実的に実施不可能ですが、自動テストであれば1人で出来る可能性があります。

そのほかにも、離れた場所にある端末で実施したい(リモートテスト)やリアルタイムで確認したい(リアルタイムテスト)があげられるでしょう。

テスト自動化の利点③:手動より複雑なテストの実行

手動テストより複雑なものって何でしょうか。個人的にはテスト自動化②と変わらん気がすると思っていますが。。
例をあげると、以下かなと思います。

・手動では実現しにくいタイミング
 一瞬しかないタイミングとか。
 現場で検証していたときに、よく苦労していたのを思い出しました(笑)。
 こういう不具合の方がクリティカルだったりするんですよね。。

・手動では確認が困難な期待結果を確認したい
 裏で起きていること、UIでは見えない部分等

あげてみると、テスト自動化導入しなくても、すでに対策してそうだなと思いました。(開発者の方にあるテストをしたいために専用のテストウェアをもらうとか。。)
私のイメージは「テスト自動化≒人でもできるテストケースを自動で動かせるようにする」でした。つまり、「テスト自動化≠人ができないテストを専用のソフトウェアとかを使ってテストする」と考えていたため、個人的にはこれもテスト自動化に入るのか。。と思いました。

テスト自動化の利点④:テスト実行の高速化

これは皆さん想像していたのではないでしょうか。
実際にseleniumやtestcafeを触ると、人間が実施すると10秒かかるテストが、テスト自動化だと数秒でできると思います。
このようにテスト実行がはやくなると、テストコストなども減少します。

テスト自動化の利点⑤:オペレータミスによるテスト結果への影響を軽減

これは個人的に「たしかにそうだなぁ」と感じた部分です。
残業だらけの時は期待結果を見落としたり、手順を間違えたことはだれしもあるのではないかなと思います。(個人的に思っているだけかも。。)

システムテスト自動化標準ガイドによると、人間は大量の数字のリストや画面出力などの比較が得意ではありません。
そのため、自動化した方がヒューマンエラーを防止できるということです。

テスト自動化の利点⑥:より効果的、効率的にテストリソースを使用する

テスト自動化の目的にもありましたね。
夜間や週末に稼働していないPCで自動でテストすることができれば、その分浮いたリソースを手動テストやテスト設計に割り当てることができます。
つまり、優秀なテスト担当者がより重要なタスクに取り組める時間が増えるということで、これによって手動テストの質もあがる可能性があります。

テスト自動化の利点⑦:ソフトウェア品質に関するフィードバックの迅速化

おっ。。これはテスト自動化の利点①のCI/CDツールのところで話しましたね。。
上記の説明でもあったように、手動テストよりも早く開発の方にFBが来ます。それにより、テスト実行期間も短縮され、市場に提供するスピードも上がるでしょう。

テスト自動化の利点⑧:システム信頼性の向上

信頼性というふわふわした単語が来ましたね(笑)

・信頼性
コンポーネントやシステムが、指定された機能を指定された条件下で指定された期間実行する度合(ISTQB用語集)

簡単にいうと、自分たちの作ったシステムに自信がより持てるようになる捉えました。(違ってたらごめんなさい。)

なぜ、自信が持てるかというと以下の点があげられます。

・自動化によって、テスト実施回数の向上
・(自動化によって)、手動テストよりも広範囲でテストしている
・手動よりもテストを多くしているのに、不具合が出ない

ただし、質の良いテストに限ると思います。。

テスト自動化の利点⑨:テスト一貫性の向上

自動テストは手動テストと違い、決まったテスト内容決まったタイミング決まった環境で行うため、以下の効果があると言えます。

・エビデンスの一貫性の向上
・不具合の再現性が高い
・トレーサビリティが取りやすくなる

おわりに

今回はテスト自動化するとどんな良いことがあるかを見てきました。
これを見る限り、「テスト自動化しなきゃ!!」と思わる方が多いでしょう。

ただ、現実を見るとどうでしょうか。
テスト自動化カンファレンス2020が行ったアンケートによると、ほとんどの方が「システムテスト自動化はうまくいっていない」と回答されています。
なぜ、こんなに問題があるのでしょうか。

それはテスト自動化にもできないことや欠点があり、それを見落としているというのも1つではないでしょうか。

次回は、テスト自動化の欠点と制限を見ていきたいと思います。
では、今日はこの辺で。

参考資料

ISTQBテスト技術者資格制度 Advanced Level Specialist シラバス テスト自動化エンジニア 日本語版 Version 2016.J01

ISTQB用語集

システムテスト自動化標準ガイド

テスト自動化カンファレンス2020のアンケート

ソフトウェア品質知識体系ガイド(第3版): SQuBOK Guide V3

この記事が気に入ったらサポートをしてみませんか?