2016-09-26架构
1 开始
2 第一个版本测试策略
2.1 测试范围以及和计划相比的误差
2.2 本版本的测试目标
2.3 须要重点关注的内容
2.4 测试用例的选择
2.5 测试执行顺序
2.6 试探性的测试策略——须要你们分工合做的地方
2.7 接收测试策略
2.8 回顾
3 跟踪测试执行
3.1 跟踪测试用例执行状况
3.2 每日缺陷跟踪
3.3 调整测试策略
4 版本质量评估
4.1 使用软件产品质量评估模型来进行质量评估
4.2 版本质量评估中的缺陷分析
4.3 调整测试策略
4.4 创建特性版本质量档案
5 后面的版本测试策略
5.1 回归测试策略
5.2 探索式测试策略
6 阶段质量评估(包括发布质量评估)
6.1 阶段质量评估项目
6.2 非测试用例发现缺陷的缘由分析
6.3 组合缺陷分析
6.4 遗留缺陷分析
6.5 临近发布时的缺陷修复策略
6.6 非必然重现bug的处理
6.7 总结测试
从如今开始,咱们的项目开始进入到测试执行阶段,咱们的软件测试架构师也要开始进入到测试执行策略的工做中了,如图1所示。ui
图1 制定测试执行策略编码
返回设计
此时软件测试架构师手上应该有一份“版本计划”和“测试计划”(分别由开发人员和测试人员输出)。对象
具体来讲,此时开发人员提供的“版本计划”应该是针对集成开发阶段的功能集成计划,包括划分了几个build、每一个build计划合入哪些功能,以及每一个build须要开发集成的时间。blog
“测试计划”是一个在集成测试、系统测试和验收测试分别须要测试多少个版本,以及每一个版本包含的测试时间的计划,见表8-1。接口
表1 测试计划表开发
“测试计划”中也有简单的测试策略,主要用于标记每一个版本的主要测试目标。
咱们将“版本计划”和“测试计划”合并在一块儿,就获得了咱们的研发计划全景图,如图2所示。
图2 研发计划全景图
总的来讲,软件测试架构师在测试阶段的工做,其实就是围绕图3所示的几个活动循环展开的。
图3 软件测试架构师在测试阶段的工做
而且在每一个测试分层结束的时候,软件测试架构师须要评估这个测试层级的质量目标是否达到,是否能够进入下一个层级的测试。在项目结束的时候,评估产品可否发布。
如今软件测试架构师要开始制定第一个版本测试策略了。因为测试策略是用来指导该如何进行测试执行的,测试策略的内容会很细、很具体。可是咱们依然能够按照四步测试策略制定法中目标—风险—流程—顺序的思路来制定版本测试策略。
在版本测试策略中,软件测试架构师首先要明确的就是测试范围。须要注意的是,这里的测试范围,不是指开发计划要合入哪些功能,而是指开发可以真正提交,而且测试可测的功能。
咱们仍是以俄罗斯方块心项目的build1为例,如图4所示
图4 俄罗斯方块心项目的build1
假设在俄罗斯方块心项目的build1中,软件测试架构师经过评估,接收进行测试,他能够在版本测试策略中按图5所示这样描述版本的测试范围和误差。
图5 版本的测试范围和误差
每个版本测试策略都须要描述版本的测试目标。
对和进行功能测试,发现单运行正常值和边界值方面的缺陷。
对(本轮测试实际提交的是
)只进行基本功能的验证,可以保证与
和
的集成测试就能够。
·对进行测试,发现
、
和
在多运行方面的缺陷。
以测试对象–测试方法–测试结果这样的方式来描述测试目标的好处是:强调了这个版本测试的要求,比数字指标更易于被测试团队理解和执行。
软件测试架构师须要在每一个版本测试策略中注明哪些是须要你们重点关注的内容。
咱们在制定整体测试策略的时候,已经根据质量目标和风险为产品的全部功能特性肯定了测试优先级。可是到了实际测试执行的时候,特别是在功能集成开发阶段,一些功能特性可能会被开发人员分为几回提交,这就须要软件测试架构师根据版本的实际状况更新功能特性的优先级,并在版本测试策略中向测试团队说明。
例如,在“俄罗斯方块心”项目的整体测试策略中功能特性的优先级列表见表2(为了便于后文叙述,我在列表中加入了“计划提交版本”列)。
表2 功能特性的优先级列表
在版本测试策略中,因为build1中的功能,实际提交的是
,咱们在build1中仅对它进行基本功能的验证测试,所以在build1中咱们能够考虑下降
的测试优先级。
咱们把测试用例分等级(level1~level?4)后,选择测试用例就变得简单多了。软件测试架构师能够根据版本的测试范围和测试目标,制定出须要选择哪些测试用例的策略,如表3所示。
表3 选择测试用例
不一样的被测对象,在同一个版本中的测试执行顺序可能会不一样。这就要求软件测试架构师,对不一样的被测对象当前的质量状况,有比较好的把握能力,而后根据质量状况来肯定不一样的测试执行顺序,能够遵循以下原则:
来看一个相关的示例,见表4。
表4 肯定测试执行顺序示例
除此以外,在版本执行策略中再强调一下阶段测试策略中的测试执行策略也是有必要的:
“接收测试”是指开发人员将版本转给测试人员时(图6),测试人员先对这个版本进行一次测试,确认版本没有阻塞测试的问题,可以按照测试策略完成测试。
图6 版本转给测试人员
接收测试有两种结果:“经过”和“不经过”。判断阶段测试是否经过的标准只有一个,就是“是否会阻塞后面的测试”。
具体如图7所示。
图7 接收测试示意图
到目前为止,咱们已完成了第一个版本测试策略的制定。让咱们一块儿来回顾一下,在版本测试策略中须要考虑的主要内容:
软件测试架构师跟踪测试执行的目的有3个:
在版本测试时,不少人都会关注测试用例的执行状况,如测试经理、项目经理等。测试用例的进度、测试用例的结果(包括测试用例执行的经过率、失败率等)是他们主要关注的内容,咱们可使用表5~表6所示来收集和展现这些信息。
表5 按照每一个版本统计的测试用例的执行状况表
表6 当前项目的总体进度表
这些表中的信息对软件测试架构师而言一样重要。要确保测试团队是按照测试策略来执行测试的,须要保证如下三点:
只要咱们选择的测试用例和测试策略是一致的,就能保证第一点。对软件测试架构师来讲,须要在测试执行时保证第二点和第三点。显然这方面的信息并不能从表中的内容来直接得到,还须要软件测试架构师对表中的内容再进行一些分析和加工。
软件测试架构师能够经过按照每一个版本统计的测试用例的执行状况表和测试用例执行状况详表来分析测试团队的测试执行顺序是否和测试策略相符。
1)测试团队是否按照特性的优先级顺序来执行测试用例
2)测试团队是否按照测试策略中的测试方法、测试顺序来执行测试用例
“缺陷”是测试的结果。对软件测试架构师而言,天天跟踪缺陷很是重要——由于他须要实时关注测试中的这几个问题:
在版本测试中,判断“哪些缺陷必须在本版本中解决”的标准只有一个,就是“会不会对后续的测试形成阻塞”。
图8 几个概念之间的关系
换句话说,除了那些在版本中必须解决的缺陷外,咱们还须要根据缺陷的严重性和缺陷的修改状况来选择一些缺陷,在本版本中优先解决:
1)预估“拐点”会在哪一个版本出现
图9 预估缺陷趋势图
分析:
2)判断当前版本的缺陷趋势是否正常
图10 调整测试策略的总体思路
但因为版本质量评估的评估对象是版本,咱们的评估方法和关注重点仍是会与阶段的质量评估或发布时的质量评估有所不一样。
图11 复制质量评估模型
图12 功能有误差的状况
咱们每每会发现,除了这些在测试以前就能发现的误差以外,还有不少误差是在测试过程才能逐渐被发现的,如:
(1)需求理解方的错误致使功能实现上的错误。如图13所示。
图13 功能实现错误
(2)由于种种缘由,该功能对应的需求并无提交完,如图14所示。
图14 需求未提交完
不管是上述哪一种状况,这些问题都只有在测试过程当中才会被逐渐发现。这些问题在测试过程当作bug记录。这些缺陷每每因为不是当前版最紧急、必须解决的缺陷,而很容易被搁置下来,而后就被你们遗忘了。直到这些问题变得严重影响后续功能的集成,或是到了产品要发布的时候,咱们才发现一些看起来“细枝末节”的功能模块尚未被开发。
所以,对软件测试架构师而言,在版本质量评估时对这类问题再进行梳理是很是有必要的。咱们就只须要将这类问题从bug报告中筛选出来,并按期跟踪这些bug,关注它们的修复计划就能够了。对那些开发人员和测试人员争议较大、须要SE再进行澄清的需求,咱们也须要进行记录(至少须要记录当前的进展),以便咱们在结论肯定后,第一时间知道该如何进行下一步的处理。
总的来讲,在版本质量评估时,需求实现状况应该包含的内容如图15所示。
图15 需求实现状况包含的内容
举例:“俄罗斯方块心”项目build1版本质量评估示例
在“俄罗斯方块心”build1中,需求和功能实现的误差为:
(1)功能在build1提交时为
,完整的功能将在build2中提交。
(2)功能的需求未彻底开发完,详见bug0003二、bug00035。
(3)开发人员和测试人员对的需求实现存在争议(开发人员实际开发的功能为
),通过SE对此功能需求进行再次澄清后,发现是开发人员在需求理解上存在一些误解,须要在build2中更新此功能,详见bug00047。
实际上,咱们在跟踪测试执行的过程当中,已经对测试过程,包括测试用例、测试方法和测试投入进行了跟踪分析,在版本质量评估时,咱们能够对版本的“测试过程”再进行回顾,总结经验教训。除此以外,在版本质量评估中,还有一项重要工做,就是对多个版本的测试用例执行状况进行分析。整个测试过程分析如图8-30所示。
图16 测试过程分析
1)测试用例的经过率
在版本质量评估时,咱们能够对测试用例首次执行经过率、累积执行经过率和累积执行率进行统计,见表8-21。
表7 测试用例经过率统计结果
质量指标是否有效,和咱们在什么时候进行评估、评估对象的粒度、评估的目的息息相关。若是咱们只是在版本发布的时候、在系统的层面来统计各类质量指标,据此给出产品可否发布的结论,确实不能让人信服。但若是咱们可以在每一个版本都统计相关的质量指标,评估对象的粒度也细化到功能特性,将“质量指标”做为“质量之尺”,让你们知道咱们当前的质量离咱们的目标还有多远,咱们还须要作怎样努力,进行怎样调整,才能达到咱们最终的质量目标,这样进行质量评估,才真正有用,而且可以被你们信服。
2)测试用例在多个版本中的测试结果
咱们在进行测试用例累积经过率的统计时,并不能只关注50%、70%这样的统计数字,还须要注意分析测试用例在多个版本中的测试结果。
表8 测试用例在多个版本中的测试结果
咱们对每一个build的测试策略说明以下:
测试用例4”的测试结果,在build2中为“经过”,在build3中为“失败”,出现了反复。是什么缘由致使测试用例的执行结果出现了反复?
比较常见的缘由有新功能的合入对旧功能形成了影响或缺陷修改引入。
对这两种状况,软件测试架构师均可以从“开发修改”和“功能交互”的角度来有针对性地选择测试范围,由此来肯定build4的回归测试策略:对已经执行“经过”的“测试用例1”“测试用例2”和“测试用例6”,在build4中是否须要再进行回归测试。
每日缺陷跟踪没有分析过的内容包括缺陷密度、缺陷年龄(在每日缺陷跟踪中只关注了缺陷修改引入方面)和缺陷触发因素分析。
软件测试架构师在版本质量评估中进行缺陷分析,须要重点关注以下几个问题:
图17 增长版本质量评估
一个产品可能会有不少功能特性,对软件测试架构师而言,可能没法保证对每一个功能特性都按照上述过程进行质量评估。因此对一个测试团队而言,各个测试负责人一块儿来创建一个特性版本质量档案,在档案中记录各个功能特性在每一个版本中的质量状况,是一个不错的选择。
产品的特性版本质量档案,至少须要包含以下内容:
最后测试责任人还能够根据上面的状况,对产品功能特性当前的质量进行评估,评估其是否达到质量要求,以及和质量要求的主要差距在哪里,并据此总结出后续的测试建议。
在实际操做时,测试责任人能够直接在以前制定的整体测试策略的基础之上来创建特性版本质量档案,见表9。
表9 特性版本质量档案
到目前为止,咱们的软件测试架构师已经完成了制定测试策略—跟踪测试执行—质量评估这样的一个完整循环。可是测试项目尚未结束,紧接着咱们又会进入到下一个循环。
和第一个版本相比,后面的版本会考虑到实际的产品研发状况和测试状况,而对测试策略进行调整,所以,后面版本的测试策略除了考虑咱们在8.2.8节中总结的内容外,还须要增长回归测试策略和探索式测试策略的内容——本章咱们未来详细讨论须要如何制定它们。
回归测试是一种“确认”性质的测试,测试目标有:
在项目不一样的阶段,回归测试的目标会有所侧重,以“俄罗斯方块心”项目为例,回归测试在不一样阶段的重点如图18所示。
图18 回归测试的重点
说明:
咱们将缺陷按照功能和非功能、是否有“用户可见的输入输出接口”分为三类,如图19所示。
图19 缺陷的三类
较难于验证的是那些“底层或中间层类的缺陷”。因为它们位于系统的底层或中间层,不少功能均可能会调用它们,修改它们每每会影响较多的功能,还可能会影响系统的性能、可靠性等非功能。对这类问题,可使用以下策略:
表10 不一样阶段回归测试用例选择
图20 “俄罗斯方块心”项目的测试
这个策略最大的坏处是缺陷可能会在探索测试阶段再集中爆发一次,使得缺陷迟迟不能收敛,形成测试项目延期。
图21 探索式测试
这个策略探索式测试会使得集成测试阶段变长。
图22 与图21相比的结果
在4.5节中为你们介绍了不少探索式测试方法。咱们能够大体按照以下顺序来选择探索式测试方法:
图23 流程图
从前面的章节能够得知咱们在跟踪测试执行和版本质量评估中一直在进行质量评估。这使得质量评估从一个阶段性的测试活动(不少测试团队可能只在版本快要发布的时候才开始进行质量评估),变成了天天、每一个版本都在进行的活动,一旦发现了质量问题,就能在过程当中实时调整测试策略,使得最后产品可以达到发布的质量目标。
虽然跟踪测试执行、版本质量评估和阶段质量评估都是根据质量评估模型在进行质量评估,可是它们各自的侧重点仍是有所不一样的。
表11 质量评估项目总结
一个思路是,将质量目标划分为重要的、必须达成的质量目标和通常性的质量目标(后文咱们统一称那些重要的、必须达成的质量目标为质量红线)。
表12 某产品质量红线
表13 分类参考
表14 测试团队分析参考模板
图24 评估结果的决定
原则上,知足下述条件的缺陷不该该成为遗留缺陷:
咱们在肯定遗留缺陷的过程当中,一方面,因为不一样人员对缺陷遗留的标准可能会有差异,不免又会临时决定要修改合入一些缺陷。另外一方面,越到临近发布的时候,越须要控制缺陷修复的数量。
在进行遗留缺陷分析时,咱们讨论了缺陷发生的几率,对那些非必然重现的bug(指“无规律重现”和“没法重现”的bug),也须要按期进行跟踪和处理。
软件测试架构师和测试经理、开发表明等在测试团队、开发团队中对非必然重现的问题达成共识:
对最后一点,那些一直未能复现的bug,须要软件测试架构师按期将这些bug汇总,选择优先级高的缺陷,组织开发人员和测试人员专门投入到复现问题,若是通过这样的专门复现依然不能复现,能够下降问题的优先级,直到bug的优先级降至最低,该bug才能够关闭。
在项目前期,对非必然重现bug的跟踪周期能够稍长一些,越到项目后期,越要增强对非必然重现bug的跟踪、复现工做。
图25 发布阶段