做测试的人,不仅害怕误报bug(说明自己技艺不精),而且更害怕漏测漏报bug(不仅说明自己技艺不精,而且后果更严重),其根本原因是做黑盒测试的人不知道开发人员改动了什么代码,影响到了什么。为此,有时候,开发人员改动几行代码,测试人员就不得不进行大规模的回归测试,劳神费力,效率低下。
有什么好的解决办法呢?
精准测试通过分析测试用例和代码之间的关系,建立起双向追溯机制,当开发人员提交新版本的时候,测试人员能知道代码改动了什么,影响到哪些,然后针对改动点和影响点,选用或补充适当的测试用例去测试。
用“精准测试”的方式,去除那些不必要的冗余的测试用例的执行。——这应该是精准测试给业界带来的最大价值。当然,精准测试的应用不仅仅是回归测试。
关于精准测试,百度百科上的定义是“精准测试是一套计算机测试辅助分析系统。精准测试的核心组件包含的软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析、测试用例自动生成系统,这些功能完整的构成了精准测试技术体系”。
在星云精准测试白皮书中,对精准测试定义是“由中国团队发起并原创完成测试理念设计和商用产品研发的全新测试技术。旨在测试用例执行过程中,全自动建立任意运行模式的软件系统的功能点与源代码之间高度的可视化追溯机制,获取功能点相关的代码覆盖率并进行精准回归等测试用例深度辅助分析算法的应用”。
精准测试的最重要的技术是测试用例和代码的双向追溯技术,通过该项技术,将测试和开发进行非常紧密的连接。但精准测试并不能取代人工设计用例、执行用例的过程,而是通过人工的测试执行过程深入到代码层的分析,在一定程度上改进人工测试所产生的各种问题。当然,精准测试还有一些其他的关键技术,如软件测试示波器、覆盖率分析、缺陷定位、测试用例聚类分析等。
那么,精准测试怎么实现测试用例和代码关联的呢?
通过采用精准测试工具,通过测试示波器,在执行测试用例的时候开启测试示波器,就可以将测试用例执行时运行过的代码与测试用例关联上。精准测试是基于代码级别的黑盒测试,并且可以达到白盒级的覆盖率测试。通过测试示波器技术,精准记录黑盒测试用例对应的代码逻辑,实现测试用例到代码逻辑的精准记录和双向追溯。
精准测试需要插桩吗?
为了保证源码安全性,精准测试通常采用了对代码进行插装的技术,插桩后打包的应用给测试人员,这杜绝了测试人员或用户触碰代码的机会。在测试分析过程中如需要源码,只需在本地有源码的环境中与测试数据所记录的数据库匹配,就能实现对接。
精准测试带来的收益有哪些?
1、能尽早、尽快发现缺陷和定位缺陷,减少缺陷修复成本
2、查缺补漏,能减少测试覆盖的缺漏
3、提高测试效率,避免了不必要的测试用例的执行
4、开发、测试能更好的协同,实现业务数据可追溯化和路径可视化。
精准测试的不足有哪些?
1、跨系统的影响分析难于实施。同一个系统中的链路,用精准测试确实可以精确的发现影响面,但对于多个系统之间的跨系统影响,精准测试难于覆盖。
2、不同系统之间数据依赖的影响,精准测试也无法解决。例如A系统的代码变更导致写入DB中的数据变化了,B系统根据A系统DB中的数据来执行业务流程,A系统对B系统的影响也难于用精准测试解决。
相关链接:
? 星云精准测试白皮书
? 你知道精准测试吗
? 精准测试实践
? 关于精准测试的一点思考
? 精准测试在实际测试工作中的适用性?
? 有赞精准测试实践
2020-12-4