南京大学<ソフトウェアテスト>ノート
7206 ワード
ソフトウェアテスト
目的
コードを記述する全過程にテストの検出プロセスを追加することで、設計ミス、誤記、プログラムに現れるミスを減らすことができます.
基本概念
PIEモデル
エラー分類
ホワイトボックスのテスト方法
ホワイトボックステストを通じて、開発エンジニアがコードを設計してコードを書いた後、コードが間違っていないことを自分で証明することができることを望んでいます.数学の問題を計算した後の検査方法のようです.
図オーバーライド
どのコードも図で表すことができます.テストの時、図の各部分を走って、正しい結果が得られるかどうかを見る方法が図カバーです.
せいぎょりゅうせいせい
プログラムの制御フローは、作業文、if、while/for、switchから構成されます.コードロジックのフローチャートにも相当します.
構造オーバーライド
ノードオーバーライド/エッジオーバーライド、制御フローオーバーライドの一部
プライマリパスオーバーライド
単純パス:各ノードはパスに1回しか表示されません.
≪プライマリ・パス|Primary Path|emdw≫:最も長い単純なパスで、単純なパスのサブセットではありません.
テスト・インスタンスを生成し、すべてのプライマリ・パスを上書きします.プライマリ・パスのオーバーライドにより、オーバーライドの作業量を削減
基本パスオーバーライド
≪独立パス|Independent Path|oem_src≫:他のパスに含まれないノードまたはエッジを含むパス
リニア独立パス個数:CC=E-V+2(ループ複雑度)
基本パスのテスト手順:
データストリームオーバーライド
プログラム制御フローでのポイント操作の正確性.変数アクションは次のとおりです.
データストリームオーバーライドガイドライン
ロジックテスト
へんいしけん
通常のプログラムにFaultを注入した後、テスト例がFaultを検出したかどうかを観察します.テスト・インスタンス・セットの十分性を評価するために使用します.
変異テストの仮定:
重要な変異タイプ:
を選択します.
説明
コレクションの説明
数量
ABS
絶対値
{(e,abs(e)),(e,−abs(e))}
2
AOR
えんざんし
{(x,y)∣x,y∈{+,−,∗,/,%}∧x≠y}
20
LCR
ろんりコネクタ
{(x,y)∣x,y∈{&&,∥}∧x≠y}
2
ROR
関係演算子
{(x,y)∣x,y∈{>,≥,<,≤,=,≠}∧x≠y}
30
UOI
単項演算子
{(v,−−v)(v,v−−),(v,++v),(v,v++)}
4
等価変異:2つの文法が異なるプログラムで、意味が完全に一致しています.コードは異なりますが、生成された出力マッピングは完全に一致します.
// example 1
for(int i = 0; i != 5; i++){
nop();
}
// example 2
for(int i = 0; i < 5; i++){
nop();
}
障害仮定テスト
テスト・インスタンス・セットの能力を評価します.変異テストは故障仮定テストの一部です
故障タイプ:E=(a|b)&c
試験条件:異或
ブラックボックスのテスト方法
開発エンジニアがブラックボックスのテスト例を自分で作成することで、論理的な思考の厳格性を高めることを望んでいます.最初にテストを作成し、エンジニアがコードの論理をよりよく理解できるようにします.
ランダムテスト
試験例をランダムに選択する試験
等価クラス区分
入力ドメインを一定の基準に従っていくつかのサブセットに分割し、サブセットでテスト例をランダムに選択します.
区分の原則:
境界値解析
異なる等価クラス間の境界を追加
境界値関連コード
min < min+ < norm < max- < max
けっていひょう
プログラム入力と出力の関係を反映するテーブル.入力と出力の関係を検出するために用いる.
手順:
例:Stringから浮動小数点数を抽出する
"Duration: 1000.0000
"
"Loation: 50.0000"
−符号1000の整数.小数点0000
マイナス記号
せいすうぶ
小数点
しょうすうぶ
合法性
T
F
F
F
F
T
F
F
T
T
T
F
T
F
F
T
F
T
T
T
T
T
F
F
T
T
T
F
T
T
T
T
T
F
T
F
T
T
T
T
JAvaコード
public static float peekFloat(String content) {
if (content == null || content.length() == 0){
return 0;
}
Pattern p = Pattern.compile("-?(\\d+\\.?\\d*|\\.\\d+)");
Matcher m = p.matcher(content);
if (m.find()) {
return Float.valueOf(m.group(0));
} else {
return 0;
}
}
コンビネーションテスト
異なる変数の値の組合せを考慮する
方法:
デフォルト
変数のデフォルト値を入力してテストし、ほとんどのユーザーの構成が正しく動作することを保証します.
入力変数のマージ
コンストレイントされた変数を一緒に考慮
テストの進捗
テストケースの概略
テスト予言
フェイルオーバ
機能テスト
たんさくしけん
パフォーマンステスト
テスト方法の自動化
自動化されたテストツールを使用して、テストの人件費を削減したい.一方,ソフトウェアに存在する問題をテストツールの観点から観察した.