163邮箱测试
163邮箱注册模块的校验规则如下:
用户名由a-z的英文字母,0-9的数字,点号,减号,或下划线组成,长度为3-10个字符,只能以数字或字母开头和结尾
密码长度为6-16位,区分字母大小写,密码可以由字母,数字,特殊字符组成
用户名输入框的测试点:
1)使用已经被注册过的用户名进行注册
1)用户名是3个单词字符
2)用户名是10个单词字符
3)用户名是2个单词字符
4)用户名是11个单词字符
5)用户名以下划线开头
6)用户名以下划线结尾
7)用户名以点号开头
8)用户名以点号结尾
9)用户名以减号开头
10)用户名以减号结尾
11)用户名包含中文的情况
12)用户名包含空格的情况,比如:abc 123
13)用户名为空
14)用户名是空格,比如:3个空格
15)用户名包含大写字母的情况
16)用户名包含其他特殊字符的情况,比如:{}[]*'"+=;
密码输入框的测试点:
1)密码是6位字符(包含特殊字符)的情况
2)密码是16位字符(包含特殊字符)的情况
3)密码包含大写字母,注册成功后,使用小写格式的密码登录失败
4)密码是5位字符的情况
5)密码是17位字符的情况
6)密码是空格的情况,比如:6个空格
7)密码为空的情况
确认密码输入框的测试点:
1)确认密码跟登录密码不一样的情况
2)确认密码为空的情况
![](https://img.haomeiwen.com/i10027900/1331b6fc484a61cb.png)
电话号码测试
某城市的电话号码由三部分组成,这三部分的名称和内容分别是:
地区码:空白或3位数字
前缀:非“0”和非“1”开头的3位数字
后缀:4位数字
假定被测程序接受一切符合上述规定的电话号码,拒绝所有不符合的号码,用等价分类法来设计它的测试用例。
![](https://img.haomeiwen.com/i10027900/76c7f8c3ae18c217.png)
三角形面积测试
某程序实现如下功能,输入三个整数a,b,c,输出以a,b,c为三边的三角形面积(1<=a,b,c<100),结果保留2位小数。请运用等价类和边界值的方法,编写测试用例。
代码实现如下:
package examples;
public class AreaTest {
/**
* 计算三角形的面积
* @param a 表示边长
* @param b 表示边长
* @param c 表示边长
* @return 返回三角形的面积
* @throws Exception
*/
public static double getArea(int a,int b,int c) throws Exception {
if(a<=0||b<=0||c<=0||a>=100||b>=100||c>=100) {
throw new Exception("边长必须大于0且小于100");
}
if(a+b<=c||Math.abs(a-b)>=c) {
throw new Exception("不能组成三角形");
}
return Math.sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4;
}
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
System.out.println(getArea(3,4,5));
}
}
三角形面积计算的测试点:
1)a,b,c全部为整数,且为一般三角形,a<b<c,比如:a=5,b=6,c=7
2)a,b,c全部为整数,且为一般三角形,a<c<b,比如:a=5,b=7,c=6
3)a,b,c全部为整数,且为一般三角形,b<a<c,比如:a=6,b=5,c=7
4)a,b,c全部为整数,且为一般三角形,c<a<b,比如:a=6,b=7,c=5
5)a,b,c全部为整数,且为一般三角形,b<c<a,比如:a=7,b=5,c=6
6)a,b,c全部为整数,且为一般三角形,a<c<b,比如:a=5,b=7,c=6
7)a,b,c全部为整数,且为等腰三角形,比如:a=2,b=2,c=3
8)a,b,c全部为整数,且为等腰三角形,比如:a=2,b=3,c=2
9)a,b,c全部为整数,且为等腰三角形,比如:a=3,b=2,c=2
10)a,b,c全部为整数,且为等边三角形,比如:a=99,b=99,c=99
11)a,b,c全部为整数,且为等边三角形,比如:a=1,b=1,c=1
12)a比最大值大,比如:a=100,b=99,c=99
13)b比最大值大,比如:a=99,b=100,c=99
14)c比最大值大,比如:a=99,b=99,c=100
12)a比最小值小,比如:a=0,b=1,c=1
13)b比最小值小,比如:a=1,b=0,c=1
14)c比最小值小,比如:a=1,b=1,c=0
15)a为小数的情况
16)b为小数的情况
17)c为小数的情况
18)a为空的情况
19)b为空的情况
20)c为空的情况
21)a,b,c全部是整数,但是a+b<c,不能组成三角形
22)a,b,c全部是整数,但是a+b=c,不能组成三角形
23)a,b,c全部是整数,但是b+c<a,不能组成三角形
24)a,b,c全部是整数,但是b+c=a,不能组成三角形
25)a,b,c全部是整数,但是a+c<b,不能组成三角形
26)a,b,c全部是整数,但是a+c=b,不能组成三角形
![](https://img.haomeiwen.com/i10027900/ac3b6835f12953f6.png)
ATM取款测试
假定一台ATM机允许提取的增量为100元,总额为从100元到5000元不等的现金;并要求一次最多取2000元,一天最多取5000元,一天最多取3次。请运用等价类和边界值的思想编写测试用例。
取款测试点:
1)银行卡A,使用单笔最小取款金额100进行测试
2)银行卡A,使用单笔最大取款金额2000进行测试
3)银行卡A,输入的取款金额为0的情况
4)银行卡A,输入的取款金额为2100的情况
5)银行卡B,第1次取2000,第2次取2000,第3次取1000的情况
6)银行卡C,第1次取2000,第2次取2000,第3次取1100的情况
7)银行卡D,第1次取100,第2次取100,第3次取100,第4次取100的情况
8)银行卡E,余额不足的情况
9)ATM里面现金不足的情况
![](https://img.haomeiwen.com/i10027900/6ac9b0924c0f35c1.png)
登录测试
利用场景分析法设计某系统登录界面的测试用例(用户名密码:test01/123456,验证码随机生成)
备注:界面输入要素为:用户名、密码、验证码填写信息正确,点击“确定”按钮即可登录;若用户名、密码或验证码任意一项错误,页面均给出提示,无法登录。
![](https://img.haomeiwen.com/i10027900/0a5cd8b8d5eacc3e.png)
佣金测试
某程序实现佣金计算功能,编写测试用例以测试该程序的佣金计算是否准确,要求利用等价类划分法和边界值分析法使得所设计的测试用例尽可能高效。
业务说明:销售商每月至少售出一支完整的步枪(一支枪机、一支枪托、一根枪管可组成一支完整的步枪)。销售商根据每月的销售额提取佣金。相关数据如下表所示。
![](https://img.haomeiwen.com/i10027900/68019ae84471deee.png)
佣金计算:
![](https://img.haomeiwen.com/i10027900/20a71039da5c0935.png)
![](https://img.haomeiwen.com/i10027900/9f500bbdc2b5aba5.png)
找零钱测试
假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。
请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。
代码实现如下:
package examples;
import java.util.*;
public class ReturnTest {
/**
* 找零钱
* @param total 商品总金额
* @param pay 付款金额
* @return 返回零钱的集合
*/
public static List<Integer> returnChange(int total,int pay) throws Exception {
if(total<=0||total>100) {
throw new Exception("商品总金额必须大于0且不能超过100元");
}
if(pay<total||pay>100) {
throw new Exception("付款金额不能低于商品总金额且不能超过100元");
}
int rtn = pay-total;
List<Integer> list = new ArrayList<Integer>();
if(rtn>=0&&rtn<5) {//如果找零金额在0到5之间
for(int i=0;i<rtn;i++) {
list.add(1);
}
}else if(rtn>=5&&rtn<10) {//找零金额在5到10之间
list.add(5);
for(int i=0;i<rtn-5;i++) {
list.add(1);
}
}else if(rtn>=10&&rtn<50) {//找零金额在10到50之间
for(int i=0;i<rtn/10;i++) {
list.add(10);
}
if(rtn%10>=5) {
list.add(5);
}
for(int i=0;i<rtn%10-5;i++) {
list.add(1);
}
}else {
list.add(50);
for(int i=0;i<(rtn-50)/10;i++) {
list.add(10);
}
if(rtn%10>=5) {
list.add(5);
for(int i=0;i<rtn%10-5;i++) {
list.add(1);
}
}else {
for(int i=0;i<rtn%10;i++) {
list.add(1);
}
}
}
return list;
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.out.println(returnChange(91,100));
System.out.println(returnChange(100,100));
}
}
![](https://img.haomeiwen.com/i10027900/7e255f7087ce00ed.png)
参考资料
测试用例设计--等价类的几个例子
https://blog.csdn.net/yuhanfeng314/article/details/38521625
软件测试经典问题——佣金问题
https://www.cnblogs.com/yangzhanxi/archive/2013/03/28/2987722.html
网友评论