今天跟一位测试同事聊天,我说被测业务跟测试技术同等重要,不能一直偏向如何提升业务,同时也要考虑如何提高测试技术。说完后,对方问我一句什么叫测试技术?记得以前也会有测试同事问我什么叫测试技术,能不能具化。这个时候我才意识到,测试团队内部对【测试技术】这个专有名词并没有达成共识。一提起测试技术,理所当然的想起用例设计。好像【测试技术】 = 【测试用例设计】。
对于市面上有很多关于测试理论相关的书籍,其实基础的测试理论书籍我并没有完全看过一本。今天我想谈的不是书籍上的名词解释,更多的是我个人在近一年的时间里对【测试技术】的理解。
个人理解:软件测试工作是贯穿到软件开发的整个生命周期,在这个过程中,所使用的跟测试有关的任何验证手段、工具、方法、策略等都属于软件测试技术的范畴。下面结合工作中接触到的软件开发阶段逐一对这些技术进行具化。
开发需求&设计文档评审阶段
测试人员需要提出有效的评审意见,评审问题的有效与否的确会跟业务掌握的熟悉程度有很大的关系。目前抛开业务本身,需求评审需要测试人员具有需求挖掘能力(能够根据当前显性的需求挖掘背后隐性的需求),能够提出需求是否合理;设计评审需要测试人员具备一定的软件设计能力,对评审对象所依赖的平台,所使用的框架要能够了解大概,能够提出设计是否合理。这个过程同样需要具备提有效问题的能力。
测试需求分析&测试用例设计阶段
正如开发有需求&设计阶段一样,测试同样也有这样的阶段。测试人员根据开发需求进行分解提取测试需求,提取测试需求的过程中,会面临很多信息,如:原有项目的一些信息、跟相关人员沟通的信息、文档信息、测试经验等,会聚拢所有对测试需求提取有帮助的人/物的信息。所以,这里对测试人员信息收集&过滤能力提出很高的要求。很多时候,测试工作流程中会将测试需求分析省去,自动进入测试用例设计阶段。目前无实验数据证明,有测试需求分析和没有测试需求分析这一环节,对测试用例设计质量是否有影响。个人经验所得,先进行测试需求分析,能够提前识别到相对完整的测试项,对于测试用例需求覆盖率方面会有显著提高。在测试用例设计阶段,需要测试人员结合被测对象业务特性,利用适当的用例设计方法,如:等价类划分、边界值、因果图等方法,设计出来一个个用例。这里需要测试人员掌握相关的用例设计方法。
PS:以前会很在意用例设计的详细度,要描述地很详尽;在意用例设计的完整度,害怕遗漏一些场景,力求完美。现在虽然还会有些在意,但不太想追求过于形式化的东西。我不否认显示在excel表里的用例本身的价值。可能更想追求的是:如果没有excel表中的测试用例,我会采用什么样的测试手段来验证被测对象。
开发编码阶段
此阶段看似对测试人员无要求,实际上是有的。好好想想我们的冒烟入口条件。其中有一条,是说对于新项目开发编码完成后需要提交走读报告。这里隐性要求测试人员需要具备一定的走读代码能力。测试人员很多时候是不编码,缺少实践后对代码的熟悉度大大降低。需要对自身提出较高的代码走读能力。
测试执行阶段
在满足冒烟入口条件进行测试执行,这里需要测试人员熟悉测试流程规范并能够严守底线。我不把它列入到测试技术里,【测试流程规范】我认为是测试人员开展测试工作的入口。测试过程中会发现缺陷,这里需要测试人员具备缺陷挖掘能力(在满足项目要求节点的前提下,通过多样化的验证手段/方法发现很多的缺陷)。与此同时,额外需要用例场景优化能力、记录整个测试过程的能力、定位缺陷根本原因的能力、提交能够让相关人员看懂的缺陷的能力、根据缺陷测得的情况更换测试策略的能力、批判性挑剔性的思考能力、跟相关人员有效沟通的能力、发现有效问题的能力。
这其中牵扯到测试类型:静态测试、动态测试、接口测试、界面测试。需要清楚各种类型的测试,在什么阶段能够测试到什么程度。
PS:关于测试人员批判性挑剔性的思考能力、发现有效问题的能力,我会更愿意把它们归类到测试意识范畴里。很多时候,测试人员的意识或者认知层次不同时,挖掘缺陷的能力很明显的不一样。【测试意识】我认为跟【测试技术】同等重要。
发布测试报告阶段
这里主要考验测试人员讲故事的能力。一个版本测试完成,如何通过报告向别人展示这个版本测试的情况,通过还是不通过、多少个缺陷、采用什么样的测试策略、缺陷影响分析、测试时长、相比于上个版本缺陷关闭情况及影响分析等等。对总结能力有了较高的要求。
回归测试阶段
这里可能是前面几个阶段的迭代过程。回归测试一般针对新需求。这里相比于前几个阶段,对测试人员测试策略制定有了较高的要求。如何制定测试策略,保证在回归测试阶段(测试时间不宽裕)对新需求相关的用例场景进行验证的同时也能对周边受影响的其他用例进行验证。
验收阶段
这个阶段需要测试人员对软件验收流程规范比较熟悉,对被测对象有了很深入的理解。对软件验收阶段的用例设计质量提出较高的要求。软件验收时长相对较短,如何在短时间内达到较好的验收效果,需要测试人员提前做好验收准备。这里隐性体现出测试计划的制定及调整能力。
PS:个人想法,软件验收工作不属于测试人员需要做的事情。更多的应该由QA质量保证人员去做比较合适。
如上,是我目前工作当中接触到的软件测试工作内容。列出了各个阶段需要做的事情,看似详尽清晰。但工作实际开展时,可能真正不是按照这样的顺序开展的。换言之,实际列好的测试计划可能不一定奏效。这个时候对测试人员提出很高的要求:是否能够预判并及时更新测试计划,对已识别的一些风险进行预防。很多时候,测试工作的开展也并不是有很规范的测试流程。这样的场景下,作为一名测试人员,你能否发现流程规范中的一些问题并能够提出相应的改进措施。这里我不会把它列入到测试技术范畴里,列入【测试管理】可能更好。这里我会把【测试技术】、【测试意识】、【测试管理】归类到【测试技能】里。
我具化了很多【测试技术】所包含的能力:提出有效问题的能力、软件设计能力、需求挖掘能力、测试需求分析能力、测试用例设计能力、代码走读能力、描述缺陷的能力、缺陷根因定位的能力等等。所有这些能力的提升,都是为了我更好的开展测试工作。需要提升的能力很多,可以结合工作中的问题,有选择性的优先提高某一部分的能力。
以上都是我个人的一些见解,如有问题,可以跟我沟通~
源自公众号 WorkingIsLearning