摘 要 軟件測試是發現軟件缺陷和提高軟件質量的重要手段。在系統功能測試過程中,面對海量的輸入輸出數據組合,等價類劃分和邊界值分析是行之有效的測試用例設計方案。本文以BMI問題為例,闡述了兩者結合的測試方案,該方案可提高測試的效率及有效性。
關鍵詞 軟件測試;等價類劃分;邊界值分析
前言
軟件測試是軟件開發過程中的重要組成環節,是發現軟件缺陷和提高軟件質量的重要舉措,其本質為通過建立輸入與輸出之間的映射關系驗證系統功能是否滿足用戶需求[1]。而現實情況是,即使是一個非常簡單的應用程序,其輸入輸出組合也過于龐大,因此窮舉測試是在有限的時間和成本條件下無法完成的任務。反之隨意挑選數據,雖然可以保證測試效率,但會帶來遺漏缺陷的風險,同樣不具備可行性。
為了解決上述問題,可借鑒生物學領域中的分類思想,分析海量數據存在的共性,做到“合理分類,精心挑選”,最大限度地減少測試用例的絕對數量,提高測試的效率,并且確保測試的有效性。
1測試需求描述
身體質量指數BMI問題的測試需求描述如下:
身高以米作為單位,必須是在1.0到2.2之間的數字。若該項不符合要求,提示“身高無效”;
體重以千克作為單位,必須是在30到150之間的數字。若該項不符合要求,提示“體重無效”;
若身高和體重均符合要求,系統計算BMI值,計算公式為BMI=體重/身高2。當BMI≤18.4時,提示“身材偏瘦”;當18.5≤BMI≤23.9時,提示“身材正常”;當24.0≤BMI≤27.9時,提示“身材過重”;當BMI≥28.0時,提示“身材肥胖”。
2劃分等價類
(1)輸入域分析。根據測試需求描述,對于每個輸入條件,基于等價類的劃分原則,確定有效等價類和無效等價類。
身高為取值范圍,符合“區間”的劃分原則,可為其確立一個在范圍內的有效等價類H1={1.0≤身高≤2.2},兩個超出范圍的無效等價類H2={身高<1.0}和H3={身高>2.2}。
身高必須為數字,符合“限制條件”的劃分原則,可為其確立一個符合規則的有效等價類H4={身高為純數字}和一個違反規則的無效等價類H5={身高包含非數字}。
體重為取值范圍,符合“區間”的劃分原則,可為其確立一個在范圍內的有效等價類W1={30≤體重≤150},兩個超出范圍的無效等價類W2={體重<30}和W3={體重>150}。
體重必須為數字,符合“限制條件”的劃分原則,可為其確立一個符合規則的有效等價類W4={體重為純數字}和一個違反規則的無效等價類W5={體重包含非數字}。
(2)輸出域分析。根據測試需求描述,對輸出條件進行分析。當身高或體重無效時,輸出條件不為海量數據,無須劃分等價類。當身高和體重均有效時,輸出條件BMI被劃分為互不相交的4個取值范圍,符合“區間”的劃分原則,可為其中的每種情況確立在范圍內的有效等價類B1={BMI≤18.4}、B2={18.5≤BMI≤23.9}、B3={24.0≤BMI≤27.9}和B4={BMI≥28.0}。
以上為滿足要求的最小等價類集合,在實際測試分析和設計過程中,為了提高缺陷發現的有效性,允許出現適度冗余。
基于軟件測試的經濟學原則,建議在保證覆蓋全面的基礎上,設計等價類越少越好,只需滿足互斥及完備的特性即可。分析上述等價類集合,發現所有等價類互不相交,滿足互斥的特性;所有等價類的并是整個集合,沒有出現遺漏,滿足完備的特性。因此等價類劃分符合設計要求。
3設計測試用例[2]
(1)有效等價類的覆蓋。根據設計原則,需通過盡可能少的測試用例來覆蓋所有的有效等價類,用于驗證系統功能的正確性。對于輸入域,由于所有有效等價類涉及的輸入條件均相互獨立,不存在任何沖突,則只需設計一個測試用例即可。對于輸出域,由于所有等價類涉及相同輸出條件的不同取值,則需設計4個測試用例完成覆蓋。比如{身高=1.5,體重=50}可實現對所有輸入等價類及輸出等價類B2的覆蓋。
(2)無效等價類的覆蓋。根據設計原則,一個測試用例僅覆蓋一個無效等價類,其他輸入條件確保有效,用于驗證系統功能的健壯性。對于輸入域中相互獨立的無效等價類,至少需要設計6個測試用例完成覆蓋。比如{身高=0.9,體重=50}可實現對涉及身高取值范圍的無效等價類H2的覆蓋,與此同時,確保身高的字符類型和體重均有效。
(3)邊界值分析的引入。經實踐證明,大量錯誤是發生在輸入或輸出范圍的邊界上,而不是在輸入或輸出范圍的內部。等價類劃分法只實現了“合理分類”,在挑選數據方面略顯隨意。比如程序員將身高≥1.0錯誤的寫成了身高>1.0,若隨意挑選測試數據{身高=1.5,體重=50}和{身高=0.9,體重=50}開展測試,則無法發現這一類缺陷。也就是說隨意測試會帶來風險,如果數據選取不對癥,則白白浪費了寶貴的測試時間,卻無法發現系統中隱藏的問題。因此,在測試過程中,邊界值分析法可作為等價類劃分法的有力補充,用于實現測試數據的“精心挑選”。比如{身高=1.0,體重=50}可以有效發現程序中的關系謂詞書寫錯誤。
4結束語
等價類劃分法和邊界值分析法是應用最為普遍的黑盒測試方法,分別可以實現“合理分類、精心挑選”,兩者雙劍合璧,可以達到較好的測試效果。一方面,大大減少了測試用例的數量,力爭用盡可能少的測試發現盡可能多的缺陷,保證了測試的效率;另一方面,測試用例不僅滿足輸入域和輸出域的全方位覆蓋,而且能夠實現對系統功能正確性和健壯性的驗證,保證了測試的有效性。但是這兩種方法通常只適用于輸入條件相互獨立的情況,如果輸入條件之間存在聯系,則很難描述,即使描述出來,其測試效果也難以保障,需要與其他黑盒測試方法結合用于解決實際問題。
參考文獻
[1] 朱少民.軟件測試方法和技術[M].第3版.北京:清華大學出版社,2014:59.
[2] 佟偉光.軟件測試[M].第2版.北京:人民郵電出版社,2015:117.
作者簡介
蘇晶(1981-),女,山東省濱州市人;學歷:碩士研究生,職稱:講師,現就職單位:山東理工大學,研究方向:軟件工程、軟件測試。