转
测试还有一个月就一年了,中间犯了很多错误,经常场景遗漏,这个要怎么才能做好呢?
一开始感觉是自己对业务不熟悉,慢慢的业务熟悉了,可还是会有遗漏,总是到最后。。。。。。
总想做好,却总是。。。。。。
最近一个日常做接口测试,老大特意交代要用例评审下,用例评审过了,也按照执行了,可是到了最后要
性能测试的时候才是出问题了。。。。。。
性能测试居然测出功能bug!!!---从老大的字里行间知道他已经很不满意了,哎我该怎么办呢?
这次性能测试测试出2个bug
1、我本地接口用例是跑通过了的。但是提供hsf服务,性能远程调用的时候出问题了,具体原因是枚举的反序列话不支持。
2、分页查询
业务逻辑为:旧的接口当不传入pagesize时就设置pagesize为int的最大值。本次改进为:如果不传入pagesize则循环查询每次取1000张。
我设计的用例是:(1)、图片总数<1000。(2)、图片总数>1000 ,我取的3175。(3)、设置pagesize=1500
性能测试同学取的是2000这时候造成无限循环了。
具体原因为:
循环代码:
public PictureResult<List<PictureDO>> getAdultPassedPicture(long sellerId) throws PictureServiceException {
PictureResult<List<PictureDO>> result = new PictureResult<List<PictureDO>>();
List<PictureDO> tempList = new ArrayList<PictureDO>();
QueryPictureDO query = new QueryPictureDO();
query.setSellerId(sellerId);
query.setStatus(BasePictureContents.PICTURE_PASSED);
query.setDeleted(BasePictureContents.PICTRURE_NOT_DELETED);
int page = 1;
long count = 0;
int pageSize = Config.queryPicturePageSize;//1000
query.setPageSize(pageSize);
query.setCurrentPage(page);
PictureResult<List<PictureDO>> tmp = pictureReadServiceMedia.queryPicture(query);
if(tmp != null && tmp.isSuccess()){
while(tmp != null && tmp.isSuccess() && tmp.getModule() != null && tmp.getModule().size() <= Config.queryPicturePageSize){
tempList.addAll(tmp.getModule());
count += tmp.getModule().size();
query.setCurrentPage(++page);
if(tmp.getModule().size() < Config.queryPicturePageSize){
break;
}
tmp = pictureReadServiceMedia.queryPicture(query);
}
}
if(tmp == null || !tmp.isSuccess()){
return tmp;
}
result.setModule(tempList);
result.setSuccess(true);
result.setTotalCount(count);
return result;
}
如上代码,当取出的数据<1000的时候就跳出循环
这段改进代码本身没有问题,但是分页查询的代码为:
int pages = totalRowCount%fileTO.getPageSize() == 0 ? totalRowCount/fileTO.getPageSize():(totalRowCount/fileTO.getPageSize())+1;
fileTO.setPage(fileTO.getPage()< pages ? fileTO.getPage():pages);
当totalRowCount(用户的总记录数)%pagesize==0 的时候就会设置当前查询页码为最后一页。
也就是说2000条记录的时候
page=1 取1000条
page=2 取1000条
page=3时 发现totalRowCount%fileTO.getPageSize() == 0这时候设置page=2
page=4 同3
。。。。
这样下去就导致分页查询永远都跳不出循环
这次测试依赖的场景为边界值
是我自己粗细大意了,没有设计好用例。
预防措施???
我该怎么预防呢?