关于软件测试(3):多个输入的等价类划分的扩展应用

  

  

  前景概要:这篇文章主要针对上一篇题目做出一些扩展性的修改,从而导致等价类等价类的变化。这边文章实现了增加至3个editbox的等价类划分方法,从而加强了我对于等价类划分的理解。

  1、题目内容:编写3个editBox,要求EditBox 允许1到6个英文字符或数字,按OK结束

    有效等价类: 长度:1到6 字符:a-z,A-Z,0-9。

    无效等价类 长度:0,7 字符:英文/数字以外字符,控制字符,标点符号。

  2、关于等价类的一些必要知识我就不再赘述,上篇文章有提过。

  3、划分等价类

编号有效等价类编号无效等价类
1 长度为1-6 6 null
2 数字0-9 7 长度大于6
3 小写字母a-z 8 英文/数字以外字符,控制字符,标点符号
4 大写字母A-Z 9 N0.1正确,N0.1正确,N0.1错误
5 正确输入个数为3 10 N0.1正确,N0.1错误,N0.1正确
    11 N0.1正确,N0.1错误,N0.1错误
    12 N0.1错误,N0.1正确,N0.1正确
    13 N0.1错误,N0.1正确,N0.1错误
    14 N0.1错误,N0.1错误,N0.1正确
    15 N0.1错误,N0.1错误,N0.1错误

  4、测试用例

编号测试用例覆盖等价类期望输出
1 3a4B5c,3a4B5c,3a4B5c 1,2,3,4.5

No.0:ok
No.1:ok
No.2:ok

2 123,123,null 6,9

No.0:ok
No.1:ok
No.2:输入不能为空

3 123,123,1234567 7,9

No.0:ok
No.1:ok
No.2:输入字符长度过长

4 123,123,123@#¥ 8,9

No.0:ok
No.1:ok
No.2:只能输入英文字母或者数字

5 123,123@#¥,123 10

No.0:ok
No.1:只能输入英文字母或者数字
No.2:ok

  123,123@#¥,123@#¥ 11

No.0:ok
No.1:只能输入英文字母或者数字
No.2:只能输入英文字母或者数字

 7 123@#¥, 123,123  12  

No.0:只能输入英文字母或者数字
No.1:ok
No.2:ok

8 123@#¥, 123,1234567   13  

No.0:只能输入英文字母或者数字
No.1:ok
No.2:输入字符长度过长

9 123@#¥, 1234567,123  14

No.0:只能输入英文字母或者数字
No.1:输入字符长度过长
No.2:ok

 
10 123@#¥, 1234567,null 15

No.0:只能输入英文字母或者数字
No.1:输入字符长度过长
No.2:输入不能为空

  5、编写代码

    

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class test3 {
public final static boolean RIGHT_TO_LEFT = false;
static JButton jb = new JButton("OK");
static JTextField tf = new JTextField("");
static JTextField tf2 = new JTextField("");
static JTextField tf3 = new JTextField("");
static JTextArea ta = new JTextArea("");
public static void addComponentsToPane(Container contentPane) {
if (RIGHT_TO_LEFT) {
contentPane.setComponentOrientation(
ComponentOrientation.RIGHT_TO_LEFT);
}
// Any number of rows and 2 columns
contentPane.setLayout(new GridLayout(6,1));

contentPane.add(new JLabel("Enter your name"));
contentPane.add(tf);
contentPane.add(tf2);
contentPane.add(tf3);
contentPane.add(jb);
contentPane.add(ta);
//jb.setMnemonic(KeyEvent.VK_I); //Set ShortCut Keys
jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String[] test = new String[3];

test[0] = tf.getText();
test[1] = tf2.getText();
test[2] = tf3.getText();
ta.setText("");
for (int i = 0; i < 3; i++) {

if (test[i].matches("[A-Za-z0-9]{1,6}"))
ta.setText(ta.getText()+"No."+i+":ok"+"\n");
else if (test[i].length() <= 0)
ta.setText(ta.getText()+"No."+i+":输入不能为空"+"\n");
else if (test[i].length() > 6)
ta.setText(ta.getText()+"No."+i+":输入字符长度过长"+"\n");
else
ta.setText(ta.getText()+"No."+i+":只能输入英文字母或者数字"+"\n");

}

}
});
}

private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);

JFrame frame = new JFrame("GridLayout Source Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Set up the content pane and components in GridLayout
addComponentsToPane(frame.getContentPane());

frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}

以上java代码编译环境是window8 64位系统,编译器是eclipse。

  6、测试结果

      

       

  吻合期望的结果,证明测试成功。

  7、总结:通过这次的软件测试实际操作,更加深刻地理解等价类划分,以及更加了解软件测试的重要性。随着软件体系的逐步增大我们与之对应的软件测试也应该随之应变,达到消耗尽量少的资源已完成所有我们想要检测的部分。

  8、欢迎大家对我写的博客批评指正。

原文地址:https://www.cnblogs.com/logicvay2010/p/4375898.html