当代码变更遇上精准测试的总结

栏目: 编程工具 · 发布时间: 6年前

内容简介:敏捷模式下迭代频繁,回归测试时总是不知道变动的范围。Devlop 有的时候也不知道他改了哪些东西,影响到哪些节点,或者是很多人改的,彼此不知道。遇到有代码洁癖的,改了别人的代码,大家都不知道。通常情况是,要么测试范围定小了,遗漏了;要么测试范围过大,付出过多代价。每次回归,测试心里总没底,生怕漏了哪里。如何才能准确定位到变更范围呢?1.迭代更新快,人力有限2.多分支代码合入到主干分支,修改哪个文件哪个行,测试不可控。

Martech 代码变更遇上精细化测试的总结

需求背景:

敏捷模式下迭代频繁,回归测试时总是不知道变动的范围。Devlop 有的时候也不知道他改了哪些东西,影响到哪些节点,或者是很多人改的,彼此不知道。遇到有代码洁癖的,改了别人的代码,大家都不知道。通常情况是,要么测试范围定小了,遗漏了;要么测试范围过大,付出过多代价。每次回归,测试心里总没底,生怕漏了哪里。如何才能准确定位到变更范围呢?

项目测试过程的痛点:

1.迭代更新快,人力有限

2.多分支代码合入到主干分支,修改哪个文件哪个行,测试不可控。

3.代码更新影响哪些功能无感知

4.盲测,上线风险大

5.无法更加精准监控代码质量

6.不能做到高效精准,不可衡量ROI

解决方案:精细化测试探索

1流程图:

整体架构图

2录制自动化测试+phpcoverage 配合落地XDEBUG文件,解析覆盖率文件,生成文件-行号/函数-用例 映射关系表【phpcover_process.py】

XDEBUG_IP服务ip_DATE日期.txt 文件如下:

一个case涉及到的文件遍历明细
1个api->n个file->line_no集合->n个testcase集合
1个api->n个file->n个functionName->n个testcase集合

3基于git diff 针对版本号之间的差异化分析.【git_diff.py】

2.1过滤相关文件(phpunit,js,test文件,vendor公共库)

2.2记录当前代码分支版本号(分支-旧版本-新版本-系统-环境)

2.3针对新版本号和旧版本号 文件中行变化的明细入库(版本号-文件-旧行号-新行号-变更类型class fun)

diff 文件
项目-分支-旧版本-新版本-环境
版本号修改的文件(文件,旧行号,新行号,类,函数名,系统)

4生成命中的测试用例【down_accurate_case.py】

原理图:

待测json文件

生成需要执行的apiList 对应的caseId

5插桩-自动化测试(指定case_id顺序执行)-缺陷数量回写DB【accurate_runcase.py】

自动化测试执行日志
版本-执行的api-数据统计(执行数-发现bug数)
生成自动化测试报告

6统计精准测试效果数据统计【accurate_stat_image.py】

精准测试报告

7.最新跑完的测试覆盖率数据新增/更新/删除 文件-用例-行/函数 覆盖率关系表,形成闭环为下次精准测试做铺垫【phpcover_process.py】

总结

·精细化测试基于自动化覆盖率到达一定量的基础上去做比较有意义。

·通过这个探索能让我们更加深入的去了解被测系统及架构,在保障质量的前提下,在不断的版本迭代过程中更加高效、可靠、自信地制定合理的测试计划和执行我们的测试工作。

·被测系统 php 语言+ git代码管理,暂不包含js的精准性测试,测试解析语言:python。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程匠艺

编程匠艺

(美)古德利弗(Goodliffe, P.)著 / 韩江,陈玉译 / 电子工业出版社 / 2008-9 / 79.00元

如果你可以编写出合格的代码,但是想更进一步、创作出组织良好而且易于理解的代码,并希望成为一名真正的编程专家或提高现有的职业技能,那么《编程匠艺——编写卓越的代码》都会为你给出答案。本书的内容遍及编程的各个要素,如代码风格、变量命名、错误处理和安全性等。此外,本书还对一些更广泛的编程问题进行了探讨,如有效的团队合作、开发过程和文档编写,等等。本书各章的末尾均提供一些思考问题,这些问题回顾了各章中的一......一起来看看 《编程匠艺》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具