ソフトウェアの特徴
ソフトウェア開発による
テストの定義は「ある条件下においてソフトウェアの振る舞いを記録し、その結果が期待される結果となることを検証するプロセス」です。
1つ目のポイントは、テストに「ある条件下」という制約があることです。
これは「前提条件」や「事前条件」と呼ばれ、テストに使用するデータ、環境、事前の操作手順などが含まれます。
前提条件が異なれば検証する内容も異なるため、テストでは前提条件が明確になっていなければなりません。
2つ目のポイントは、何らかの方法で「ソフトウェアの振る舞いを記録する」ことです。
記録できなければ、期待される結果となることを検証できません。
たとえば、出力されるデータやデータベースなどが、どのような状態であるかを確認できなければなりません。
最後のポイントは、「期待される結果との検証」を行うことです。
つまりランダム性の高い振る舞いであればあるほど、テストは難しくなります。
ソフトウェア開発の大きな特徴として、プログラム上の問題や制約などが実際に作ってみなければわからないことが多いこと、そして一度作ったプログラムを破棄して作りなおすことが比較的に簡単であることが挙げられます。
このため、製造業や建築業で行われているような設計業務で徹底的に検証して品質を高める手法は、ソフトウェア開発ではあまり効果的ではありません。
ソフトウェア開発では、作りながら同時にテストを行ったり、実施したテストから得られたフィードバックからテストを追加したりする方法が有効です。
テストケースとテストスイート
ソフトウェアテストでは、1つのテスト項目をテストケースと呼びます。
テストケースには、テストの前提条件、実行する操作、期待される値や状態がすべて含まれます。つまり、「どのような条件でどのような操作をしたならば、こうなることが期待される」を記述したものがテストケースです。
通常、ソフトウェアテストは複数のテストケースで構成されています。テストケースの数が増えてくれば、何らかの形で似たテストケースをまとめる必要があります。このように、いくつかのテストケースをまとめたものをテストスイートと呼びます。
ソフトウェアテストの目的
ソフトウェアテストを行う主な目的は品質保証です。しかしながら、ソフトウェアテストには品質保証以外の目的もあります。
たとえば、機能テストは設計時に考慮した仕様が不足なく実装されているかを検証するテストであり、ソフトウェアの完成度(進捗度)を測る目的で行われます。
ユニットテストも、クラスなどが正しく設計され動作することを検証するテストですが、品質を高めるだけではなく、設計そのものが妥当であるかを検証する目的もあります。
ソフトウェアテストの限界
ソフトウェア開発では、「完璧なテスト」を行うことはできません。製造業や建築業でも同様ですが、ソフトウェア開発では、完全に不具合のないソフトウェアを作ることも「完璧なテスト」を行うこともできません。
ソフトウェアテストを行う場合は、効果的な入力値を選択し、「十分な良いテスト」を行うしかありません。
どの程度で「十分に良いテスト」とするかは、ユーザの要求や予算に依存します。
「完璧なテストは不可能である」という前提のもと、テストの方針に合意する必要があります。
最終更新:2016年01月21日 07:28