为了更好的开展测试工作,需要我们在工作过程中不断积累经验、不断对测试过程进行改进工作。那么又该从哪些方面入手进行测试改进呢?个人分析如下:
1、增加测试需求分析
前提:用户需求搜集、软件需求分析。
软件测试过程也是一个相对的开发过程,而不是机械的服从于开发过程及其过程资源,需要进行软件测试的需求分析。
测试活动需要从软件需求中理解系统行为,但不是机械的从字面上听从软件需求的内容。
测试需求分析,需要关注的不仅仅是软件需求所表现出来的特性,还需要关注软件需求之外的一些特性。
测试需求分析的目的,与软件需求分析的目的是一致的,都是为了满足用户的需求,因此,在理解软件需求之前,获取最原始的用户需求是必须的。而目前的测试,真正涉及到用户需求的不多。
测试需求分析最直接的对象很多,目前至少有2个:用户需求和软件需求,其他的涉及到软件开发过程中其他的一些对象,如,软件系统结构、软件开发技术/方法、开发语言、测试环境等,见后面的说明。
不同的测试对象和测试类型,其测试需求分析的对象和方法也是不一样的。
目前,测试需求分析并未形成一种有效的模式,也只是借鉴于软件需求分析的模式,以满足用户需求和软件需求为最终目标。
测试需求分析,基本上基于一种过程的概念,对测试对象和测试过程中所有可能涉及到的事务进行有效分析,提炼出测试的对象和范围,从而确保测试对象和过程的正确性和有效性。
测试需求分析的要素,至少包括对象、行为、过程、结果4个部分,其中后3者可以定义为对象的测试场景分析。
说明一点的是,在现在的流程中,测试计划和需求的同行评审具有了一些测试需求分析的特征。
2、强化参与开发深度
前提:集成软件开发(含测试)。
目前的测试,基本上只停留在对软件需求的理解之上。
而需求并不是业务。对需求的生搬硬套,就如囫囵吞枣,结果可想而知。如果对业务表现形式熟练,在测试的时候,测试的有效性就高些。而如果对业务根本不理解,那就不可能真正的测试到业务所需要满足的要求。
如何提高对业务的理解呢?只有从用户需求开始就深入的参与项目开发过程,才有可能真正的理解业务及其表现形式,从而进行有效的测试设计和执行。当然不同的测试对象和类型,所参与的深度是可以不同的。
目前要做好这一步,可能还需要很多的时间,同时也需要项目组给予更多的支持和参与。例如,项目经理、开发经理需要很明确在整个的开发过程中需要进行哪些测试(要说明预期中的结果是什么、期待发现什么问题等),需要提供哪些资源(包括相关文档、测试时间、人员配合和技能支持等)给测试人员。
3、优化测试用例设计
前提:测试需求分析。
1)目前的测试用例设计,基本上是基于对软件需求的一种理解,从而在表现形式上是进行测试执行具体步骤的设计,这是正确的,而且在很大程度上已经满足了目前测试流程的需要,但是,如果相对进行分步式设计,可能会更有利于测试的持续发展。
软件测试设计雷同于软件开发设计过程,也不是一蹴而就的,是需要一个循序渐进的过程的。首先需要根据软件测试分析所提供的可行性,对软件项目进行概要性的设计,在概要性的设计取得用户(该用户包括该系统的BA(作为最终用户代表)、设计开发人员(作为开发人员代表)、测试人员(作为测试人员代表))的认可(即评审)。
然后,根据概要性的设计对测试用例进行详细设计,该设计即可对应现在的测试设计阶段,主要实现对测试的试运行条件、测试对象操作人员、测试执行步骤、测试结果与通过标准等的分析和设计。该阶段的测试设计需要取得BA、测试人员的认可(即评审)。
2)测试用例设计可以进行测试执行步骤的设计,但不仅仅是步骤的设计,需要言简意赅,重复性的设计尽量复用,这样在设计测试用例的时候才能一幕了然。在此也建议采用对象化的设计方法来设计测试用例,而不是从功能角度进行。参见测试需求分析。
说明:目前的测试项起到了部分的作用。
4、增加测试场景设计
前提:测试需求分析。
测试场景有3个概念,也分三步走:
第1步,是在进行测试需求分析的时候,对测试场景进行了分析,在此需要对测试场景进行设计,这些测试场景的设计基本可以按照测试需求分析的要求进行,部分在测试设计的过程中成为了测试用例。
第2步,就是在进行测试用例设计的时候,常常需要对一些特殊的测试用例(执行)进行测试场景设计,以满足某些测试(用例)执行的需要。
第3步,就是使用辅助性的测试工具,对一系列的测试执行步骤进行集合,录制、编写测试脚本,从而在进行bug/功能验证、回归测试的时候,直接执行脚本即可。
说明:可以与目前流程中的测试规程相结合使用。
5、强化测试用例执行
前提:优化测试用例设计、增加测试场景设计。
目前测试执行的状态是测试用例写了无数,但是执行的时候却基本不按照此执行,即使按照测试用例执行,也很难在测试用例执行的时候填写测试执行结果。
原因有2个,一个是测试用例设计过于细致,无法按照测试用例执行(一次操作就可能执行了几十条记录);另一个就是测试用例执行没有自动化,重复执行困难。
因此需要在优化测试用例设计的基础上,强化测试用例的执行率,使得测试过程中的记录更为完整(个人并不赞成执行单步执行,这样的效率极其低下)。
可以在测试用例设计阶段引进测试用例设计工具,使得测试用例执行时能够方便提交bug,且重复执行起来快捷。而且对于重复执行且界面等发生变化不大的测试用例执行内容脚本化,则可以大大减轻在测试执行过程中的劳动强度。参见测试场景设计。
6、强化系统回归测试
前提:回归测试的测试需求分析、优化测试用例设计、增加测试场景设计。
目前的系统测试在很多的时候需要进行回归测试,但是由于系统回归测试的目的很模糊,且测试用例的设计过于繁琐,测试执行没有形成一定的积累,因此在进行系统回归测试的时候也基本上只基于所关注的功能点进行,效果也比较小。对于比较庞大的系统回归测试工作,更是难以真正的展开,并有所成效。
而要扭转这种局面,需要在优化测试用例设计、增加测试场景设计的基础上,在测试过程中不断的积累测试用例和脚本,并在对回归测试进行了测试需求分析之后,采用适当的方法,才能有效的进行系统回归测试。
7、强化测试结果分析
测试结果分析有2个目标,一个是对测试的阶段性总结,提出测试过程中发现的问题,总结目前阶段被测试系统的满足程度,另一个总结测试经验,改进测试过程和系统缺陷。
目前的测试结果分析报告基本满足要求,关键是如何提交有价值的测试报告,同时相关人员予以关注,促进问题和缺陷得到有效的解决。
8、明确测试管理目标
一个积极、鼓励性质的测试管理目标和一个为管理而管理的测试管理目标对激发员工积极性和提高测试有效的效果是截然不同的。
测试管理的目标,主要是3个,一个是改进测试过程,一个提高测试人员素质,一个是提高测试技术。三个方面,相辅相成,缺一不可。参见测试管理、测试过程书籍。
|