关于软件测试(2):等价类划分以及设计测试用例的简单软件测试
前景概要:在软件人员或者是公司开发软件的时候,并不是简单的把代码写好就可以了,后期的维护和及时的软件测试才能很好的让软件健康完整的发展下去。虽说一个简单的程序你测试起来很方便,但是作为程序员-----一个严谨的职业,现实要求我们系统的,完整的对一个软件进行测试,这样可以节省大量的人力和物力。那这就是我们这周课上的大概内容了。
而对于林林总总的软件我们又将软件测试方法分为了等价类划分法、边界值法、因果图法。对于等价类划分法我写了个简单的程序作为软件测试的实验。
1、题目内容:编写一个editBox,要求EditBox 允许1到6个英文字符或数字,按OK结束
有效等价类: 长度:1到6 字符:a-z,A-Z,0-9。
无效等价类 长度:0,7 字符:英文/数字以外字符,控制字符,标点符号。
2、关于等价类的一些必要知识:
有效等价类:检验程序是否实现了规格说明预先规定的功能和性能。
无效等价类:检查软件功能和性能的实现是否有不符合规格说明要求的地方。
常用的等价类划分原则
(1)按区间划分
(2)按数值划分
(3)按数值集合划分
(4)按限制条件或规则划分
(5)细分等价类
等价类测试用例设计
(1)在确立了等价类之后,可列出所有划分出的等价类表。
(2)为每一个等价类规定一个唯一的编号。
(3)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,直到测试用例覆盖了所有的有效等价类。
(4)设计一个新的测试用例,使其覆盖且只覆盖一个尚未覆盖的无效等价类。重复这一步,直到测试用例覆盖了所有的无效等价类。
3、划分等价类
编号 | 有效等价类 | 编号 | 无效等价类 |
---|---|---|---|
1 | 长度为1-6 | 5 | null长度为0 |
6 | 长度大于6 | ||
2 | 数字0-9 | 7 | 英文/数字以外字符,控制字符,标点符号 |
3 | 小写字母a-z | ||
4 | 大写字母A-Z |
4、测试用例
编号 | 测试用例 | 覆盖等价类 | 期望输出 |
---|---|---|---|
1 | 3a4B5c | 1,2,3,4 | OK |
2 | 不输入 | 5 | 输入不能为空 |
3 | 1234567 | 6 | 输入字符长度过长 |
4 | 123@#¥ | 7 | 只能输入英文字母或者数字 |
5、编写代码
1 import java.awt.*; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 5 import javax.swing.*; 6 7 public class test3 { 8 public final static boolean RIGHT_TO_LEFT = false; 9 static JButton jb = new JButton("OK"); 10 static JTextField tf = new JTextField(""); 11 static JTextArea ta = new JTextArea(""); 12 public static void addComponentsToPane(Container contentPane) { 13 if (RIGHT_TO_LEFT) { 14 contentPane.setComponentOrientation( 15 ComponentOrientation.RIGHT_TO_LEFT); 16 } 17 // Any number of rows and 2 columns 18 contentPane.setLayout(new GridLayout(0,2)); 19 20 contentPane.add(new JLabel("Enter your name")); 21 contentPane.add(jb); 22 contentPane.add(tf); 23 contentPane.add(ta); 24 //jb.setMnemonic(KeyEvent.VK_I); //Set ShortCut Keys 25 jb.addActionListener(new ActionListener() { 26 27 public void actionPerformed(ActionEvent arg0) { 28 // TODO Auto-generated method stub 29 String test = tf.getText(); 30 if(test.matches("[A-Za-z0-9]{1,6}")) 31 ta.setText("ok"); 32 else if(tf.getText().length()<=0) 33 ta.setText("输入不能为空"); 34 else if(tf.getText().length()>6) 35 ta.setText("输入字符长度过长"); 36 else 37 ta.setText("只能输入英文字母或者数字");; 38 39 } 40 }); 41 } 42 43 private static void createAndShowGUI() { 44 JFrame.setDefaultLookAndFeelDecorated(true); 45 46 JFrame frame = new JFrame("GridLayout Source Demo"); 47 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 48 49 //Set up the content pane and components in GridLayout 50 addComponentsToPane(frame.getContentPane()); 51 52 frame.pack(); 53 frame.setVisible(true); 54 } 55 56 public static void main(String[] args) { 57 javax.swing.SwingUtilities.invokeLater(new Runnable() { 58 public void run() { 59 createAndShowGUI(); 60 } 61 }); 62 } 63 }
以上java代码编译环境是window8 64位系统,编译器是eclipse。
6、测试结果
吻合期望的结果,证明软件测试成功。
7、补充说明:此代码运用到的核心知识便是正则表达式的匹配,它很好的解决了字符串的匹配问题,节省了大量的代码量。具体内容可以参照网站
http://www.w3cschool.cc/regexp/regexp-tutorial.html
8、欢迎大家对我写的博客批评指正,我会再接再厉。