网站首页 > 精选文章 / 正文
最近一直在思考如何提高测试效率,又要保证测试不遗漏,于是练习精准测试,边学习边记录,本文仅个人实践所得,尽管记录时经过仔细斟酌,仍有不足之处欢迎你们参与讨论。
一、什么是精准测试?
通常呢,针对开发的代码变更处以及关联的地方进行测试,我们称之为精准测试。百度查到,精准测试的核心特性是在黑盒测试过程中,由计算机软件去采集程序执行逻辑以及其他测试数据的过程,完成测试用例和代码的自动关联,将功能测试直接映射到代码层。
精准测试的提出,实现了测试用例和代码的双向追溯,可以理解为这是一种把传统的黑盒测试与白盒测试相结合的模式,能引导测试有针对性的完善用例。
实施精准测试需要结合源代码变更分析的技术手段,以提高测试的效率和准确性。与传统测试相比,精准测试通过智能化的测试指导,显著提高了测试的质量和效率。
下面以参与的两个项目需求测试为引子,来初步探讨精准测试之道。
二、子流程调整需求测试
本次需求是对五家单位的审核增加子流程分支判断,单位总部走原分支A,下属单位走分支B。
分析需求,画出简易流程图如下:
进行测试用例编写:
查询数据表获取测试账号:
SELECT company_name,create_user
FROM apply_Table
where company_name like '%单位%';
得到十个申请人的测试账号。
对五家单位总部及下属单位,共计十个测试流程一一进行了测试,借用postman工具快速新建申请表单,简化了测试过程,但仍未达到精准测试的目的。
小结:
测试结束后进行复盘,在流程中心查看迁移条件可以得出,本次需求调整了五家单位,首先检查流程变量表达式中单位个数及单位ID是否符合要求,可以在冒烟测试阶段更精准地发现bug。
然后从这五家单位中挑出一家进行重点测试正、反向审核流程:
·如果一家单位没有问题,则可以结束测试;
· 如果一家单位有问题,则能推测剩余四家有问题的概率较大,复现bug并反馈。
三、删除需求精准测试尝试
由于需求就一句话“支持删除”,故而尝试从代码获取影响范围。
(一)从代码中获取影响范围
1.ApplyController.java
@ApiOperation("删除")
@GetMapping("/forcedDelByIdList")
public Result forcedDelByIdList(@RequestParam("id") String id,@RequestParam("type") String type){
return ApplyService.forcedDelByIdList(id,type);
}
可判断影响范围在申请模块。
2.ApplyParam.java
@Data
public class ApplyParam {
@ApiModelProperty(value = "类型1:申请2:发通知3:定计划")
private String type;
@ApiModelProperty(value = "申请ID")
private List<String> IdList;
}
再根据关联函数,判断出涉及三种删除类型。
3.ApplyVO.java
@ApiModelProperty(value = "审核状态 1待提交,2审核中,3审核通过")
private Integer Status;
private String itemNum;
判断出影响范围涉及到表单状态。
4.ApplyMapper.java
public interface ApplyMapper extends BaseMapper<Apply> {
List<ApplyVO> page(ApplyQueryParam ApplyQueryParam);
List<ApplyVO> companyPage(ApplyQueryParam ApplyQueryParam);
/**
* 根据类型和分组统计数量
* @param statistiaram
*/
List<YearPlanExecuteVo> selectApplyCountGroupByTypeAndUnit(Statistiaram statistiaram);
List<InfoVO> selectList(@Param("param") StatisticsVO param);
ApplyVO apple(@Param("id") String id);
}
可判断影响范围还有统计功能。
5.InformationMapper.java
@Mapper
public interface InformationMapper extends BaseMapper<MotifInformation> {
}
可判断影响范围还在通知模块。
6.SendToNotification.java
@ApiModelProperty(value = "其他编码")
private String ggGroupCode;
判断出影响范围还涉及到外接模块。
7.ApplyServiceImpl.java
@Transactional(rollbackFor = Exception.class)
public Result forcedDelByIdList(String id,String forceType){
String authorization = baseUtils.getAuthorization();
UserPO userPO = userServiceFeignClient.getCurrentLoginedUser(authorization);
//判断角色
List<RolePO> loginUserRoles = userServiceFeignClient.getLoginUserRoles(userPO.getId(),authorization);
boolean forcedDelAttendant = loginUserRoles.stream().anyMatch(item -> item.getCode().equals("force-delete"));
if(!forcedDelAttendant){
return Result.error("无权限,请联系管理员");
}
if(type > 1){
Notification Notification = (Notification) map.get("Notification").get("Notification");
if(Notification != null){
String operType = "del";
NotificationParam param = (NotificationParam)map.get("Notification").get("param");
SendToNotification sendToNotification = DirectorServiceImpl.convertNotification(param, Notification.getId(), operType);
}
Apply Apply = (Apply) map.get("Apply").get("Apply");
this.removeById(Apply.getId());
return Result.success();
}
if(Plan != null)
Plan.setDelFlag(1);
PlanMap.put("Plan",Plan);
}
}catch (Exception e){
log.error("获取删除资源错误!");
}
}else {
HashMap<String,Object> hashMap = new HashMap<>();
hashMap.put("date_type_log","审核完或已定计划不可删除");
map.put("dateTypeLog",hashMap);
}
}
public List<InstanceVO> clearingProcess(String Id){
List<InstanceVO> InstanceVO = new ArrayList<>();
try {
CommonResult res = sServiceFeignClient.getChildProcessesByBusiness(Id,baseUtils.getAuthorization());
String code = JSON.toJSONString(res.get("code"));
if(code.equals("200")){
InstanceVO = JSON.parseArray(JSON.toJSONString(res.get("data")),InstanceVO.class);
}
}catch (Exception e){
e.printStackTrace();
}
return InstanceVO;
}
判断出删除逻辑:
·单据状态=已完成,则不可删除
· 单据已定计划,则不可删除
· 删除单据,同时删除业务流程(主流程、子流程、并行流程)
· 删除单据和关联的通知,同时删除外接系统中对应的数据
· 删除权限
(二)分析需求后编写测试方案
测试用例的编写笔者就不在这列出了,从测试方案中加以充实即可。
四、小结
通过初步的代码修改点分析,可以较快较准确地划出本次需求的影响范围,为测试用例的编写和执行提供指南。当然更深入的技术笔者还在继续探索中,后续再聊,欢迎大家一起分享和交流。
文末了,我邀请你进入我们的软件测试学习交流群,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,了解测试行业的最新趋势,助你快速进阶Python自动化测试/测试开发,稳住当前职位同时走向高薪之路。
最后:
1)关注+私信回复:“测试”,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!
2)关注+私信回复:"入群" 就可以邀请你进入软件测试群学习交流~~
Tags:@apioperation
猜你喜欢
- 2025-01-13 解决spirngBoot一个非常坑的问题
- 2025-01-13 关于微服务的RPC远程调用,你还有不理解的地方吗?
- 2025-01-13 验证码模式登录方案设计
- 2025-01-13 这么优秀的开源脚手架项目,我不允许还有人不知道
- 2025-01-13 苍穹外卖-01项目概述、环境搭建
- 2025-01-13 线上调试BUG,就用阿里的这款诊断神器
- 2025-01-13 Swagger(丝袜哥) 快速入门
- 2025-01-13 我带的实习生竟然把图片直接存到了服务器上!崩溃了
- 2025-01-13 百度天工物联网平台实践
- 2025-01-13 什么是Swagger(Api接口管理)?如何运用(代码实现)