1、什么是传统测试
传统项目开发模型如下:
由于瀑布模型对于软件的需求分析与设计阶段考虑不足,导致可能会出现严重的设计问题,最后交付到客户手里才会被发现,所以V模型就考虑到这点,针对开发的各个过程都会有相应的测试环节,比如用户需求会对应验收测试,需求分析和系统设计会对应确认测试和系统测试等等。但是缺点也是显而易见的,跟瀑布模型一样,测试过程还是放在了最后环节,虽然可以满足客户的需求,但是问题都只能到最后阶段才能被发现,必然会导致上面瀑布模型发生相同情况,也就是成本和时间的增加,所以V模型充其量也只能是瀑布模型的2.0版本。
2、什么是敏捷测试
敏捷开发模型如下:
敏捷测试并不是一种新的测试类型,也不是一个新的测试阶段,更不是一种全新的测试方法论。通俗地讲,在敏捷开发过程中进行的测试就叫敏捷测试。
它是一套测试解决方案、一组实践或者由一定顺序的测试活动构成的特定的测试流程。是为了顺应敏捷开发方法、力求达到质量和效率平衡的一系列的测试实践。
敏捷测试与传统测试的区别,并不是敏捷测试测得更快,也不是用的时间更少,更不是将测试的范围缩小,或者将质量降低来减少测试任务,而是在计划、阶段划分、文档、记录、沟通等方面的侧重不同。
3、敏捷测试与传统测试的对比
1、传统测试强调测试的计划性,认为没有良好的测试计划和不按计划执行,测试就难以控制和管理。而敏捷测试更强调测试的速度和适应性,侧重计划的不断调整以适应需求的变化。
2、传统测试更具有阶段性,从需求评审、设计评审、单元测试到集成测试、系统测试等,从测试计划、测试设计再到测试执行、测试报告等,但敏捷测试更强调持续测试、持续的质量反馈,模糊了阶段性,而且介入更早。
3、传统测试强调任何发现的缺陷要记录下来,以便进行缺陷根本原因分析,达到缺陷预防的目的,并强调缺陷跟踪和处理的流程,区分测试人员和开发人员的各自不同的责任。而敏捷测试强调面对面的沟通、协作,强调团队的责任,不太关注对缺陷的记录与跟踪。
4、传统测试更关注bug,围绕bug开展一系列的活动,如bug跟踪、度量、分析、报告、质量检查等,而敏捷测试更关注产品本身,关注可以交付的客户价值。在快速交付的敏捷开发模式下,bug修复的成本很低。
5、传统测试鼓励自动化测试,但自动化测试的成功与否对测试没有致命的影响。但敏捷测试的基础就是自动化测试,敏捷测试需要有良好的自动化测试手段支撑的快速测试。
6、传统测试更强调测试的独立性,将“开发人员”和“测试人员”角色分得比较清楚。而敏捷测试中,测试人员需要参与全部开发活动,需要参与整个项目组的所有会议,能够发挥更大的作用。
4、敏捷测试中的关键过程
在一个sprint中,测试人员的工作内容主要分为五个部分:user story分析、测试用例设计开发、测试执行和分析、测试持续集成、回归测试。这五个部分的工作均要持续到sprint结束,只是启动时刻有早有晚
user story分析工作:敏捷测试是不断确认客户的需求得以圆满实现,因此对用户需求的分析、理解需要一直持续下去,发现有偏差及时纠正,及时设置合理的验收点、测试项。
Testcase Develop工作:设计测试用例,完成测试代码的开发、测试数据的准备,并及时与开发人员沟通软件接口,确保测试代码能够成功驱动业务代码。
Testing & Analysing工作:执行测试,统计测试覆盖率,分析测试结果,若发现bug,及时沟通,并协助定位bug。
Continuous Integration工作:将测试代码进行集成,以保证当前功能若被后续集成代码污染是能够及时得到报警,不断地完善软件产品的功能基线。
RegressionTesting工作:在完成全部user story后,对所有代码进行完整的回归测试,对所有bug修复情况进行确认。
5、敏捷测试对测试人员的要求
优秀的敏捷开发过程越来越重视测试人员,测试人员在其中所起到的作用越来越大,相应的对测试人员的要求就越来越高。一个合格的敏捷测试角色,应当具备以下素质:
1、良好的沟通能力
测试人员全程参与所有开发活动,需要与产品、开发、项目经理设置用户进行频繁的沟通,必须具备良好的沟通能力。
2、换位思考能力
一方面需要站在产品、用户的角度,考虑产品的功能、性能、易用性等,一方面需要站在开发的角度,思考软件技术方案的可行性,实现的难度、合理性、可测性等,充分考虑到各种情况。
3、掌握多种的测试手段
面对不断变化的需求,足够的测试手段储备,是从容应对变化的本钱。
4、一定的开发技能
在敏捷开发团队成长到一定程度后,测试与开发角色的界限会变得模糊。在初始阶段,测试人员也应当具备完成单元测试代码编写的能力。
5、拥抱变化
“唯一不变的就是变化”,所以,需求的变动是必然的,每次的需求的调整都是将产品开发推向更正确的方向。在接受变化的同时,测试人员应该积极的反馈可能的设计缺陷和错误。