一、执行测试用例
作为一个测试新手来说,最主要的工作应该就是执行测试用例,最基本的要求当然就是不能够出现执行漏测了。是的,达到这个要求毕竟简单,只要严格按照用例来执行就可以了,这里主要考验的就是一个测试人员的执行力和细心的能力。另外,这个阶段测试人员能够学习到自己测试模块的一些基本业务知识,以及如何去执行用例,提交和跟踪bug等等,这个阶段也很容易达到,甚至可能会跟第2个阶段一起进行,但是该阶段虽然简单却很重要
二、发现bug
经历第一个阶段后,这个时候测试人员可以开始在执行用例的基础上开始一些自己的发散测试(更好的叫法是探索性测试),来更好的发现一些通过执行用例无法测试到的bug。这个阶段就比较考察一个测试人员的发散思维了(个人觉得测试人员的发散思维恩能力是测试人员非常重要的一个能力,这也是软件测试的魅力所在),有的测试人员就是能够通过自己的一些想法来发现一些bug(甚至是隐藏很深的bug),并且很享受在其中。个人觉得这些能力(也可以叫对bug的敏感程度)是天生的,当然,并不是说这块能力不强的人在测试里面发展不好,因为测试也有技术(确定的因素)的成分,比如:自动化等。但是,这样的测试人员不太容易享受到发现bug给自己带来的成就感(即软件测试的艺术性)。当然,要达到这样的程度对于模块本身的业务逻辑也需要非常熟悉
三、保证质量
质量是一个测试人员的生命,当我们将一个功能模块交给一个测试人员负责的时候,我们肯定是希望对方能够给保证质量的。但是实际上要达到这个要求是很难的。首先,我们对于保证质量是如何定义的,是保证该模块到客户那里不会影响客户的业务还是在客户那里不出现问题?实际上2者是很难区分的,目前我们对于测试人员的要求大概都是能够发现所有的bug吧,虽然实际上不可能。其次,作为一个测试人员,我们自己对于该模块的测试策略该如何把握呢(因为测试时间是一定的)?根据个人经验,要达到这个目标,至少需要做到以下几点吧!
1、需求覆盖:对于的整个需求的理解程度:对于客户来说,为什么需要这个功能?主要是用使用习惯是怎样的?客户哪里可能会出现的一些异常情况等等
2、业务逻辑覆盖:对于整个业务逻辑的理解程度:通过看研发的设计文档和具体的实现逻辑图,来分析如何覆盖到所有的逻辑以及异常逻辑(这个时候还需要提前发现一些研发没有考虑到的地方),并且设计对应的逻辑测试用例,保证我们的测试业务逻辑的覆盖率(代码覆盖率非逻辑覆盖率)。当然,这个阶段是能够通过一些技术手段做的更好的,比如:接口测试、单元测试、代码的静态走读等等,后面再讨论...
3、性能压力覆盖(为什么就不说了):主要是在前面对业务逻辑非常熟悉的基础上,对于每个业务逻辑的性能测试点进行分析,看下这些逻辑是否可能有压力点,比如:当资源不足的时候是否有影响?当并发数或者流量很大的情况下是否会有影响?是否会涉及到多线程通信或者进程之间抢占资源等等,分析完成后还需要考虑如何去覆盖到这些地方(包括压力是否足够等等)
4、关联覆盖:大部分情况下一个模块总是会和整个系统的其他模块存在关联的地方,那么我们除了要分析出和哪些模块有关联,还需要分析具体的关联点是什么?这其实就要求我们对于与之关联的模块也足够的熟悉,这样才能够更好的分析到对应点上
5、当然,还会需要涉及到其他的,比如:模块的可靠性,安全性等等
6、发散测试:一般情况下,前面的几点很难分析到非常的全面和充分,这个时候就需要依赖自己的分析能力和发散思维能力了,如果这方面比较好的话应该是有意外惊喜的,而且前面的一些测试也需要依赖自己的发散思维能力
如果能够达到这个阶段,相信你已经是一个比较让人放心的测试人员了,这些阶段一个非常重要的就是对被测模块的业务熟悉程度。
四、提高测试效率
测试是有成本的,而且测试的周期越长,成本越大,甚至可能影响整个产品在市场的占有情况或客户的满意程度。所以,对于测试人员一个很重要的要求当然是如何在更短的时间内保证质量。要做到这个程度,主要依靠两个手段吧!
1、前期缺陷预防:测试人员通过前期和开发人员配合,共同的将很多bug直接扼杀在摇篮,避免bug在后面被发现。下面可以从每个阶段来分析测试测试人员需要做好哪些事情。
(1)需求阶段:测试和研发一起将该功能的所有需求点全部列出来,并且分析所有的需求点是否明确和合理。另外,是否还有没有考虑到的客户的隐藏需求等等,通过不断的检视来完善。需要的能力:测试经验、对于需求的理解能力和思考问题的全面性
(2)设计阶段:加深对于设计的理解,多跟开发进行交流,能够根据自己的测试经验以及对于该模块的理解程度对研发的设计进行评审,并能够发现设计存在的一些问题(比如:一些场景可能没有考虑到,一些异常情况可能没有考虑到等等)。并且将自己后面可能会怎么测试提前告诉开发(这个时候心里应该大概知道该如何去测试该模块,可能的风险是什么灯)。需要的能力:对于模块的理解程度,对于用户场景的理解程度,对于整个业务的理解程度(参考测试人员的第3个阶段)。
(3)编码阶段:这个时候可以通过一些改进,比如:对研发的代码进行静态走读,通过工具覆盖,思考单元测试或者借口测试,对用例实现自动化等,目的就是在黑盒测试前就能够提前发现该模块存在的代码逻辑问题,减少后面的手工测试时间。需要的能力:代码理解能力、代码测试工具的使用能力,一定的编码能力,自动化开发能力等
2、测试分析能力
进入测试后,需要对我们前期的缺陷预防进行分析和总结,并且分析下该模块的质量:看下哪些地方是存在风险的,哪些地方是前面做的比较充分的,从而来制定我们的测试策略,减少一些没有必要的测试点或增加一些有效的测试点,让我们的整个测试更加的有效,并且通过不断的测试和分析,来及时调整测试策略,来减少我们的测试时间(比如:以前需要测试500个测试用例,后面通过分析后能够减少到300个,并且证明测试结果是一样的),当然我们需要对我们的测试结果负责,要达到这个程度应该是比较难的!
以上纯属个人观点,欢迎大家讨论。
版权声明:本文出自 pengyongbo 的51Testing软件测试博客:http://www.51testing.com/?181625
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。