我之前寫過關於如何使用覆蓋數組創建的文章由JMP來測試JMP本身 。最近一個來自同事的例子文君寶和約瑟夫摩根非常有趣,我想與其他人分享。
測試特定平台 JMP基因組學 ,有14種不同的因素可以變化,從14個級別到2個級別。是什麼讓這個案例與測試軟件首選項示例不同我之前討論過對於三個因素(交互式分層聚類選項,自動分層聚類選項,最小重組分組選項),只能為任何給定的測試運行設置一個因子。出現這種限制是因為以下無線電控制的行為:

在這個例子中,我們有一個Linkage Grouping Method的因子,它有三個可能的級別。每種分組方法都具有與之相關的上述因素之一。從本質上講,這三個相關因素分為三個獨立的案例來考慮。如果我們想要一個強度2覆蓋陣列,我們難道不能為每種可能性創建一個強度2覆蓋陣列嗎?這將確保在我們的測試中出現每個可能的(允許的)對。
我們可以,但......
具有最多級別的兩個因素分別具有14和9個級別。如果我們沒有任何限制,最小可能的強度2覆蓋陣列有126 = 14 * 9運行(並且覆蓋陣列平台可以找到這樣的設計)。但是,如果我們創建3個單獨的覆蓋陣列,這意味著每個將運行126次,總計378 = 126 * 3次運行。強度2覆蓋陣列確保每個可能的對至少出現一次,但是通過將其分成三個覆蓋陣列,我們最終獲得的覆蓋範圍超出了我們的需要。通過組合三個覆蓋陣列,不涉及受限因子的每對實際上至少發生三次。
如果設計缺少基於其他設置不能發生的因素的值,那將是一件好事。
真?缺少價值觀?
當你從傳統中想到它時 DOE 立場,創造一個缺少價值的設計聽起來很傻。但是對於覆蓋數組,我們正在考慮各種因素的組合,這是完全合理的:如果一個因子連續缺失值,則意味著它與該特定測試無關。這也意味著如果我們發現該測試失敗,我們就會知道缺失因素與原因無關。幸運的是,我們的分析工具也識別缺失值。
好的,那麼我該如何創建這個設計呢?
考慮三種分組方法之一,自動分層聚類。當它出現時,另一個因素,即自動分層聚類選項,可以採用三個不同的級別,而缺少交互式層次聚類選項和最小重組分組選項的因素。我們可以使用方便不允許組合過濾器 ,當鏈接分組方法是自動分層聚類時,禁止交互式分層聚類選項的所有值,使用OR連接並使用自動分層聚類和最小重組分組選項執行相同操作。

然後,我們可以對其他兩個分組方法執行類似的過程,將這些方法與數據過濾器的OR語句相關聯。所以我們現在應該準備好創造設計......
還沒有
我們忽略了一個很容易被忽視的不允許的組合中的一件事 - 設計師仍然會嘗試將這些限制因素的對顯示在行中,並且缺少分組方法,這對我們的設計沒有任何意義。因此,我們必須禁止發生這些列之間的所有可能組合。例如,如果我們從過濾器中選擇交互式分層聚類選項和自動分層聚類選項,我們就會得到(使用從頂部裁剪的早期不允許的組合):

在我們完成這些組合和之前提到的不允許的組合之後,通過在過濾器中使用OR進行連接,我們可以創建設計。
該設計
Covering Array平台為我們找到了一個140次運行的設計(稍微多了一點,但實際上這是最小的運行大小),只有一個交互式分層聚類選項,自動分層聚類選項,最小重組分組為每行設置的選項和其他兩行缺失。我把數據表放在了 JMP用戶社區中的文件交換 ,在那裡你可以看到最終的結果,並看看結果不允許的組合是什麼樣的。
最後的想法
雖然需要一些額外的工作來建立不允許的組合,但測試數量(378對140)的節省是巨大的。在不允許的組合過濾器的幫助下,一旦確定了應該禁止的內容,即使有許多不同的組合,也很容易輸入它們。
敏銳的讀者可能已經註意到我可以將三個變量中的所有可能值折疊成一個具有10個級別的因子(這就是我知道140 = 14 * 10次運行的下限)。雖然以這種方式構建設計當然是可能的,但很容易丟失關於該變量試圖描述的內容的上下文。
使用覆蓋數組時,您是否遇到過類似的問題?如果有興趣,我們可以看到添加功能,以便在某些因素無法一起測試時輕鬆生成專門的不允許組合。謝謝閱讀!