健全性測試

健全性測試合理性檢驗是一種快速評估某說法或計算結果是否可能正確的基本測試。合理性檢驗的目的是排除某些明顯錯誤的結果,而不是捕捉每一個可能的錯誤。可以使用經驗法則或粗略計算以執行測試。

例如,在算術中,當乘以9時,使用9的除數規則來驗證結果的數字總和是否可被9整除是一個合理性檢驗——它不會捕獲每個乘法誤差,但它是一個快速而簡單的發現許多可能錯誤的方法。

計算機科學中,健全性測試是計算機程序、系統、計算或其他分析的功能的非常簡短的貫穿,以確保系統或方法的一部分大致按預期工作。 這通常是在更詳盡的一輪測試之前。

數學

理智測試可以參考各種數量級和其他簡單經驗法則的設備,用於交叉檢查數學計算。例如:

  • 如果一個人試圖計算738的平方並得出54,464,一種快速的合理性檢驗可以檢查結果是否正確。 考慮700 < 738,但700² = 490,000 > 54,464。 由於對不等式兩邊的正整數平方不改變不等式的符號,所以結果不可能正確。 正確答案是738² = 544,644,比54,464大10倍以上。
  • 在乘法中,918×155不是142,135,因為918能被3整除,但142,135不能(各位數字相加為16,不是3的倍數)。另外,乘積的最後一位必須與兩因子最後一位的乘積(8×5=40)結尾相同,但142,135不以「40」的結尾「0」結束,而正確的答案是:918×155 = 142,290。一種更快的檢驗是偶數和奇數的乘積是偶數,而142,135是奇數。

物理

  • 汽車的輸出功率不可能是700千焦 ,因為這是能量的單位,而不是功率(單位時間的能量)的單位。 這是量綱分析的基本應用。
  • 在確定物理性質時,與已知或類似物質相比,往往可以洞察到結果是否合理。 例如,大多數金屬能沉在水中,所以大多數金屬的密度應該比的密度(1000 kg/m3)更大。
  • 使用費米估計通常能更好地估計預期值的數量級

軟件開發

在軟件開發中,健全性測試(軟件測試的一種形式,提供「快速、廣泛、和淺層的測試」[1])確定它是否可能及合理開展進一步的測試。

有時候健全性測試與冒煙測試是同義詞。[2]健全性測試或冒煙測試確定繼續測試是否可行和合理 。健全性測試執行確定系統是否可訪問且應用程序邏輯是否響應所需的應用程序功能的子集。 如果健全性測試失敗,則嘗試更嚴格的測試是不合理的。 通過快速確定應用程序是否存在缺陷而無需進行任何嚴格測試,可以避免浪費時間和精力。許多公司在自動構建中運行健全性測試,作為其軟件開發生命周期的一部分。[3]

可以使用健全性測試來輔助調試軟件。 考慮一下,應用程序或軟件通常涉及系統外部輸入和輸出之間的多個子系統。 當整個系統未按預期執行時,可以使用健全性測試來幫助決定接下來要調查的內容。 如果一個子系統未給出預期結果,則可能會從進一步調查中消除其他子系統。

「Hello World」程序通常用作開發環境的健全性測試。 如果程序無法編譯或執行,則支持環境可能存在配置問題。 如果它有效,任何被診斷的問題可能都在於實際的應用程序。

健全性測試的另一種可能更常見的用法是表示在程序代碼中執行的檢查,通常是對函數的參數或從中返回,以查看答案是否可以被認為是正確的。 例程越複雜,檢查其響應就越重要。 這個簡單的案例是檢查打開,寫入或關閉的文件是否在這些活動中沒有失敗——這是一個經常被程序員忽略的健全性測試。[4]但是,由於各種原因,更複雜的項目也可以進行健全性測試。

這方面的例子包括銀行賬戶管理系統,它檢查提款是否合理,不要求超過賬戶包含,並且存款或購買是合理的,以適應歷史數據建立的模式——對於準確性,可以更仔細地檢查大額存款,可以與持卡人一起檢查大額購買交易以防止欺詐,在持卡人訪問之前的外國地點的ATM取款可能會與他一起清理等等;這些是「運行時」的健全性測試,而不是上面提到的「開發」健全性測試。

參見

參考文獻

  1. ^ Fecko, Mariusz A.; Lott, Christopher M. Lessons learned from automating tests for an operations support system (PDF). Software--Practice and Experience. October 2002, v. 32 [2019-06-24]. (原始內容存檔 (PDF)於2003-07-17). 
  2. ^ ISTQB® Glossary for the International Software Testing Qualification Board® software testing qualification scheme, ISTQB Glossary頁面存檔備份,存於網際網路檔案館) International Software Testing Qualification Board.
  3. ^ Hassan, A. E. and Zhang, K. 2006. Using Decision Trees to Predict the Certification Result of a Build. In Proceedings of the 21st IEEE/ACM international Conference on Automated Software Engineering (September 18 – 22, 2006). Automated Software Engineering. IEEE Computer Society, Washington, DC, 189–198.
  4. ^ Darwin, Ian F. Dealing with lint's concerns. Checking C Programs with Lint. "O'Reilly Media, Inc.". 1988 [2019-06-24]. ISBN 9780937175309. (原始內容存檔於2017-02-28) (英語).