原文转自thoughtworks员工gigix:
http://gigix.thoughtworkers.org/2012/5/8/result-oriented-and-test-driven
“结果导向”是个职场里很流行的词。六年前我跟 夏姐姐 去校园招聘,她说如果是招销售的话就会更多要求结果导向。然而我现在发现,所谓结果导向,其实跟 测试驱动开发 是同一回事。所以像ThoughtWorks这样很认同TDD的环境,即使不是销售,做事同样要强调结果导向。
类似的话题其实我 之前也讲过 。我还可以再举一个最近的例子,读者们一起来做做思维练习:
你是一个项目经理。你带着另外两个兄弟漂洋过海来到A国,客户是A国数一数二的保险公司S。你要跟S公司的人一起工作一段时间,然后回到中国来形成离岸外包的局面继续工作。可是事情没那么简单。S公司这是第一次把核心系统研发工作离岸外包,公司上下没人知道这事情该怎么操作。倒是负责风险控制的部门知道哪些事情不能做,比如说把源代码弄到中国这事就不能行,更不用说信用卡数据了,那是压根就不能允许在中国的显示器上出现。客户的团队对你们也持怀疑眼光,连自己公司在A国的同事也有点搞不清你们到底需要什么帮助。
现在,作为这个焦头烂额的项目经理,显然你有很多事要做。噢对了,你们的签证只有六周⋯⋯
你会做哪些事?你会首先做哪些事?
这时候我给这个团队的建议就是:你们需要测试驱动。如果要为这六周的onsite工作写一个验收测试,这个测试应该是什么?这个spec应该写着“可以离岸外包”。如何测试可以离岸外包?你需要让至少一个人尽早开始以离岸外包的方式工作。当你们在A国的时候,这个人从中国开始以离岸外包的方式工作了,客户开始为他付钱了,这个测试就通过;反之,不管你在客户现场做得再high、客户对你再满意,当你回国以后一定会出问题。
这一个验收测试又会被细分为更多的功能测试,例如“可以访问源代码”、“数据安全通过检查”⋯⋯最终某些功能测试真的会被实现为自动化的测试代码,另一些将会是人为的检查点。重点在于,你在客户现场要做什么、要先做什么,不是由你预先设计的,也不是拍脑袋拍出来的,而是由验收测试驱动出来的。我应该动手解决数据安全问题吗?我应该建议客户增加一个迭代经理吗?我应该给客户做一个关于中国文化的session吗?答案都在于:你当前“红”的测试是什么?你做这件事将以何种方式使哪个测试变“绿”?
传统的管理者们会说这就叫“结果导向”。
类似的案例还有很多。比如说,如果你要为离岸外包交付这件事写一个测试,你会怎么测它呢?你应该很快发现,像“客户满意”这种虚无缥缈而又变幻莫测的东西,并不适合作为验收测试。一个既简单又明确的验收测试应该是“客户为我们的工作付钱”。那么当你用这样一个测试来驱动自己的工作,你就不那么容易犯下填错timesheet之类的低级错误,因为你会意识到:不管工作有多认真多高质量客户有多happy,如果你的timesheet里没有填那么客户是不会为你的时间付钱的,那么你的验收测试就“红”了。
所以,结论一:就像德鲁克说的,一切绩效都在企业之外。忘记什么角色定义啦工作流程啦职位分工啦绩效考核啦之类的bullshit吧,如果你用“客户买单”这样的外在成就来作为大多数事情的验收测试,你会把工作这件事看得清晰得多。结论二:好的程序员干别的事都比较有希望,因为我们会测试驱动。(潜台词:糟糕的程序员能转成好的项目经理这回事怎么听怎么不靠谱⋯⋯)
原文转自thoughtworks员工gigix:
http://gigix.thoughtworkers.org/2012/5/8/result-oriented-and-test-driven
分享到:
相关推荐
本课程的核心理念是“问题驱动”,强调在测试过程中以问题为导向,通过解决实际遇到的问题来提升测试效果和效率。 一、问题驱动模式基础 问题驱动模式是一种以实际问题为中心的学习和工作方法,它要求我们首先识别...
5. **总结反馈**:测试结束后,对测试过程和结果进行总结,形成有价值的反馈意见,用于后续项目的改进。 通过上述内容可以看出,“问题驱动的软件测试设计”是一种综合性的测试设计思路,它不仅包含了传统的测试...
问题驱动测试设计是一种高效且系统化的软件测试方法,它强调以待解决的问题或已知的风险为出发点来规划和执行测试活动。这种方法论的核心理念是将测试过程与软件开发过程紧密结合,确保测试工作始终关注于业务需求、...
### 专业导向和项目驱动模式下的Oracle数据库课程教学改革探讨 #### 一、Oracle数据库课程教学现状和目标 Oracle数据库课程在当前应用型本科院校的电子信息类专业中占据着重要的地位。然而,传统教学方法中存在的...
总的来说,测试驱动开发是一种强调以测试为导向的编程实践,它通过先写测试后写代码的方式,推动了更好的设计和更高质量的软件。尽管有其挑战,但TDD已被证明在许多项目中是成功的,特别是在需要高度可靠性和可维护...
Quick是一款强大的行为驱动开发(Behavior-Driven Development, BDD)测试框架,专为Swift和Objective-C编程语言设计。它的核心理念在于通过简洁、易读的语法,使得测试代码更加接近自然语言,从而提升团队之间的...
总之,“项目导向、任务驱动”的教学改革为Oracle数据库课程注入了新的活力,它能有效提升学生的实践能力和就业竞争力,适应信息化时代对数据库人才的需求。教育工作者应积极探讨和实施这样的教学模式,以培养出更...
6. 选择镜像的驱动盘,按照导向指引安装操作系统 配置IP和yum源 配置IP和yum源需要按照以下步骤进行: 1. 配置IP 2. 配置yum源 3. 添加hosts配置,使得yum能识别源中的rdmirrors.h3c.com域名 intel E810 RDMA...
在描述中,我们看到同样的标题,这进一步确认了文档内容的核心是关于导向轮结构的设计,特别是其驱动装置和运动方向切换的功能。这种设计可能是为了提高设备的灵活性和效率,减少人工干预,或是在狭小空间内实现更...
TDD 测试驱动在软件工程中的辩证思考 软件工程中,TDD 测试驱动开发模式是一种重要的开发方法论。该模式自上世纪九十年代中后期开始流行以来,一直在争论中前进发展。TDD 模式的优点在于可以提升代码的质量,要求...
- **测试驱动开发**:采用TDD(Test-Driven Development)方法提高代码质量和可测试性。 - **重构实践**:持续改进代码结构,提升软件质量。 #### 四、团队能力与协作 - **领域专家参与**:业务领域的主题专家应该...
7. **测试驱动开发** - 使用TDD可以确保领域模型的正确性,从一开始就关注业务需求。 8. **重构** - 随着业务需求的变化,领域模型应定期重构以保持其清晰性和有效性。 通过一个贷款处理应用的示例,我们可以看到...
用项目驱动的方式,设置实际的软件测试项目,让学生在实践中理解和掌握软件测试的各个环节,包括需求分析、测试计划、测试用例设计、执行测试、缺陷管理以及测试报告编写等,以此提升他们的工程实践能力。...
7. 结果导向:根据项目目标和质量指标,评估测试人员的工作成果,比如测试覆盖率、产品质量、用户满意度等。 通过这样的考核体系,可以全面了解测试人员的综合能力,为个人发展和团队建设提供依据。同时,考核表也...
在实验室测试中,该通信系统在125℃高温环境下,通信误码率可以达到10^-6,这满足了旋转导向仪器对耐高温、高可靠性和实时性的要求。此外,在旋转导向工具的工程应用中,该系统也表现出了良好的应用效果。 四、旋转...
WinRunner采用的是对象导向的方法,支持多种编程语言,使得测试脚本的编写更加灵活和高效。 测试用例设计是自动化测试的关键环节,它直接影响到测试的质量和效果。测试用例应具备有效性,能有效地发现软件缺陷;...
白盒测试,也称为结构测试或逻辑驱动测试,是一种针对软件内部结构和操作的测试方法。这份最新的白盒测试指南详细介绍了如何有效地进行此类测试,特别是在NC产品程序代码的上下文中。 1. **测试目的**: - 目标是...
黑盒测试,又称为功能测试或数据驱动测试,是一种重要的软件测试方法。它主要关注于软件产品的功能是否符合用户需求,而不考虑程序内部的具体实现细节。黑盒测试的目的在于验证软件的功能表现与预期的一致性,确保...