????? 當輸入?yún)?shù)是兩個時,用例是多少個?從上一篇文章的結論,應該是13*13,即169個。但在真正的測試用例編寫中,我們會使用如此多的用例去驗證嗎?答案肯定是否定的。從時間成本和人力資源成本上來說,這也是不現(xiàn)實的。在測試兩個輸入?yún)?shù)的場景里,兩個參數(shù)都會有相應的參數(shù)限制,如參數(shù)類型限制和長度限制。在做測試用例設計時,可以使用等價類法。
?????? 舉個最簡單的網(wǎng)站登錄的例子,假定登陸的參數(shù)只有兩個,用戶名和密碼,在輸入正確的用戶名和密碼后,登陸成功;輸入錯誤的用戶名或者密碼后,登陸失敗。這里在不考慮各種瀏覽器登錄、多個終端登錄等場景的情況下,只考慮這兩個參數(shù)輸入,來設計相應的用例。
?????? 等價類法:
?????? 1 輸入正確的用戶名和密碼,登陸成功
?????? 2 輸入錯誤的用戶名和密碼,登陸失敗
?????? 這兩類里,對于第一類,只要考慮一組數(shù)據(jù),即選一個存在的用戶名和密碼;
?????? 對于第二類,考慮情況有:
?????? 1)輸入存在的用戶名,密碼是空
?????? 2)輸入存在的用戶名,密碼是空格
?????? 3)輸入存在的用戶名,密碼錯誤
?????? 4)輸入不存在的用戶名,密碼是空
?????? 5)輸入不存在的用戶名,密碼是空格
?????? 6)輸入不存在的用戶名,密碼非空格或空
?????? 7)輸入用戶名是空,密碼是空
?????? 8)輸入用戶名是空,密碼是空格
?????? 9)輸入用戶名是空格,密碼非空格或空
????? 以上9種場景,即9組數(shù)據(jù),不存在可以覆蓋多個場景的數(shù)據(jù)。最后7和8兩個場景,可以取一個場景作為測試點,另一個可以忽略。因為一般代碼路徑是先檢查兩個輸入框是否都已輸入值,這個檢查順序一般是先檢查第一個,再檢查第二個。所以如果用戶名是空,不論密碼是否輸入,均會報請輸入用戶名。
????? 以上10個情況,僅僅只針對輸入框在功能設定情況下的用例。因為這篇的主題是針對兩個輸入框,如何設計測試用例。所以對于登陸功能用例設計并沒有展開。當然登陸功能的用例設計不僅僅是以上10種,還需要考慮不同終端登錄,不同瀏覽器登錄,關掉瀏覽器再打開,退出再登陸等等功能用例,以及sql注入、登陸請求消息被截取串改等安全測試用例,當然還會包括登陸并發(fā)的性能測試用例。在這篇不做展開描述。
?????? 那么通過這個例子,當有兩個輸入框時,用例如何設計?首先明確兩個輸入框的數(shù)據(jù)類型和長度,再明確兩個輸入框之間是否有關聯(lián),再明確代碼路徑是怎樣(看懂代碼對測試很有幫助)。最后選擇等價類法設計測試用例,如果有邊界值的情況,則還要選擇邊界值法。如果有功能邏輯,則還要使用因果圖法。這些測試用例設計方法都是用例設計的理論基礎。需要訓練自己有意識地使用這些方法。實踐久了,邏輯思維能力和思考能力會不斷提高。