• 等价类划分(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 }
  • 相关阅读:
    Symfony框架实战学习
    学习Symfony之环境的搭建
    js的学习 (数组)
    js的学习 (对象)
    js的学习 (语句)
    Django 应用开发(3)
    Django 应用开发(2)
    Django 学习搭建博客
    2-4.通用选择器
    2-3.class选择器
  • 原文地址:https://www.cnblogs.com/machuk/p/4357219.html
Copyright © 2020-2023  润新知