目的:為了提高軟件測試的有效性,可以對源程序做一些小的修改,以更快、更有效地獲取充分地測試信息。
兩類主要的程序修改方法:
·程序插樁:為了獲得程序執行過程中的內部信息,並可以進行相關檢查;
·程序變異:度量測試用例的缺陷檢測能力,強制出現特定條件以便執行測試和程序調優。
4.1 程序插樁
4.1.1 程序插樁概述
·向源程序添加一些額外的語句來檢測程序狀態的變化情況;
·可在測試過程中加入輸出語句和斷言語句,用來判斷變量的取值或者程序的狀態是否符合預期;
·插樁前考慮的問題:
①需要獲取的信息是什么;
②程序插樁的位置在哪里;
③程序插樁的數目是多少;
④插樁語句的類型是什么。
4.1.2 程序插樁示例
4.1.3 程序插樁工具
4.2 變異測試
4.2.1 變異測試概述
·一種對測試數據集的有效性、充分性進行評估的技術,能為研發人員開展需求設計、單元測試、集成測試提供有效的幫助;
4.2.2 變異測試方法
·程序變異:基於預先定義的變異操作對程序進行修改,進而得到源程序變異程序(變異體)的過程;
·程序變異須在變異算子的指導下完成;
·在產生變異體后,分別在源程序和變異體上運行測試用例:
·二者的結果相同,表示該變異體是存活的(Alive);
·二者的結果不同,表示該變異體是被殺死的(Killed) ;
·等價變異體:在語義上和原程序保持一致,無法被殺死的變異體。
·變異得分:評價測試用例集錯誤檢測有效性的度量指標
·SCORE(mutation) = NUM(killed) / (NUM(total) - NUM(equivalent));
·NUM(killed) 表示被殺死的變異程序的數目;
·NUM(total) 表示所有變異程序的數目;
·NUM(equivalent) 表示等價變異程序的數目;
·SCORE(mutation) 表示變異得分,介於0和1之間,數值越高表明被殺死的變異程序越多。
4.2.3 變異測試工具