分析中的下一步是計算標準化檢驗統計量 z:
double z = (R - expectedRuns) / Math.Sqrt(variance);
z 統計量等于模式中的實際游程數減去模式中的預期游程數,然后再除以預期游程數的標準偏差(即方差的平方根)后所得到的值。解譯模式中的標準化游程數要比解譯實際游程數容易。解譯代碼很簡單,但在概念上稍微有些隱晦。它的開頭如下所示:
if (z < -2.580 || z > 2.580)
{
Console.Write("充分證明 (1%) 模式不是隨機生成的:");
Console.WriteLine(z < -2.580 ? "游程太少。" : 游程太多。");
}
我以百分之一的顯著性水平執行了一次所謂的雙側檢驗。如果標準化檢驗統計量的絕對值大于 2.580,則不嚴格地說,這意味著所分析模式由隨機過程生成的幾率不到百分之一。值 2.580 源自統計表。如果檢驗統計量為負值,則實際游程數小于預期游程數,反之亦然。在圖 2 中,我也在查找證明該模式不是隨機生成的不充分證據。請注意,您在任何時候都不能肯定地說給定模式是隨機生成的;您只能通過檢驗來了解是否存在統計證據來證明該模式不是隨機生成的。

返回頁首
混排項目列表
讓我們討論一下混排項目列表。如果您有一個測試用例輸入集合并且想以隨機順序將其全部輸送到所測試系統中,則混排項目列表很有用。您可以將混排列表看作是生成項目的隨機排列。這個異常棘手的問題曾是大量研究工作的主題。最佳的通用混排算法稱為 Fisher-Yates 算法。有時候也稱之為 Knuth 混排算法。這種算法極其簡單。假設有一個項目數組:
string[] animals = new string[] {
"ant", "bat", "cow", "dog", "elk", "fox" };
如果用 Fisher-Yates 算法的最常用形式來混排這列動物,將得到以下內容:
for (int i = 0; i < animals.Length; i++)
{
int r = objRan.Next(i, animals.Length);
文章來源于領測軟件測試網 http://www.kjueaiud.com/