我——作为一名测试人员——有一个与众不同的习惯:每当要加入一个新项目的时候,我总会找到项目中的同伴,真诚而亲切地说:“为了更好地合作,我有5个约定,希望大家能尽量遵守”。
约定1. 业务分析师们,我们其实是同一个角色的两种面孔,请叫上我们参加客户需求会议
我们的团队需要让客户频繁的得到可用的软件,客户的不断反馈会给软件的未来做出最正确的方向指引。
如果我们交付的软件有很多质量的问题,存在大量的缺陷,客户会被这些缺陷的奇怪行为干扰,没有办法把注意力放在软件本身的价值是否符合他们的真正需求上,不能给出最有价值的反馈。所以,我们只有频繁的做测试,在每次交付之前都把质量问题找出来告诉我们的团队,问题才能及时的得到改正。
而我坚信“prevention is better than cure”(预防胜于治疗),我会要把工作的重点放在预防缺陷上,这样可以节省Dev们很多修复缺陷的时间与精力。
为了达到这个目的,我需要跟你一起参加客户需求会议,尽早的了解客户需求与使用软件的惯常行为。那么在你完成需求的验收条件的定义的时候,我也基本完成了测试用例的准备。
我们可以赶在开发人员们写代码之前就告诉他们我要测什么,让他们减少因为过于乐观而漏掉的一些重要的有破坏性的情况,减少缺陷的发生。这是我测试的一项重要任务。
如果你们在大部分需求都整理好了再交给我们,我会浪费掉等待的时间。更重要的是,开发好的软件里面已经有很多本来可以不存在的缺陷在里面了,开发人员们可能需要加班加点来保证在项目最终交付时间之前把它们改好。这样很容易产生新的缺陷的。
所以,请让我尽早了解需求,请不要让我到项目后期才能开始测试。
约定2. 开发人员们,虽然你们是编写自动化测试的专家,但请听听我们意见
我知道,对于你们,自动化测试不过是利用junit, rspec, selenium,watir,uiautomation等等写出的“另一段程序”而已。而对于80%的QA来说,编写自动化测试并不是一件简单的事情。
不过我仍然相信,有测试人员介入的自动化测试更有价值。
你们用单元测试,集成测试来保证代码的质量。然而你们的这些日常测试离代码更近,离最终用户还点远。很多测试都不是在测软件功能。
你们可以把功能测试写的又快又多,而我们可以指出什么功能测试最有必要加到自动化测试中。
你们平时大部分精力都在编码上,没有太多时间去查都有什么缺陷。而我们可以指出什么地方缺陷可能会出现的比较频繁,建议在这些脆弱的地方加自动化测试。
所以请听听我们的意见,我们可以给你们提供这些信息。
约定3. 项目经理们,请不要要求我们测试软件的所有路径
软件测试是一个永无止尽的任务。基本上没有什么软件简单到我们能够尝试完它的每一个可能的路径的。就连一个看似简单的微软计算器都有无穷尽的路径,无止尽的输入,更何况比这个更复杂的商用软件。
如果你们担心没有尝试过全部的路径不可靠,疑惑我们怎么敢说这个软件质量是好的还是坏,都有什么风险。请你们先注意,我们是跟业务分析师一样,都了解软件的价值的。价值可以帮我们做出判断,什么时候可以停止测试并对客户说我们的软件已经满足您的要求了,请放心使用。
因为我们了解价值,我们可以肯定的说哪些软件的使用方式是至关重要的,哪些是不太可能出现的。我们会在全面测试了软件以后,把主要精力放在价值高的功能点上。合理的利用项目有限的时间。
因为我们了解价值,我们可以正确的把发现的问题分类。我们可以帮助dev们把精力放在重要的缺陷上,避免把时间放在对于客户微不足道却不得不花费大量精力才能修正的问题上。
所以,请不要要求我们无止尽的测试一个软件。我们了解价值,请相信我们的判断。
约定4. 迭代经理们,如果对于交付风险有任何疑问,请来询问我
BA和Dev们都是关注一个软件在什么情况是可以良好的工作。而我们除了验证这些情况以外,大量的时候都用在寻找什么样的情况软件不能正常的运行。所以除了针对定义好的软件行为进行测试,我们还会做很多探索性测试。我们通常可以通过这样的测试发现一些没有定义的、不曾预期的行为。这些行为往往将会构成软件交付的风险。
我们会告诉你们现在都发生了什么问题,分别分布在哪里。
我们会告诉你们,在什么情况下软件可能会有异常行为,是不是会牵连到其他的部分,是否可以绕过去。
我们会告诉你们,哪些部分功能比较不稳定,需要更多的留意。
约定5. 测试人员们,那些敏捷实践对于我们也是有用的。
结对不是dev们的专利。我不希望总见到你们独自坐在自己的位置上冥思苦想。走出去,跟其他队友多多交流!
多跟测试队友交流,pair看看设计的测试用例是不是够全面,独自一个人想到的未必足够好。他们会给你诚恳的意见的。对他们,也请一样认真对待。
如果你发现开发人员们做出的架构决定使测试工作变得更困难。那么请大声地告诉他们,design for testability(提高你们设计的可测性)。
如果你发现业务分析师写的需求无法验证,定义的客户行为不够具体,一个用户故事中包含太多了功能点,等等,那么也请大声地告诉他,INVEST(独立,可协商,价值,可估算,短小,可测)。
也请你们多跟开发人员结对写自动化测试,既可以帮助你们学习怎样更好的编写自动化测试,也能帮助开发人员们结对更多的了解用户行为。
这就是我的五个约定,它们是我在团队中顺利展开工作的基础。
作者:覃其慧,ThoughtWorks敏捷咨询师。她参与了大量的敏捷软件开发的实践和敏捷咨询。目前主要关注以价值为驱动的敏捷测试。
感言:在自己公司感慨颇深啊,最近写一个台湾总公司的程序!不告诉我们业务上的意义,照着连需求文档都算不上的文档写,发现问题还要无尽的等待回复,奇怪的方式操作着传说中的informix。需求改了,出错了还说我们的浪费他们时间,靠。
最近被气爆了
分享到:
相关推荐
这些工具使得敏捷团队能够更高效地规划Sprint、跟踪工作进度,并确保所有团队成员对项目状态有清晰的了解。 **总结** 敏捷开发是一种强调灵活性和快速响应变化的软件开发方法,它的核心在于人与人的交流、可工作的...
3. **客户合作胜过合同谈判**:在敏捷开发中,客户参与度非常高,通过持续的反馈和合作,确保开发出符合需求的产品,而非仅仅依赖初期的合同约定。 4. **响应变化胜过遵循计划**:敏捷开发强调适应变化,允许在开发...
1. **个体和交互胜过过程和工具**:在敏捷开发中,人际关系、沟通和团队合作被认为比严格的流程和工具更重要。优秀的团队成员和良好的协作比单一的技术能力更能推动项目的成功。 2. **可以工作的软件胜过面面俱到的...
Jenkins配置涵盖了构建触发、构建过程、测试执行、结果报告和通知等多个方面,使得团队能及时发现并修复错误,提高开发效率。 总结,"敏捷之道"不仅仅是理论,更是实践中的一套行之有效的方法。通过敏捷思想的运用...
SpringBoot是一个简化Spring应用开发的框架,它通过约定优于配置的理念,提供了一种快速配置的方式,使得开发者可以快速启动和运行Spring应用。SpringBoot的特点包括: 1. 自动配置,SpringBoot会基于你添加的jar...
SpringBoot敏捷开发技术是现代Java应用开发中的一个关键框架,由Pivotal团队设计,旨在简化新Spring应用的启动和开发流程。它摒弃了传统Spring应用中的繁琐配置,采用了一种约定优于配置(Convention over ...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循敏捷开发原则,致力于简化Web开发过程。...对于寻求快速原型构建或希望提升开发效率的团队来说,Rails无疑是一个值得考虑的选项。
5. **迭代评审和规划**:每个迭代结束时,团队展示可工作的软件,并根据反馈进行下一轮的规划。 **四、敏捷开发的挑战与收益** 敏捷开发虽带来了更高的效率和客户满意度,但也面临挑战,如需求管理、团队协调、...
Scrum敏捷项目管理方法以其灵活性、迭代性和团队协作性,成为应对复杂性和变化的有效工具。通过清晰的角色分工、短周期的迭代以及持续的反馈和改进,Scrum帮助团队提高了生产力,确保了软件项目能够快速适应市场需求...
### 应用Yii1.1和PHP5进行敏捷Web开发:深入解析 #### 一、Yii框架概述 在Web开发领域,框架的选择至关重要,能够显著提升开发效率与应用质量。《应用Yii1.1和PHP5进行敏捷Web开发》一书深入介绍了如何利用Yii框架...
**正文** 在软件工程领域,敏捷开发是一种以人为核心、迭代、逐步交付的软件开发方法论。...在实际应用中,敏捷方法需要团队成员具备高度的自我组织能力和跨职能技能,同时也要求组织文化和管理方式的支持。
- **客户合作高于合同谈判**:鼓励频繁的客户反馈和调整,而非僵化的合同约定。 - **响应变化高于遵循计划**:面对需求变化,敏捷方法主张灵活应对而非固守原计划。 2. **敏捷开发实践**: - **迭代开发**:将...
4. 敏捷宣言(Agile Manifesto):敏捷宣言是敏捷开发的基础,它包括四个核心价值观和十二项原则,引导开发团队在实践中采用敏捷方法。 5. 用户故事(User Stories):一种用来描述产品需求的技术,通常以“作为一名...
3. **客户合作高于合同谈判**:敏捷团队鼓励与客户的密切合作,以确保产品符合实际需求,而不仅仅是遵循预先约定的合同。 4. **响应变化高于遵循计划**:敏捷方法承认需求可能会改变,因此强调适应性,允许在项目...
在敏捷开发中,验收测试通常与用户故事相关联,每个用户故事都有明确的验收标准,这些标准在故事卡上以“作为一个…,我想要…,以便…”的形式描述。验收测试驱动开发(ATDD)和行为驱动开发(BDD)是两种常见的...
总结来说,项目管理涉及多个方面,包括敏捷团队的管理、知识的统一和问题的解决。在面对这些问题时,项目经理应该灵活运用各种策略,如赋予团队自主权、提供一致的培训、及时更新项目文档以及有效处理团队中的问题,...