软件测试基础知识七(软件测试流程)
如果想让测试在公司的项目中发挥出它最大的价值,并不是招两个测试技术高手,或引入几个测试技术,而是测试技术对项目流程的渗透,以及测试流程的改进与完善。
当前一百个公司就有一百种测试,每个公司对测试的看法不同,公司对测试的定位也不完全一定。很多公司的流程都是比较简陋的。
规范的测试流程
需求分析:
需求分析由产品人员制定,他们要做的不是一份简单的文档,而是细化每一个功能的细节,每一个按钮的位置,对于稍大或复杂一点的需求都进行建模。
需求评审:
这里会叫上所有参与项目人员进行,开发人员/测试人员/QA人员。产品人员提出需求,开发人员考虑功能实现的方案与可行性,当然开发人员负责人也是要参与的。测试人员主要是对需求的理解提出疑问,才能根据需求设计用例。QA人员是最终对软件质量进行验证的人,所以也需要了解需求。
开发人员编写排期:
开发人员需要根据需求功能点进行排期,然后将开发计划转交给测试人员。
测试计划排期:
测试人员根据开发计划,对测试具体时间,也就是开发功能完成后的时间,进行几轮测试等进行排期。然后,把项目的开发与测试计划发送给各部门负责人及参与项目的所有人员。
编写测试用例:
根据详细的需求文档,开始进行用例的编写。
用例评审:
在用例进行评审期间,先以邮件形式将用例发送给相关人员,以便他们实现了解用例对哪些功能进行验证以及验证的细节。
然后,测试人员组进行用例评审,开发人员检查有没有与实际功能不符合的用例,产品人员对用例功能的具体实现进行把握等等。
提交基线:
开发人员完成所有功能后,会对自己的功能进行自测,自测完成之后提交测试人员进行基线。
具体测试流程:
测试人员对于基本测试线的功能进行测试,发现的问题通过缺陷管理工具进行反馈,开发人员对缺陷进行修复,然后准备第二轮基线。
测试人员完成第一轮测试后,需要写测试结论,发送到相关人员。然后对基线后第二轮进行测试,第二轮会对第一轮中发现的问题进行重点回归。
测试通过:
经过两到三轮或四轮的测试后,知道没有发现新的问题,或暂时无法解决/或不紧急的问题。用过上级确认,可以通过。编写测试报告与验收方案。
收方案是交由QA进行验证的。在现公司的流程中是将测试与QA分开的,测试人员重点关注的是功能是否可以正常运行。
QA关注的是整个流程的质量以及最终用户的质量。有些公司QA与测试是不区分的,但这对测试的要求会更高,除了关心功能,还需要关心整体流程与质量。
流程分析:
这个流程是规范的,测试真正融入了整个流程,从而也有效的保证了软件产品的整体质量。
那么这个流程是不是完美的呢?不,这个项目流程太强化各种文档。我们来看测试的工作内容,测试计划、测试用例、测试结论、测试报告、验收方案、问题的提交跟踪。
其实,真用于测试的时间是非常少的,在一周的时间,也许只有一天或不到一天的时间是在进行测试的。测试人员只有在测试的时候才会体现出他的价值。而大部分工作却不能体现他的价值。
敏捷测试流程
前面讲的第一种流程,还是第二种流程都是瀑布式的,严格来说第一种简陋的都不能称为瀑布式,对于一个三个月的项目说,产品把需求分析完了给开发,然后产品就没事儿了;
开发完成之后给测试,然后开发人员也不忙了。测试完成之后上线。那么在产品分析的阶段,开发和测试都是没事干的(这里只对单一项目)。
开发阶段,产品和测试也基本没事儿。同样在测试阶段,产品与开发也是没什么事儿的。
敏捷测试的一个核心是迭代,在每个时间点上,所有项目人员都是有事可做的。
第一阶段:
通过上面的流程图,对于一个月的需求分析,在敏捷中,可能三五天就确定下来。这个需求定得会很模糊,但整体框架确定。
产品对其中某一模块功能确认,开发人员开始对确认的功能编码,开发人员编码的过程中,测试进行功能分解,因为根据模糊的需求很难写出具体的用例。
所以,只能尽量对功能进行分析得细些,标注需要验证的内容。
第二阶段:
开发完成后交给测试人员进行测试,开发人员继续开发新的功能。那么测试人员发现的问题怎么办呢?会从开发团队中抽出一个人员来用于解决测试发现的问题。但开发进度并没有因为测试而停止。
流程分析:
在这个流程中弱化了文档,强调了各个人员的沟通,通过这种迭代的方式,三个月的项目,可以能两个月和两个半月就会完成。
但这种流程并非完美,加入一个功能在需求分析阶段就是错误的,因为它是一个迭代渐进的过程。也只能一路错下去。
上面的图更能清晰看出对问题的处理过程。
第一块面板中是开发人员未实现的功能,第二块面板中是开发完成功能,测试人员对其进行测试,发现不通过的就放回未开发的面板中,测试通过的将放到第三块面板中。