個人で細々と書いていたブログ記事をQiitaに移行しております。
もしかしたら、既に読んだことがある人がいるかも知れないですね
ここに書くのはあくまでも私自身の解釈であり、所属する組織などとは一切関係ございません。
*むしろ違っていたりしたら教えてほしいです。
詳しくは、テスト自動化研究会の記載されているページでご確認ください。
テスト自動化の8原則 - テスト自動化研究会
テスト自動化の8原則
#1. 手動テストはなくならない
自動化が優れていても、人間でしか出来ないテストはもちろんある。
例えば、ユーザビリティテスト。
自動テストで不具合が見つからなくても、使い勝手とかは人間でないと判断できない。
#2. 手動でおこなって効果のないテストを自動化しても無駄である
これは書いてある通りではないでしょうか。
意味のない手動テストを自動化しても、自動化するのにお金と時間がかかるだけで、
なんの効果もないでしょうし。
#3. 自動テストは書いたことしかテストしない
書いてある通りで自動テストは人間とは違い、書いてある通りの動きしかしない。
これが人間であれば、「ログイン画面でIDとPASSを入れてログインできること」とあれば、5人いれば5通りのことをするかもしれない。
だけど、自動テストでid:User PASS:Passwordと書けば、この通りにしか動かない。
(まぁ人間だと、たまにとんでもないことをやらかすこともあるけどねぇ。。)
#4. テスト自動化の効用はコスト削減だけではない
何度も同じテストを実行する場合、コスト削減はもちろんできる。
例えば、既存システムに新機能を導入したいと言った場合、既存のテストは自動化。
新たに実装した箇所は手動+新しい自動化テスト。
こうすれば新たにバグが発生したときに、実装済みの自動テストを流せば、
同じ結果を返してくれるのでバグの修正にかかる日数や工数などが削減できる...はず
#5. 自動テストシステムの開発は継続的におこなうものである
テストを自動化したから終わり!手動はやらないから人間は全員解雇!
なんてことには絶対にならない
自動化することで、新しい仕事が生まれる。
機能の追加・削除、新しいテストケースの追加、実行結果の確認などなど
せっかく自動にしても、メンテしてないとかだと意味ない気がします。
「殺虫剤のパラドックス」と同じで自動でやるところの質は上がるかもしれませんが、それ以外がおざなりになってしまいますし。
なにより、そのうちせっかく作った自動テストを使わなくなる未来が見えます。
#6. 自動化検討はプロジェクト初期から
これは本当にそう思います。。
すでに手動でずっとやっているプロジェクトだと、既存のものに対して自動化するのって大変なんですよ。。
最初から自動化を前提として設計していればもっと楽になるのに。
#7. 自動テストで新種のバグが見つかることは稀である
これは「3. 自動テストは書いたことしかテストしない」にも関わっていると思います。
既存の今まで動いていたシステムに対して、自動テストを流すことで、その機能がコピペミスで動かないとかは結構早く見つけ出すことは可能だと思います。
でも、多くの現場だと手動テストを自動化すると思うので、そうなると新種のバグが見つかる可能性は低くなるかと思います。
#8. テスト結果分析という新たなタスクが生まれる
5のところでも書きましたが、自動テストを使うと、新しくテスト結果分析という仕事が生まれます。
自動テストを流した結果を人間が確認し、Passしているかを確認する。
Failedだとなぜ失敗したのかを調べます。
それが単純にシステムが落ちていたのか、バグなのか、それとも自動テスト自身に問題があるのか。これらの結果を分析しする必要が生まれます。
これが数件程度ならいいんですけどね....
*結果はFailedだけど「それはFailedになることが正しいから、FailedだけどPassだよ!」 っていうものもあったり。。。
**ソフトウェアテストの7原則と同じで、テストに関わる人なら知っていないとダメな原則だと個人的に思っています。 **