如何防止低级问题导致的质量事故

简介: 如何防止低级问题导致的质量事故2017-02-04 杨晓慧 测试人杨晓慧这里说的低级问题是指:不需要特殊条件,就是在用户进行正常业务的基本操作时,由于缺陷导致业务操作无法完成。例如:正常安装或升级过程中出错;新研发特性的基本功能有错;升级后原本正常使用的功能出错;产品在正常使用中数次崩溃;正常使用中有导致用户有直接的经济损失或信息泄露的错误。
如何防止低级问题导致的质量事故
2017-02-04 杨晓慧 测试人杨晓慧
这里说的低级问题是指:不需要特殊条件,就是在用户进行正常业务的基本操作时,由于缺陷导致业务操作无法完成。
例如:正常安装或升级过程中出错;新研发特性的基本功能有错;升级后原本正常使用的功能出错;产品在正常使用中数次崩溃;正常使用中有导致用户有直接的经济损失或信息泄露的错误。
 
你可能觉得,这种问题应该非常罕见,但事实上你在生活中就会碰到。下面是我一次在当当买书的真实经历:
朋友向我推荐了一套《给孩子的哲学》,我搜索得到下面的列表:




点开第三条链接,显示如下:




在这个例子中,搜索结果的书名信息和搜索关键字”给孩子的哲学”毫无关系,但是除了书名以外,其他的内容都是正确的,书籍的整个购买流程也可以正确的实现。
但是,如果我不是一个对缺陷敏感、好奇心爆棚、喜欢一探究竟的测试工程师,而是一个就是想好好买本书的普通用户,看到第一个界面时就已经懵圈了。
 
为了搞清楚缺陷是不是与特殊输入有关,我又试了其他一些书名(如下图),发现这就是一个低级问题,和书名一点关系没有,就是某个字段的数据来源指错地方了。


 
如果你的产品这类问题频出,那么恭喜你,你大概有希望做出一些有价值的事情了,因为这类缺陷对用户的影响最大,是研发需要最优先解决的问题,你在解决这个问题时,很有可能也能得到相应的资源。
而且这个问题看上去也不难解决,基本功能的测试用例我们是有的,只要实现自动化就好了……,如果你这样想了,也这样和老板说了,那么,很遗憾,这事十有八九会搞砸了。
 
再看一个例子吧,某天,我需要把信用卡提前还款,恢复信用额度,以应付接下来的支付需要。通过网银查询账单:


 
点击链接进入快速还款,发现应还金额为零,与账单查询到的不一致。




查询未出账单,发现此笔已经自动还款,因此上述应还金额为零可能是对的。但是还款之后的消费,无论是否入账,都无法选择提前还款,这样,还是无法恢复信用额度(以前曾经这样操作成功过)。




查询账单、快速还款,这些功能单独看起来都是对的,但是组合起来,却无法实现我所希望的应用场景。
 
看完这个例子,你还觉得你有全部的基本功能测试用例了吗?如果想要彻底杜绝低级问题,你的“基本功能测试用例”至少需要覆盖:所有特性的基本功能,以及主要的应用场景。这里还没有包括基本的DFX测试……
 
那么,补用例+自动化就够了吗?no,no,no。回想一下本文第一个例子,即使已经有了“根据书名搜索”的测试用例,你确定你的用例会检查每个字段吗?别忘了,这个例子里,只有一个显示字段是错误的,其他都是对的!所以,测试用例的预置条件、操作步骤、中间和最终结果检查需要更严谨。
然而,我们是故意少检查一些东西的吗?不是的!我们少检查,是为了让特性变更的时候,那些只是使用而不是为了验证这个特性的测试用例就不用修改。如果检查内容更严谨,很可能会需要更方便的测试用例管理工具,使得随版本同步修改用例变得简洁。
 
现在,问题有点复杂了,为了杜绝低级问题,需要对测试设计进行重新整理,确保其覆盖所有特性的基本功能和主要应用场景,每个用例的内容严谨。此外,需要一个好用的,方便同步修改多个用例的测试用例管理工具。
然而,故事还没有结束,发生这类问题还可能是与客户的业务流程、使用习惯、网络和服务器环境、产品部署、用户数据特性有关……
瞧,现在与“只要实现自动化就好了”想去甚远了。
 
当然,这并不是说只要是杜绝低级问题,就一定需要做上述工作,怎么才能知道是不是需要做这些呢?只能求助于客户问题分析,只有知道导致问题出现的因素,才能知道测试时需要考虑哪些因素。
测试团队要像重视测试设计一样,重视客户问题的分析,这是测试最重要的两个手段,无论是个人能力提升,还是团队技术积累都要用到。
至于客户问题怎么分析,我们在另外的话题分享。
 
测试设计的问题解决了,接下来才是实现自动化测试,根据测试设计考虑的因素不同,在实现自动化的时候,除了最基础的选择工具和测试接口、自动化用例的设计等,至少还需要考虑:
1、  测试环境的自动化搭建和配置——如果测试需要在若干不同的环境上执行
2、  从用户接口(UI)进行测试——如果包含应用场景的测试用例,则通常意味着需要从UI进行测试
 
最后,我们的目标是“杜绝低级问题”,问题应该在什么环节发现——自动化测试用例的执行时机;问题由谁解决——确保自动化测试用例执行通过的责任人,这两个问题还需要落实到流程。
 
现在,为了实现“杜绝低级问题”,我们需要进行客户问题分析,根据分析结果和测试现状优化测试用例,实现自动化的测试,并将相应的测试活动确定责任主体并落实到研发流程中。相比仅仅实现自动化测试,这样做的工作量、需要的外部支持都有很大的差别。
 
现实中,我们很少有人能意识到,问题的解决需要这样一套“组合拳”。真正遇到这样的机会,我们很可能是这样的:
我们已经知道,问题爆发只是表象,内在的原因很可能是测试积累了大量的技术债务。终于质量问题开始失控,让研发团队痛下决心,加大对测试的人力投入。测试经理也终于有了喘息之机,把很久就想做的测试设计方法应用、自动化、测试方案模板规范化、DFX测试……一一落实。
那么,问题来了:千头万绪,从哪里开始?要不就是基于最近出现的、客户反应激烈的几个问题;要不就是测试经理有印象的一些问题;要不就干脆不是基于问题,而是测试经理或几个专家个人的技术偏好。具体实施某一项工作,比如测试设计,开展的工作就是组织团队学习测试类型、测试设计方法、制定测试的各种模板、把写的好的测试方案和用例做成样板或案例……,测试团队致力于学会使用标准的方法和模板,使测试终于像一个有技术含量的工作,但是却完全忘了当初为什么要做这些。
最后,在局外人来看,测试团队就是利用这些人,做了最基础的、本来早就该做好的事情,真正的业务问题,并没有思路、没有行动去解决。
这并不是说不能在这个时间进行基础能力建设,而是说不能止步于此,需要着眼于问题,从问题分析得到解决方案,有能力短板则补齐短板,最后以新具备的能力为基础,结合其他辅助手段完成解决方案的实施,最终解决问题。这样才算完成了一个问题闭环的循环


 
总结一下:低级问题通常并不像看上去的那样容易解决,除了自动化,至少还需要在SE甚至运营维护部门的帮助下,完善测试设计;还要在研发经理的支持下,调整研发流程。
 
本文例子和观点摘自《软件测试价值提升之路》的第三章,书中有更系统的解决思路,以及更详细的解决方法介绍。


购书链接:http://product.china-pub.com/5035410
        https://item.jd.com/12085936.html
        http://product.dangdang.com/24160890.html


以上内容系本人原创,如需引用,请注明出处。





相关文章
一文读懂Can总线错误处理
一文读懂Can总线错误处理
一文读懂Can总线错误处理
|
1月前
|
存储 Unix Linux
1.7 编程机制
生成C程序的过程因计算机环境而异,但大多数环境(如UNIX、Linux、MS-DOS、Windows和Macintosh OS)共享相似的机制。了解这些机制不仅有助于掌握编程背景知识,还能帮助理解生成C程序所需的特殊步骤。C语言程序通常存储在扩展名为".c"的文本文件中,例如`budget.c`,这一命名规则在多种系统中通用,文件名需符合特定操作系统的要求。
42 11
|
存储 编译器 程序员
程序环境和预处理 - 带你了解底层的的编译原理
程序环境和预处理 - 带你了解底层的的编译原理
103 1
|
6月前
|
程序员
机器语言的低级性
机器语言的低级性
77 4
|
设计模式 数据可视化 Linux
为Linux应用构造有限状态机
为Linux应用构造有限状态机
151 0
|
网络协议 NoSQL 安全
【精通内核】计算机程序的执行原理深度解析
深度解析ELF文件中将内存布局地址,CPU是如何执行指令的,C语言中方法的执行过程的内核调用。
|
存储 缓存 安全
操作系统底层工作的基本原理
操作系统底层工作的基本原理
422 0
操作系统底层工作的基本原理
|
前端开发 Java 开发工具
面试过程中千万不要犯这 5 点低级错误!
面试过程中千万不要犯这 5 点低级错误!
153 0
面试过程中千万不要犯这 5 点低级错误!
|
XML 设计模式 数据可视化
有限状态机问题编程实践(下)
有限状态机问题编程实践(下)
208 0