软件测试用例对于测试进度的可控性建议——理论篇

从接触软件测试工作开始,相信所有人都希望减少软件测试后漏测的问题(tester希望,开发经理希望,老板希望),但事实是一直以来都没有很好的真正解决产品漏测的问题以及如何减少功能组合爆炸的问题。过去几年因为工作任务的缘故,我在历经几年自动化测试、系统测试和缺陷预防工作后,又回到测试的本源开始思考功能缺陷的测试应该如何做好?从2011年版本到2012年版本直到2013年终于优化完善出了自己的功能测试方法体系,没想到居然在软件测试行业从业近10年时才搞明白了10年前就开始的问题。过去的5年通过实践补充了自己在缺陷预防领域的技能和认知、可测试性设计领域的技能和认知、产品可靠性测试(稳定性测试)领域的技能和认知,直到2年前才开始真正介入功能测试方法改进。最后才意识到原来我们不少漏测的问题,不是性能测试可以发现的,也不是稳定性测试可以发现的,更不是自动化测试能发现的,现有的功能测试用例及方法也发现不了--多功能组合下和不同用户操作序列下才发生的bug。怎么办?以及如何解决组合爆炸的问题--我们一直都在回避。如何让我们投入测试时间最多的功能测试用例该多的地方多,该少的地方少?搞了半天,原来测试领域最基本的工作都没做好,然后就开始疯狂追踪上层建筑,或是简单实行拿来主义拿来一些工具或方法,虽然所拿来的这些工具或方法对局部的确是有优化作用,但你知道自己的全局全貌在哪里吗?知道全部漏测的测试根因在哪里吗(而不是产品技术根因), 如果不知道则容易陷入盲目乐观与更加保守的状态。听说有个工具或方法能发现很多bug--于是开始盲目乐观引入,希望能从此解决完所有测试漏测的问题,结果确实能发现一部分问题但是还是有不少漏测,结果--开始更加保守,对新工具和新方法不再相信和信任,从此对漏测问题放在一边交给其他人去关心。那我就是那位被迫要去关心和解决漏测问题的非主流测试工程师,幸运的是经过过去几年的思考与学习,如今随着个人稳定性测试模型和功能测试模型方法体系的完善,终于让我有信心有知识去应对任何软件的漏测问题, 可以阶段性的结束对漏测问题领域的专注思考,投入更多精力于其他测试技术和方法体系了, 故写此文阶段性纪念下。下面分享一部分如何减少功能缺陷漏测的干货吧,与各位共勉:

  功能缺陷的测试方法流程

  第一步:功能测试分析 —功能测试阶段

  目的:提取功能测试对象

  准备功能测试数据

  减少因为功能测试对象遗漏的漏测

  第二步:功能验证—功能测试阶段

  目的:检查功能是否已基本正确实现

  测试方法:

  ● 基于生命期:对象创建 -使用- 销毁 的验证

  ● 数据测试方法:静态数据测试方法和动态数据测试方法 (边界值和数据等价类、7因子数据类型)

  减少功能的基本逻辑错误漏测和数据处理错误的漏测

  第三步:单功能内测试 —功能测试阶段

  目的:发现功能是否存在分支情况、异常情况处理不足的缺陷

  测试方法:

  ● 功能内子功能的场景插入法

  ● 重复法设计

  ● 反叛法设计

  ● 取消法设计

  ● 测一送一法设计

  ● 场景删除法设计

  减少功能内代码的漏测

第四步:多功能间组合测试 —系统测试阶段的用户场景测试

  目的:发现功能间配合工作时存在的缺陷

  测试方法

  ● 基于用户场景的测试 (Scenario Test)

  减少多功能间组合错误的漏测

  为什么需要用户场景的测试模型?

  补充多个功能组合的测试用例解决传统正交组合测试后3个及以上功能组合缺陷的漏测

  通过常见用户操作序列的场景设计解决数学式穷尽组合爆炸的问题减少组合测试时间和成本,获得最佳投入产出比的组合测试

  用户场景测试的测试步骤是不同角色用户最常用的基本操作序列

  用户场景的探索测试是不同角色用户非常用的操作序列

  用户场景的探索测试

  在用户场景测试用例执行结束后 , 再用专项时间进行多功能组合的探索测试,补充用户场景测试用例之外的用户操作序列,提高用户操作序列的覆盖面。因为用户最常用的操作序列已在用户场景测试用例中覆盖,但又不能对非常规的操作序列不进行测试, 因此将非常规的操作序列的测试与测试成本进行一个平衡,通过专项的探索测试时间来补充这部分的测试。

  在补充用户操作序列的探索测试中可用的探索测试方法有:

  收藏家法

  同时开启多个功能,同时工作。

  技术根因

  同时多个功能交互容易出现资源竞争处理的错误。

  地标法

  改变一系列规定顺序操作的先后顺序。

  技术根因

  在实际场景中用户因为对操作不熟悉难免会操作的步骤不是标准的步骤顺序,而程序实现时对于这些改变了操作顺序的操作步骤缺乏容错处理则会出现程序错误。

  混票法

  把最不常用的功能与常用功能进行组合

  技术根因

  在功能测试阶段由于时间及优先级限制,测试人员习惯把常用功能进行组合测试,时间一久就容易忘掉不常用功能与常用功能的组合,而用户的使用习惯中也一定会出现不常用功能与常用功能一起组合的场景

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-07-28 15:19:36

软件测试用例对于测试进度的可控性建议——理论篇的相关文章

浅析软件测试用例管理

2.2 测试用例执行结果分析 测试用例执行结果可以从覆盖率.执行率.通过率等几个方面进行分析和考察.测试用例覆盖率是指测试用例覆盖的功能与测试需求功能的比值:测试用例执行率是指已执行的测试用例数与测试用例总数的比值:测试用例通过率是指成功执行的测试用例数与测试用例总数的比值. 测试用例的覆盖率需要达到100%,也就是说,测试用例必须覆盖全部的测试需求,否则测试用例的设计则是不全面的,无法保证测试质量,需要补充或者重新设计相应测试用例.测试用例执行率是衡量测试效率的因素,一般说来,在测试完成时测试

答读者问(7):有关实习、毕业论文及软件开发和测试的关系等问题

        最近收到一位研究生朋友的邮件,让我想到自己研究生毕业之前,也曾有过很多的疑惑,希望得到过来人的解答.互联网不仅是我们最好的老师,同时也是最好的桥梁.我们都要感谢并善于利用它.         闲话不说,言归正传.邮件原文如下:         周前辈,您好         我是XXX研究生,我叫XXX.专业是信息与通信工程.现在研二,过了暑假马上就研三了.我在CSDN上无意间看到您的一些文章,写的很好,感触很多.所以就一直在关注您!        下面我简单说下我的情况,我本科和

手机软件测试用例设计实践

一.测试用例设计概述 测试伴随在整个手机软件开发的各个阶段中,测试质量的高低直接关系到手机软件的可用性,友好性,可靠性.可以说,测试环节是手机软件开发的重要环节,是整个开发过程的"中枢神经".同时,测试用例的设计在测试过程中是非常重要的一个环节,是重中之重. 一般来说,设计测试用例应该考虑如下几方面: 1)有效性:测试用例是测试人员测试过程中的重要参考依据.不同的测试人员依据相同的测试用例所得到的输出应该是一致的. 2)可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,

软件测试用例设计方法

前面有曰:测试结果的准确性取决于测试用例的设计,故测试用例设计显得尤为重要.今天就好好梳理下,测试用例的相关内容. 重要性:Test Case贯穿整个测试执行过程,分两大类:数值计算类和数据处理类 概述:编写一组前提条件,输入,执行条件,预期结果的组合方案.完成对某个特定需求或目标的测试,体现测试方案,方法,技术和策略的文档. 1.什么是测试用例,为什么要编写? 测试用例就是编写一组条件,输入,执行条件,预期结果的并完成对特定需求或目标的测试,体现测试方案,方法,技术和策略的文档. 由于测试用例

《移动App测试实战》——1.3 测试进度管理

1.3 测试进度管理 在一个较大型的项目中,通常运作的方式是按照子项目或者功能模块来进行分工,每个功能模块有具体对应的设计.产品.运营.开发和测试人员.结合实际的项目情况,如果功能较大可能上面一个角色有多个人一起参与,反之也可能一个人同时负责多个功能模块.不管是哪种情况,实际项目在测试进行中,以上不同的角色,以及对应的各个团队leader,甚至公司或部门管理层,都希望及时看到工作的进展,以及遇到的问题和风险.而另一个方面,互联网产品的测试周期都比较短,一个模块的整个测试周期只有几天是非常常见的,

软件测试用例的认识误区

软件测试用例是为了有效发现软件缺陷而编写的包含测试目的.测试步骤.期望测试结果的特定集合.正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性. 在实际软件项目测试过程中,由于对软件测试用例的作用和设计方法的理解不同,测试人员(特别是刚从事软件测试的新人)对软件测试用例存在不少错误的认识,给实际软件测试带来了负面影响,本文对这些认识误区进行列举和剖析. 误区之一:测试输入数据设计方法等同于测试用例设计方法 现在一些测试书籍和文章中讲到软件测试用例的设计方

由点到线,关注测试进度

作为测试人员,以前的我们每天参照图1来了解手上还有多少活. 图1:等待测试的用户故事个数 存在的问题: (1)只有故事数量导致我们看不到故事后面工作量的变化.例如,今天测试通过,关闭了3个小的用户故事,但同时今天开发提交了3个大的用户故事.从数量上看,昨天和今天的待完成工作是一样的.在这张图表的暗示下,我们有时要刻意地拒绝优先测试那些比较简单的故事以便让这个数字快速变小的诱惑. (2)只看目前手头还有多少未完成的工作无法让人产生太多的成就感或者紧迫感.因为伴随着每日构建,待测试的故事数此消彼长,

如何有效评估软件测试用例的质量?

软件测试用例质量的评估,可以考虑下面3个方面的因素: 第一,根据测试用例的形式评估其质量,主要包括: 1)测试用例与需求规格说明中需求条目的可追溯性,例如:我们要求每个需求条目至少有1个测试用例与之对应.目的是为了评估测试的需求覆盖率,以及分析需求发生变更的时候,对测试修改工作的影响程度: 2)测试用例有无明确的期望结果.通常来说,测试用例的每个执行步骤,都应该明确描述期望的结果,以保证测试人员可以与测试实际结果进行比较,并分析是否需要提交缺陷报告,或者修改测试用例. 3)是否满足公司内部定义的

浅谈软件项目管理之测试

笔者从事软件行业相关工作将近十年,其中与测试相关时间有7年之久,现浅谈软件项目管理中测试的必要性,供大家参考. 一.测试的必要性 为什么需要测试,那是因为由于分工的精细化,软件开发必须经历客户.需求.设计.开发多个环节.为了保证最终的结果符合要求,上下游是需要确认的. 用户告诉我们:我需要什么?软件企业需要在理解正确.表达正确的情况下完成需求规则说明书,把客户的原始需求转变为IT需求,表达出能够提供什么 需求的下一环节是设计,设计主要是要要说清楚:我要让软件做什么.需要与前一环节确认理解正确了.