回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,10 +1,10 @@
### 11.2.1. 隨機測試
### 11.2.1. 随机测试
表格驅動的測試便於構造基精心挑選的測試數據的測試用例。另一種測試思路是隨機測試,也就是通過構造更泛的隨機輸入來測試探索函的行
表格驱动的测试便于构造基精心挑选的测试数据的测试用例。另一种测试思路是随机测试,也就是通过构造更广泛的随机输入来测试探索函的行
麽對於一個隨機的輸入,我如何能知道希望的輸出結果呢?里有兩種處理策略。第一個是編寫另一個對照函,使用簡單和清晰的算法,然效率低但是行和要測試的函是一致的,然後針對相同的隨機輸入檢査兩者的輸出結果。第二是生成的隨機輸入的數據遵循特定的模式,這樣我們就可以知道期望的出的模式。
么对于一个随机的输入,我如何能知道希望的输出结果呢?里有两种处理策略。第一个是编写另一个对照函,使用简单和清晰的算法,然效率低但是行和要测试的函是一致的,然后针对相同的随机输入检查两者的输出结果。第二是生成的随机输入的数据遵循特定的模式,这样我们就可以知道期望的出的模式。
下面的例子使用的是第二方法randomPalindrome函數用於隨機生成文字符串。
下面的例子使用的是第二方法randomPalindrome函数用于随机生成文字符串。
```Go
import "math/rand"
@@ -37,13 +37,13 @@ func TestRandomPalindromes(t *testing.T) {
}
```
雖然隨機測試會有不定因素,但是它也是至重要的,我可以從失敗測試的日誌獲取足的信息。在我的例子中,入IsPalindrome的p參數將告訴我們眞實的數據,但是對於函數將接受更複雜的輸入,不需要保存所有的入,要日誌中簡單地記録隨機數種子卽可(像上面的方式)。有了這些隨機數初始化子,我可以很容易脩改測試代碼以重現失敗的隨機測試
虽然随机测试会有不定因素,但是它也是至重要的,我可以从失败测试的日志获取足的信息。在我的例子中,入IsPalindrome的p参数将告诉我们真实的数据,但是对于函数将接受更复杂的输入,不需要保存所有的入,要日志中简单地记录随机数种子即可(像上面的方式)。有了这些随机数初始化子,我可以很容易修改测试代码以重现失败的随机测试
使用當前時間作爲隨機種子,在整個過程中的每次運行測試命令時都將探索新的隨機數據。如果你使用的是定期行的自動化測試集成繫統,隨機測試將特别有值。
使用当前时间作为随机种子,在整个过程中的每次运行测试命令时都将探索新的随机数据。如果你使用的是定期行的自动化测试集成系统,随机测试将特别有值。
**練習 11.3:** TestRandomPalindromes測試函數隻測試了迴文字符串。編寫新的隨機測試生成器,用於測試隨機生成的非文字符串。
**练习 11.3:** TestRandomPalindromes测试函数只测试了回文字符串。编写新的随机测试生成器,用于测试随机生成的非文字符串。
**練習 11.4:** 改randomPalindrome函以探索IsPalindrome是否對標點和空格做了正確處理。
**练习 11.4:** 改randomPalindrome函以探索IsPalindrome是否对标点和空格做了正确处理。