敏捷开发模式下测试工程师如何把控测试进度和质量

908 阅读12分钟

什么是敏捷开发

关于敏捷开发我们参考一下百度百科的解释:

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发提到了《敏捷软件开发宣言》和《敏捷软件的十二条原则》两份文档。敏捷相信,只要符合这两份文档的开发方法,就能让开发团队拥有应对快速变化需求的能力,这样的开发方法都叫做敏捷开发方法. 敏捷软件开发宣言

敏捷软件的十二条原则

为什么要敏捷开发

首先我们思考个问题:为什么支付宝改变了人们的生活方式?为什么支付宝有那么多人使用?我的理解是支付宝满足了客户的需要,支付宝的创新不断的吸引新的客户,针对每一个客户我们会发现支付宝都能有定制化体验,充满层次感。 当今社会我们要了解资本是逐利的,不管我们入职到哪家公司,作为资本的一面需要创造利润,可能会对产品提出这些要求: 1、如何做出真正满足用户需求的产品 2、如何满足不断变化的用户需求 3、如何同时满足不同层次用户的需求 为了达到这些要求,资本经过多方的讨论,认为敏捷软件开发满足了他们的需求,敏捷软件开发可以不断试错,具有创新性,能够快速响应需求。

敏捷开发中测试的痛点

时间不够

测试如何把控测试进度

在敏捷的研发流程中我们通用的研发流程是,需求>计划>开发>测试>发版,在每一个流程中都需要看到测试的身影,作为测试工程师直接对产品质量负责,为了能让产品更受用户的欢迎,同时也为了更快的推出产品功能抢占市场,测试工程师需要严格把控测试进度。作为测试工程师在把控测试进度上大概遵循以下方面: 1、测试时间前置 2、功能和版本减少重构 3、测试人员时间管理 4、风险点警示

1、需求阶段

这个阶段由产品经理提出本次研发功能的需求,当然有些时候还会和技术架构师对需求进行整理,使的提出的需求能够有效.同时和测试、开发、UI等就需求进行评审。需求是要各方都能够明确的,但是实际需求会上作为测试是无法明确了解各方就目前版本迭代的需求明确的程度,也会存在部分人员只是表面的理解而没有对需求有充分的了解。那么测试有什么手段可以洞悉各方对需求的理解程度呢? 在整个研发过程中对于需求只是初始阶段,后续还有计划阶段、开发阶段、和测试阶段,在计划阶段通过每个人员就目前功能和版本需要做什么的一个方案和时间计划来间接的去反推每个人的理解程度,从而及时核对、了解、纠错,减少了产品质量风险;在实际开发过程中,开发会对功能进行代码调试从而会发现一些需求问题,这个阶段开发通过自己的手段也能加深对需求的理解,同时间测试工程师也处于用例设计阶段,通过场景化,边缘化,也能反推需求的明确性,从而提前了解风险点;在测试阶段测试工程师执行用例的实际操作中,或多或少会有新的测试场景和测试用例产生,同时对测试用例期望值也会有一个确认的过程。这些种种研发流程的实际操作都是对需求进行一个明确的过程。

2、计划阶段

这个阶段主要是由开发负责人就本次版本的功能实现进行方案的预演,对部分复杂的功能实现方案做一个回溯,测试工程师在这里就需要确认整个方案实现的需求是否跟原来的需求一致,同时提出对开发此功能可能涉及到的影响点,在这个阶段测试工程师应该提取出所有的测试点组成测试用例设计中的核心测试点。

3、开发阶段

测试工程师在这个阶段主要是用例设计和接口冒烟测试,其中测试用例的详细测试点验证一方面需要反推需求的合理性和优化建议,一方面也需要和开发就部分功能细节做一个二次确认已达到明确需求,期间其实也会出现就某个功能需要临时修改需求的情况,这个时候整个团队理论上是要知会到的。为什么要提到接口的冒烟测试,冒烟测试耗费的时间较少,每次开发新的接口都需要对原有的接口进行一次抽样的检查,防止某个改动影响到了其它的接口。冒烟测试不仅测试需要做,开发也需要做。当我们完成了测试用例后就需要将用例做一次分类,区分出那些是开发自测用例,将这部分用例给到开发人员,同时监督开发自测,监督的方式有人员自觉、团队奖惩、用例效果统计等。

4、测试阶段

在测试阶段来说,基本测试流程走到了2/5了,这个阶段测试主要考虑的是如何测,测什么。这么两个问题,首先如何测对于所有的测试工程师来说都有自己的一套测试方法和习惯,比如我自己都会有一个成文的测试策略时刻规范自己在测试过程中言行和实施,关于测试策略在后续我会给大家在行阐述。测试阶段测试什么?首先我们需要要测试隔离思想,测试阶段简单来说就是测试的前端和后端,不仅需要单独固定后端逻辑测试前端,也需要单独固定前端逻辑测试后端,以及在某种场景下前后端的联合测试。在测试阶段作为测试工程师牢记以下几点:

1、发现问题及时上报,只要问题不阻碍测试需要不断测试
2、及时同步测试进度和风险,严格按照测试用例执行
3、后端测试过程中不能脱离代码日志而测试,不能脱离数据而测试

5、发版阶段

在发版阶段作为测试需要了解什么呢,首先需要了解此次发版的详细流程,如:是否需要运维支持,是否需要DBA支持,需要配置什么参数等。然后这些了解清楚后根据本次测试的结果判断是否可以发版,测试工程师在这个阶段需要明确是否有未解决的bug,对自己本次测试质量评级是否满足发版要求。在职场工作中我经常会遇到以下问题:

1、紧急的版本测试时间不够充分,但是客户马上要
2、线上出现的bug修复版本
3、正常迭代版本,测试到最后遗留了一些优化问题
4、正常迭代版本,整个测试过程中总是卡在一个难修复的bug上,如兼容性问题,系统问题等

这里就说一下我的处理方法吧: 针对第1种:这种测试一般都会有半天到一天的测试,那么在规定的时间终点自己需要对自己本次测试做一次质量评估,能否满足上线要求,如果不能尽量延迟发版时间。 针对第2种:这种一般就是一个问题点,需要开发提供修改的影响点,同时自己和开发都需要知道问题的原因是什么,那段逻辑或者方法出错了。这个解决了基本问题也就解决了一半,测试验证是就根据影响点进行测试,同时加上自己认为的影响点进行测试 针对第3种:首先我们需要知道此优化是否非常影响版本质量,一般来说影响很小。如果需要修复那么就需要评估一下修复的时间成本和人力成本,以及延期发版带来的损失成本 针对第4种:这种问题作为测试工程师已经很难评估是否能发版了,需要产品、开发、测试相关领导共同评估是否能上线

测试需要什么技能

1、团队意识

团队精神的核心,实际上就是合作的精神。合作关系到每个人的生存之道。良好的沟通能力是团队合作的关键,没有沟通就没有团队精神,拥有团队意识,在实际研发中善于去和开发、产品沟通问题、协调矛盾成为测试工程师的软能力,既能提升测试人员管理的能力,同时对整个产品质量上也有更好的把控。即使在线上出现了某些问题,也应该本着解决问题的立场去合作而不是追究谁的责任。

主人翁意识

在整个版本迭达过程中,作为测试工程师应该谨记测试是保证版本质量的,这个是测试的职责。为了提高版本的质量,推动整个团队的研发效率,需求理解,这就是主人翁的意识。虽然我们不是实际的领导,但是我们的目标是一致的。

2、逻辑能力

目前市面上的测试大部分是功能测试,倾向于业务上的测试,在这里面逻辑能力就成为最核心的测试能力。什么是逻辑能力?逻辑思维能力是指正确、合理思考的能力。即对事物进行观察、比较、分析、综合、抽象、概括、判断、推理的能力,采用科学的逻辑方法,准确而有条理地表达自己思维过程的能力。我们不但要有逻辑能力,更要有通过逻辑能力去测试逻辑的能力,以达到功能逻辑没有大的逻辑问题。在以往的测试面试过程中,我经常会去考察面试者的逻辑能力,因为测试是需要逻辑能力来保障测试的。

3、技术能力

测试工程师在执行功能测试、和业务测试时,个人技术能力的提升也是至关重要的,不管是自己的职场发展还是测试质量保证都需要这份能力。好的技术理解,让我们对功能的实现细节有更好的理解,更好的测试支持,同时也可以提高测试的效率,让测试不再是点点点

4、创新意识

测试,我经常提到要有创新意识,探索性测试是每位测试工程师进阶之路。只有探索性测试才能更加的充满不确定性和挑战,这样的测试势必需要考虑到服务和系统架构,以及更加底层的东西。

5、总结能力

在生活中做任何事都需要学会总结,所谓失败是成功之母,无非就是告诉我们要总结。生活中总结能力使得我们不断向前发展,测试职场生涯中5年工作经验和3年工作经验的人差别还是很大的,有的人一直干测试但是一直还在原地踏步,因为他们不善于总结,我每次测试完成以后都会对本次测试做一次总结,不管是书面形式的还是思想层面的,都会不断的去找到自己的不足,后续努力的补足,扬长避短。

如何更好的测试

截止目前,我发现测试领域越来越往高新方向发展,不单单是之前的传统行业和传统测试,这几年随着中国科技的发展,很多科技领域对于测试高尖端人才的需求还是很匮乏的。相比以前当前的变化是什么呢?

1、整个测试行业不断向云原生进行转移,云技术的测试后续会存在大量的测试缺口,而这一块需要测试人员对底层有更多的了解
2、随着数字货币的发布,未来区域链测试技术不断成熟,而当前测试的缺口确很大
3、IaaS,、PaaS和SaaS、微服务这一块当前市场以及不在是传统的购买主机linux部署,而是倾向于云服务的部署,云服务下的为服务需要测试人员更多的关注
4、大数据的测试分析一直都是当前市场很吃香的行业,数据是公司赚钱的核心
5、基于云如阿里云、华为云、七牛云等云上组件化的测试缺口不断增大

针对当前的变化,我未来的职场将不断的往云原生去靠近,未来云技术才是市场的主流,测试开发与云原生结合才能提高测试效率。什么是云原生,简单的讲就是云原生 = 微服务 + DevOps + 持续交付 + 容器化。

文章原创首发于微信公众号 软件测试微课堂