1.实验要求
实验(二)等价类划分方法测试案例-电话号码问题
某城市电话号码由三部分组成。它们的名称和内容分别是:
(1)地区码:空白或四位数字
(2)连接符:“-”
(3)号码:8 位数字
假定被测程序能接受一切符合上述规定的电话号码。如若输入的电话号码符合规定,则输入验证通过,否则拒绝所有不符合规定的电话号码,如下图所示。
根据该程序的规格说明,作等价类的划分,设计测试方案,并完成其实验报告。
(1)编写如图所示小程序
(2)设计对应的测试方案
(1)自编小程序截图(截图上留下姓名和学号)
小程序首页,以及输入电话号码后正确失败界面
2.编写代码
代码如下:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class CheckPhoneNum extends JFrame{
private JPanel contentPane;
private JTextField nameField;
private JTextField phoneField;
private JTextField ageField;
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
try{
CheckPhoneNum frame = new CheckPhoneNum();
frame.setVisible(true);
}catch(Exception e){
e.printStackTrace();
}
}
});
}
public CheckPhoneNum(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,260,190);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5,5,5,5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel label = new JLabel("姓名");
label.setBounds(10,15,122,15);
contentPane.add(label);
nameField = new JTextField();
nameField.setBounds(80,10,141,25);
contentPane.add(nameField);
JLabel label_1 = new JLabel("年龄");
label_1.setBounds(10,50,122,15);
contentPane.add(label_1);
ageField = new JTextField();
ageField.setBounds(80,45,141,25);
contentPane.add(ageField);
JLabel label_2 = new JLabel("电话号码");
label_2.setBounds(10,87,122,15);
contentPane.add(label_2);
phoneField = new JTextField();
phoneField.setBounds(80,82,141,25);
contentPane.add(phoneField);
JButton button = new JButton("验证");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
do_button_actionPerformed(e);
}
});
button.setBounds(100,120,60,25);
contentPane.add(button);
}
protected void do_button_actionPerformed(ActionEvent e){
String text = phoneField.getText();
String info = check(text); //对输入的电话文本进行验证
JOptionPane.showMessageDialog(null,info);
}
public String check(String text){
if(text == null || text.isEmpty()){
return "请输入电话号码";
}
String regex = "^(^\\d{4}-?[-]-?\\d{8})|(^\\d{8})"; //正则表达式
if(text.matches(regex)){
return text + "\n是一个合法的电话号码";
}else{
return text + "\n不是一个合法的电话号码";
}
}
}
3.实验过程
编写等价类划分及测试方案
有效等价类 | 编号 | 无效等价类 | 编号 | |
地区码 | 空白 | 1 | 小于四位数 | 3 |
四位数字 | 2 | 多余四位数 | 4 | |
分隔符 | 有区号时存在 | 5 | 有区号是不存在 | 6 |
无区号时不存在 | 7 | 无区号时存在 | 8 | |
电话号码 | 8位数字 | 9 | 多于8位数字 | 10 |
少于8位数字 | 11 |
| 输入数据 | 预期结果 | 测试结果 | 案例 |
case1 | 1234-12345678 | 合格 | ||
case2 | 12345678 | 合格 | ||
case3 | 12345-12345678 | 不合格 | ||
case4 | 123-12345678 | 不合格 | ||
case5 | -12345678 | 不合格 | ||
case6 | 123412345678 | 不合格 | ||
case7 | 1234-1234567 | 不合格 | ||
Case8 | 1234-123456789 | 不合格 | ||
Case9 | 不合格 | |||
Case10 | 123456789 | 不合格 | ||
Case11 | 1234567 | 不合格 |