等價類划分(Equivalence Class Partitioning)


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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM