這可能是你最漂亮的幼稚的問題,但我被它那種混淆。如何設計測試用例
當我們必須爲某個程序設計一個測試用例時,我們如何知道預期值/結果是什麼。該程序可能會做一些複雜的計算,並使用複雜的算法來計算其最終輸出,這可能無法通過其他方式進行計算。即使我們要用其他方法計算相同的輸入,然後用該平均值的輸出值作爲期望值來測試我們的原始程序,那麼我們如何確定從不同的程序/意思是正確的,要確保該程序也必須經過測試,所以我們又回到了原點。
這可能是你最漂亮的幼稚的問題,但我被它那種混淆。如何設計測試用例
當我們必須爲某個程序設計一個測試用例時,我們如何知道預期值/結果是什麼。該程序可能會做一些複雜的計算,並使用複雜的算法來計算其最終輸出,這可能無法通過其他方式進行計算。即使我們要用其他方法計算相同的輸入,然後用該平均值的輸出值作爲期望值來測試我們的原始程序,那麼我們如何確定從不同的程序/意思是正確的,要確保該程序也必須經過測試,所以我們又回到了原點。
你的問題並沒有真正意義。
測試是治療系統被測作爲黑盒子的活性。什麼你問的系統(在您的情況:計算)基本上是這樣的:好吧,當我喂的方法使用這些值,那麼我希望它返回該值。
目前根本不是提前知道什麼應該是一個操作的結果沒有別的辦法。在某些情況下,這可能是很多工作,但其他一切都會在邏輯上不一致,並且它只會測試測試作者知道如何使用測試框架的事實...
如果一個計算過於複雜而無法用計算器在紙上計算出來,那麼您將如何編程呢?即使計算必須以小步驟完成,您可以在紙上編寫幾個不同的測試用例,並在程序中測試該計算步驟,並通過它完成工作。一臺電腦只能做一個人告訴它做的事情。
您的問題得到的最困難軟件測試中的問題,被稱爲「oracle」問題。
爲了支持測試,我們希望有任何測試輸入預期結果的可靠來源。在大多數測試場景中,這基本上意味着我們具有相當於待測系統的完美無缺陷實現。當然,如果我們有這樣的話,我們也許可以跳過開發SUT及其測試。
但是通常情況並非如此。因此,爲測試用例產生預期結果有很多實用的(和一些奇特的)策略。這可以像使用電子表格計算功能,挑選一些查詢有知道結果,或在測試現有同等或類似系統的輸出比較系統的輸出一樣簡單。
我的書的第18章,測試面向對象的系統,對於預言,其中大部分可實現自動化提供了16個測試的設計模式。
本頁面給出了該書的摘要和鏈接到Amazon http://www.robertvbinder.com/home/thought-leadership/books/
鮑勃
我沒有完全聽懂你,如果一個程序實現的算法,該怎麼辦我們的測試案例驗證了該方案已實施該算法是否正確?這可能看起來是一個非常基本的問題,但我是測試新手。 – comatose
比如我目前的工作是類似揹包問題,現在如果我想要寫一個測試用例這個程序,我已經實現了,我該如何繼續的問題嗎?我可以寫一些小的輸入(我可以用鉛筆/紙來解決)的情況,但是如果我想檢查程序中的大量輸入,我無法用手解決,那我該如何檢查? – comatose
@Bilal你*可以*手工解決它,它只需要一段時間。但你還有什麼要做呢?當你這樣做,並且你正在編寫測試用例時,你需要按照你的程序執行相同的步驟,併爲所有賦值語句寫入新值,並確保它們符合你的期望。 –