1. Equivalence Class Partitioning
所謂等價類是指輸入域的某個互不相交的子集合,所有等價類的並集便是整個輸入域。目的在於測試用例的無冗余性。
2. 划分等價類(valid / invalid)
(1)有效等價類:檢驗程序是否實現了規格說明預先規定的功能和性能。
(2)無效等價類:檢查軟件功能和性能的實現是否有不符合規格說明要求的地方。
3. 常用的等價類划分原則
(1)按區間划分
(2)按數值划分
(3)按數值集合划分
(4)按限制條件或規則划分
(5)細分等價類
4. 等價類划分方法
(1)在確立了等價類之后,可列出所有划分出的等價類表。
(2)為每一個等價類規定一個唯一的編號。
(3)設計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類。重復這一步,直到測試用例覆蓋了所有的有效等價類。
(4)設計一個新的測試用例,使其覆蓋且只覆蓋一個尚未覆蓋的無效等價類。重復這一步,直到測試用例覆蓋了所有的無效等價類。
5. 等價類划分方法的應用

編號 有效等價類 編號 無效等價類
1 長度1到6 3 長度小於1(即為0)
4 長度大於6
2 字符為a-z,A-Z,0-9 5 字符為英文/數字以外字符,控制字符,標點符號
UserForm1的測試用例:
No 輸入 覆蓋等價類 期望輸出
1 abcdef 1,2 true
2 adcdefg 4,2 false
3 3 false
4 123 1,2 true
5 123,. 1,5 false
6 1234567 4,2 false
測試結果:


測試代碼:
1 import javafx.application.Application; 2 import javafx.event.ActionEvent; 3 import javafx.event.EventHandler; 4 import javafx.scene.Scene; 5 import javafx.scene.control.Button; 6 import javafx.scene.control.TextField; 7 import javafx.scene.layout.AnchorPane; 8 import javafx.scene.layout.HBox; 9 import javafx.scene.text.Text; 10 import javafx.stage.Stage; 11 12 public class Test extends Application{ 13 public static void main(String[] args) { 14 Test.launch(args); 15 } 16 17 public void start(Stage stage ){ 18 stage.setTitle("UserForm1"); 19 AnchorPane root = new AnchorPane(); 20 21 HBox hbox = new HBox(8); 22 Text t1 = new Text("Name: "); 23 final TextField t2 = new TextField(); 24 Button btn = new Button("OK"); 25 hbox.getChildren().addAll(t1, t2, btn); 26 27 btn.setOnAction(new EventHandler<ActionEvent>(){ 28 @Override 29 public void handle(ActionEvent actEvt) { 30 if(check(t2.getText().toString())) 31 System.out.println("true"); 32 else 33 System.out.println("false"); 34 } 35 }); 36 37 AnchorPane.setTopAnchor(hbox, 90.0); 38 AnchorPane.setLeftAnchor(hbox, 30.0); 39 root.getChildren().add(hbox); 40 41 stage.setScene(new Scene(root, 300, 200)); 42 stage.show(); 43 } 44 45 public boolean check(String s){ 46 char array[] = new char[s.length()]; 47 array = s.toCharArray(); 48 if (s.length() < 1 || s.length() > 6) 49 return false; 50 if (s.length() != 0){ 51 for (int i = 0; i < s.length(); i++){ 52 if(!Character.isDigit(array[i]) && !Character.isAlphabetic(array[i])) 53 return false; 54 } 55 } 56 return true; 57 } 58 }
