3 白盒测试与控制流覆盖原则

白盒测试的定义与分类

白盒测试:又称结构测试,它一般用来测试程序的内部结构(Control Flow , Data Flow)。并判定其结果是否与预期的结果一致。

白盒测试的种类:静态分析测试(Static Analysis Test,Code Inspection)、语句分支覆盖测试(Ctrl Flow Test)等。

————引用自PPT

 

控制流覆盖原则

语句覆盖准则(Statement Coverage)

分支覆盖准则(Branch Coverage 或Decision Coverage)

谓词测试

原子谓词覆盖准则(也称 Condition Coverage)

分支-谓词覆盖准则(也称Branch Condition Coverage 或Decision Condition Coverage )

复合谓词覆盖准则(也称Multi Condition Coverage)

路径覆盖准则(Path Coverage)

以下为该次实验所用的代码

题目: EditBox 允许1到6个英文字符或数字,按OK结束 有效等价类: 长度:1到6 字符:a-z,A-Z,0-9 无效等价类 长度:0,7 字符:英文/数字以外字符,控制字符,标点符号

         其中有3个EditBox,只有当每一个EditBox中的输入信息都符合规范的时候,输出台才会输出true,否则输出false。

     

package pro1;

import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;




 class Window extends JFrame  
{  
    TextField text1,text2,text3;
    JButton jb;
    Window(String s)  
    {  
        super(s);  
        this.setLayout(new FlowLayout());  
        Label label1=new Label();
        Label label2=new Label();
        Label label3=new Label();
        
        label1.setText("Name1");    
        label2.setText("Name2");
        label3.setText("Name3");
        
        text1 = new TextField(10);  
        text2 = new TextField(10);
        text3 = new TextField(10);
        jb =new JButton("ok"); 
        jb.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String str1 =text1.getText().toString();
                String str2 =text1.getText().toString();
                String str3 =text1.getText().toString();
               
                if(check(str1)&&check(str2)&&check(str3))
                    System.out.println("true");
                else
                    System.out.println("false");
                     
            }
        });
        this.add(label1);
        this.add(text1);
        this.add(label2);
        this.add(text2);
        this.add(label3);
        this.add(text3);
          
        this.add(jb);
        this.setBounds(400, 200, 900, 200);  
        this.setVisible(true);  
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    }  
    
    public boolean check(String str){
        char num[] = str.toCharArray();
        for (int i = 0; i < num.length; i++) {
        if (!(Character.isDigit(num[i]))&&!(Character.isAlphabetic(num[i])))
            return false;
        }
        if((str.length()>6)||(str.length()==0))
            return false;
        return true;
                
    }
}  

public class test1 {
     public static void main(String args[])  
        {  
            Window win = new Window("UserForm1");  
        }    

}

以下为截屏

根据分支覆盖准则进行白盒测试

分支覆盖原则定义

分支覆盖要求在软件测试中,每个分支都至少获得一次真/假取值的经历。 测试数据集T称为分支覆盖充分的,当且仅当LT覆盖了GP中的所有有向边。           

——引用自PPT

以下为分支覆盖测试的用例

测试用例 输入信息 textField1 textField2 textField3 输出信息
测试用例1 1#,1,,1, false true true false
测试用例2 1,1#,1 true false true false
测试用例3 1,1,1# true true false false
测试用例4 1#,1#,1 false false true false
测试用例5 1#,1,1# false true false false
测试用例6 1,1#,1# true false false false
测试用例7 1#,1#,1# false false false false
测试用例8 1,1,1 true true true true

                                                                   T

原文地址:https://www.cnblogs.com/yushaoyan/p/4370216.html