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 }