接口测试思路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
你好,我觉得接口测试用例的设计方法其实和功能测试用例的设计方法是类似的,因为接口是需要满足需求的,而接口测试所依赖的也是需求说明书,但是,因为接口测试毕竟是通过代码去测试代码,所以,为了保证覆盖率,可能会使用到单元测试的方法,具体的测试用例设计,我考虑的如下,请参考,如果有错误,一起讨论。
输入参数测试:针对输入的参数进行测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法,输入参数不合法,输入参数为空,输入参数为null,输入参数超长;
功能测试:接口是否满足了所提供的功能,相当于是正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性。
逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常;
异常情况测试:接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何的异常都进行处理。
具体实列参考:
需求内容:
功能描述:店铺会有很多的评价,评价分两种类型,好评,差评,根据店铺的没个评价,确定这个店铺有多少个星。具体的要求是
1. 评价分好评,差评
2. 连续5个好评可以转换为1个星,有一个差评,减少1个星
3. 最多有5个星
4. 初始星为0,最少有0个星
接口设计:
public interface IStoreService {
/**
* 根据店铺Id,得到店铺的星数
* @param storeId店铺id
* @return店铺星数
*/
public int getSotreStar(String storeId);}
分析过程:
从需求角度分析,需要测试的点包括:
1.店铺没有评价
2.店铺全部差评
3.店铺全部好评
4.店铺有差评,有好评
5.点评评价数小于5个
6.店铺评价中,连续好评不够5个
7.根据星计算规则,店铺所得星号大于5个
具体实现:
private int getStar(List
if (pingJiaList == null) {
System.out.println("评价列表不能为null");
return 0;
}
int star = 0;
int pingJiaCount = pingJiaList.size();
if (pingJiaCount < 5) {
return star;
}
int goodPing = 0;
for (int i = 0; i < pingJiaCount; i++) {
if (pingJiaList.get(i).getPingJiaType() == PingType.goodPi ng) {
goodPing++;
if (goodPing == 5) {
star++;
goodPing = 0;
}
} else {
goodPing = 0;
if (star > 0) {
star -= 1;
}
}
}
if (star > 5) {
star = 5;
}
return star;
}
用例设计
略
测试过程:
1. 分析需求,找出被测需求测试点:
2. 分析测试点,通过测试用例设计方法,准备测试数据,添加期望结果,提炼测试点为可执行测试用例
常用测试用例设计方法:
1. 边界值
2. 等价类
3. 场景法
4. 错误推测法
5. 针对参数测试
3. 根据测试用例,准备测试数据
4. 编写测试代码,调用被测代码,执行测试,断言测试结果
测试注意点
1. 代码测试依赖的是需求,而不是开发的代码
2. 代码测试的测试用例和功能测试用例类似,增加关于传入参数的验证
在接口测试培训系列1中,描述了针对一个需求的实现方法,及对这个需求方法接口测试用例的设计,在本篇中,在该需求的基础上再增加需求,同时将需求扩展为一个小的项目,讲解针对项目的接口测试如何去做。
需求描述:
1. 增加店铺对象,评价属于店铺
2. 可以针对店铺增加评价,删除评价,修改评价
3. 根据店铺id获得店铺的星
4. 根据店铺id获得店铺的好评率
5. 根据店铺id获得店铺在所有店铺当中的排序,排序算法是:星越多排序越靠前,如果星相等,则根据好评率排序,好评率越高,排序越靠前,如果好评率相等,则评价越多越靠前,如果评价数相等,则默认当前店铺排名靠前。
实现思路:
1. 建立一个店铺类,具有店铺名称,店铺ID两个属性
2. 建立一个评价类,具有所属店铺id,评价类型,更新时间属性
3. 增加一个店铺操作类,具有增加评价,删除评价,修改评价,获取店铺星,获取店铺好评,获取店铺排序的方法
4. 建立一个数据库,里面有两张表,一张店铺表,一张评价表
5. 店铺表字段:店铺id,店铺名称
6. 评价表字段:所属店铺id,评价类型,更新时间
分层开发
1.DAO层:具体的对数据库的操作
public interface IPingJiaDao {
//插入一条记录
public boolean insert(PingJia pingJia);
// 修改评价记录
public boolean update(PingJia pingJia);
// 删除评价记录
public boolean delete(String pingJiaId);
//得到一个店铺的评价列表
public List
//得到一个店铺的好评率
public double getGoodPingJiaRate(String storeId);
}
2.Service层:具体的业务逻辑层
public interface IStoreService {
//添加评价,
public boolean addPingJia(PingJia pingJia);
//修改评价类型