こんにちは。テスト担当のまつです。
最近のマイブームは、インクを高架下にイカに効率よくぶちまけられるかを検証することです。
早速ですが、テストのお話をしたいと思います。
テストをする理由
システム開発というと、「とにかく良いコードを!」とか「設計がすべて」みたいに思われがちですが、実はテストも同様に重要な工程です。なんせ、おなじみのV字モデル、右半分はすべてテスト工程でできてるくらいですから。
つまり、コーディングしたものに対して、すべての設計工程に対応するテストをするってことです。
徹底してますね。テスト大事ですね。
設計もコーディングもちゃんとやってるのに、テストする必要があるの?と思うかもしれませんが、テストをする理由はいくつかあります。
システムには必ずバグが存在する
まずは、システムには必ずバグが存在するからです。一応言っておきますが、プログラマーはアホでマヌケばかりだーなんて思ってませんよ。
バグっていうのは、気付かないうちに沸いて出てきたりするもんなんです。悲しいことに。
品質を示す唯一の方法
また、テストをする事で「このシステムはこれだけ動きました」とお客様に対して、品質を示すことができる唯一の方法だからです。「すごく頑張って作ったから大丈夫です!」って言われるより、「こんな動作確認しました!」って言われた方が安心できますよね。このように、テストは品質を示すためにも欠かせない工程なんです。
だったらもう、テストは全部やるしかないよね!と言いたいところですが、残念ながらそうはいきません。
なぜなら、「完璧なテストをするのは不可能」だからです。
最近のシステム開発は、規模も大きく複雑化している上に、スピードも求められる時代になりました。テストケースは増える一方で、テストに割り当てられる時間は減らさざるを得ない。そんな中で、全部、100%、完璧に、何一つ漏れがなく、ありとあらゆるテストをやろうなどと考える方がおかしいわけです。
より良いテストを目指して
「完璧にテストできないのでバグが残るのはしょうがないよね?」などと開き直るわけにもいきません。完璧なテストをすることはできなくても、テストは必須です。
じゃあ、どのようにどこまでテストするか?そこでテストの知識が必要になります。
テストの知識
実はそもそも、全部のテストをする必要はないんです。テストしても効果があまり得られないものを、めいっぱいコストをかける必要はないですし、そのコストの分だけ、別のところに力を入れた方が有意義です。
そして、そのテストの取捨選択をする為に、テストの専門的知識が必要になるわけです。
テストの効率化
また、テストの効率化を考える必要も出てきます。と言っても、テストコードさえ書けばいい、テストツールさえ使えば良い、というものでもありません。
テストの目的に沿って、適切に利用しなければ効果がないどころか、逆に無駄になることもあり得ます。
まとめ
システムに求められる品質に基づいて、無駄なテストを取り除き、意味のあるテストをすべきです。それらが正しく機能した時に初めて、「最適なテストができた」と言えるでしょう。
これからテスト担当者は、そのような知識を身につけるべきです。しかし困ったことに、テストの知識は幅が広いです。全ての開発工程に対してテスト工程があるのだから、当然といえば当然ですね。
ただ、ここ十数年ほどでソフトウェアテストについての本が増え、アジャイル開発の登場などに伴ってテストの手法も進化しています。便利なテストツールも増えてきてます。最近では、QAエンジニアという、もっとユーザー視線で品質保証を考えるエンジニア職も注目されています。
テストが変わりつつあります。無駄なテストをやり過ぎない為にも、テストの勉強をしてみてはイカが?
それでは、ステキなテストライフを。