在上一篇博客中,我介绍了等价类划分法的应用,并通过EditBox这个例子进行了测试。在这次测试中,通过设置3个输入框,呈现出不同的测试效果。
首先复习等价类划分法:
划分等价类的方法:下面给出六条确定等价类的原则。
①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类.
③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类。
1.划分等价类
| 编号 | 有效等价类 | 编号 | 无效等价类 |
| 1 | 文本1长度为1-6 | 7 | 文本1长度小于1 |
| 8 | 文本1长度大于6 | ||
| 2 | 文本2长度为1-6 | 9 | 文本2长度小于1 |
| 10 | 文本2长度大于6 | ||
| 3 | 文本3长度为1-6 | 11 | 文本3长度小于1 |
| 12 | 文本3长度大于6 | ||
| 4 | 文本1字符位a-z,A-Z,0-9 | 13 | 文本1含英文/数字以外字符,控制字符,标点符号 |
| 5 | 文本2字符位a-z,A-Z,0-9 | 14 | 文本2含英文/数字以外字符,控制字符,标点符号 |
| 6 | 文本3字符位a-z,A-Z,0-9 | 15 | 文本3含英文/数字以外字符,控制字符,标点符号 |
2.设计测试用例:
| 编号 | 输入 | 覆盖等价类 | 期望输出 |
| 1 |
111aaa 222bbb 333ccc |
1,2,3,4,5,6 | OK |
| 2 |
222bbb 333ccc |
7,2,3,4,5,6 | |
| 3 |
111aaaaa 222bbb 333ccc |
8,2,3,4,5,6 | |
| 4 |
111aaa 333ccc |
9,1,3,4,5,6 | |
| 5 |
111aaa 222bbbbb 333ccc |
10,1,3,4,5,6 | |
| 6 |
111aaa 222bbb |
11,1,2,4,5,6 | |
| 7 |
111aaa 222bbb 333ccccc |
12,1,2,4,5,6 | |
| 8 |
1$%^a 222bbb 333ccc |
13,1,2,3,5,6 | |
| 9 |
111aaa 2)&.bb 333ccc |
14,1,2,3,4,6 | |
| 10 |
111aaa 222bbb 3(&#!c |
15,1,2,3,4,5 |
测试结果:










源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string result = "OK";
string str1 = textBox1.Text.ToString();
string str2 = textBox2.Text.ToString();
string str3 = textBox3.Text.ToString();
if (str1.Length < 1 || str1.Length > 6 || str2.Length < 1 || str2.Length > 6
|| str3.Length < 1 || str3.Length > 6)
result = "fail";
foreach (char c in str1)
{
if ((!char.IsLetter(c)) && (!char.IsNumber(c)))
{
result = "fail";
}
}
foreach (char c in str2)
{
if ((!char.IsLetter(c)) && (!char.IsNumber(c)))
{
result = "fail";
}
}
foreach (char c in str3)
{
if ((!char.IsLetter(c)) && (!char.IsNumber(c)))
{
result = "fail";
}
}
label.Text = result;
}
}
}