第一部分 精准测试概述
一、背景
公司慢慢的进入到敏捷开发模式,在此模式下,迭代频繁,回归测试时,总不知道变更的地方在哪里?有时知道修改的地方在哪里,但却不知道影响的范围有多大,通常情况,要么测试范围定小了,遗漏了,要么测试范围过大,付出过多的代价,每次回归,测试心里总是没底气,生怕漏了哪里,每次上线都是一次惊心动魄的实验,如何才能准确定位到变更的范围呢?故此引出精准测试概念;
二、 可行性研究结论
1、 通过是这个探索能让我们更加深入的去了解被测系统及架构,在保障质量的前提下,在不断的版本迭代过程中更加高效、可靠、自信地制定合理的测试计划和执行我们的测试工作。
2、 精准测试对于企业来说通过测试人员的管理,中后期的测试效率以及不依赖个人能力等特点,大大降低了企业测试团队成本,精准测试通过一系列技术手段在不改变原有的测试流程大幅度降低测试人员要求,并在中后期的测试效率上给予大幅度的帮助提高质量,这使得企业成本的核心公式计算中发生了转变。
3、 精准测试为企业带来的是明确的、数字化的对于产品质量的信心,而并不是对于团队的模糊的基于能力的、经验的判断。
三、存在的问题及建议
1、 精准测试基于自动化覆盖率到达一定数量的基础上去做比较有意义。
2、 精准测试的核心需求来自于对软件质量的较高要求,如果是需求响应快,而且产品发布成本低,快速试错的小流量新功能,对发布质量并不太敏感,则不适合精准测试,如果需要准确把握用户的需求,需要进行系统测试,通常采用用户测试的方式对项目进行验收,对项目的上线质量比较敏感,则使用精准测试的产出比较高!
第二部分精准测试发起过程及提出的理由
一、背景详解
公司经过了如下阶段:
第一阶段,公司刚起步,产品初创,需要先把东西做出来获得市场的初步验证,或获得投资人的认可。这个阶段,测试团队基本属于手工测试,人数也没有那么多;
第二阶段,公司开始快速扩张,不计研发成本,每天都在不断地招聘测试人员,业务快速扩充,业务需求多时间紧,测试也没有时间沉淀;
第三阶段,经过快速扩张后开始稳定运作,成本开始被考虑。业务线基本稳定,测试开始沉淀一些流程、技能、方法等来提高测试效率,比如自动化平台建立,接口自动化的接入,性能、安全方面的沉淀,都一步一步的稳定建立;
现在公司来到了第三阶段,慢慢的会进入第四阶段,开始严格控制各个环节的成本,测试的工作也会往上转移,自动化代码的质量保证,开发代码的内部逻辑深入,覆盖率的分析等等,不管如何深入,还是会碰到如下痛点:
1、 敏捷迭代更新快,人力有限;
2、 多分支代码合并到主分支,修改哪个文件哪个行,测试不可控;
3、代码更新影响哪些功能无感知;
4、盲测,上线风险大;
5、 无法更加精准监控代码质量;
6、不能做到高效精准,不可衡量roi;
故此,提出“精准测试”概念,一种可追溯的软件测试技术;
二、 精准测试核心及关键特性
首先概述下精准测试概念,从字面理解,精准就是非常准确。非常准确需要用数字说话。
在测试领域,精准测试是一套计算机测试辅助分析系统,对测试过程的活动进行监控,将采集到的监控数据进行分析,得到精准的量化数据,使用这些量化数据进行质量评价,利用这些分析数据可以促进测试过程的不断完善,形成度量及分析闭环。精准测试就是一种可追溯的软件测试技术。
1、精准测试核心
精准测试的核心思想就是使用非常精确和智能的软件来解决软件测试的问题,从根本上引领从经验型方法向技术型方法的转型。质量的评估不再靠经验,而是通过精准的数据来判定。
精准测试没有改变传统的软件测试方法,区别只在于,由软件去采集测试过程执行的代码逻辑及测试数据的过程,自动建立测试用例与程序代码之间的逻辑关系。在测试过程加入软件的采集过程,可以形成正向和逆向的追溯。
通过正向追溯,开发人员可以看到测试人员执行用例的代码细节,以方便进行缺陷的修复,测试数据可以直接为开发调试提供依据,快速定位并修复缺陷。
通过逆向追溯,测试人员通过修改的源代码快速确定测试用例的范围,极大减少回归测试的盲目性和工作量,快速修订测试用例,达到测试覆盖率最大化。
第三部分精准测试技术方案
对于精准测试方案,其核心内容是在知识库里包含着测试用例和开发代码的关联关系,代码改动后,推荐改动关联的相应测试用例,争取做到,改哪里测哪里,达到精准测试境界;
以下是针对精准测试流程及细节的方案思考,从大流程到小流程小细节的顺序进行阐述
一、产品研发流程:
二、精准测试系统流程图
(2-1)差异化分析流程图
(2-2)测试分析流程图
建立知识库
知识库数据库大概方案:
获取方法调用链动态工具阐述,(暂时未进行工具的详细分析):
插桩方式工具
1、源代码插桩:GCT等
2、中间代码插桩:JACOCO\EMMA等
3、二进制代码插桩:XDebug等
(2-3)用例执行流程图
(2-4)质量评估流程图
第四部分 总结
精准测试的核心是一自动化的软件对软件测试过程数据进行记录,从而实现精准测试用例推荐。通过精准测试,我们可以实现软件质量的实时监控,回归用例的智能筛选,测试覆盖率的精准分析以及软件缺陷的快速定位。
但精准测试并非适用于所有的软件项目类型,互联网应用、项目级应用和产品级应用,对软件质量的需求,也就是对精准测试的要求是逐渐递增的。
精准测试的诞生,核心原因是对于软件质量的要求。无论是项目验收公信力手段、测试效率管控、测试与开发人员的协同以及复杂的分布式架构带来的挑战,无不围绕着对软件质量的需求满足。而软件质量的最终价值,是用户体验的提升。对精准测试的实现过程,实际上也是软件测试过程数字化的一种体现。精准测试通过提升软件质量,改善了用户体验,从而赋予企业数字化转型更可靠的软件能力。
网友评论