- 全程软件测试,测试是重中之重。
- 全程自动化测试,测试原来可以是这样的。
- 全程缺陷预防,测试工作已经不是那么重要。
————————————译文————————————————-
由于当前商业和IT环境的驱动,软件测试的理念、实践和工具正在发生一些革命性的变化。这种变化将给专业测试人员及其测试工作带来什么样的影响?
这些驱动正在改变专业测试人员的生活
IT操作的商业环境正在发生变化,这直接影响着商业和IT如何看待专业的测试人员。测试已经不仅仅充当门卫(Gatekeeper),而且是一个变革的倡导者,一些测试人员在足够早的时候发现风险,从而为如何开发和部署软件带来更高的效率。这种变化的驱动因素来自于:
- 越来越多的普通人正在广泛使用IT, 或IT系统
- 在激烈的市场竞争中的产品上市时间(Time-to-market)的压力
- 商业环境的快速变化
- 软件应用方面的规则的影响
- 长期投资回报(ROI)周期意愿的降低
- 在IT方面聪明地花钱-大型项目的失败率仍然很高
- IT系统、平台和用来构建它们的语言等类型或形式越来越多
软件测试和SDLC(软件开发生命周期)软件测试不再是一个事后的想法
测试计划是项目计划中不可缺少的部分
测试正在变得比以往复杂得多。一个典型的企业应用系统总是要与其它内部和外部应用系统进行关键性的集成。大多数的应用都有各种功能和非功能测试(从可用性、性能、可扩展性到部署、安装)任务,这些任务需要事先为环境、测试数据收集和专业技能等进行计划。其中一些需要花费较长的准备时间。如果缺乏前期规划,测试就会成为项目的瓶颈,这越来越成为大家的共识。所以,测试计划变得越来越积极,项目一开始就策划。
一个渐进的规划正变得越来越必要。做什么和什么时候做的问题越来越多地被事先回答,而且在接近测试执行的时候,怎么做的问题也已计划好。
测试团队的早期参与是强制性的
从早期发现和修订问题到提供可预测性、大量成本节省和高效的变化过程,IT组织正在意识到极大的好处。
对一个专业的测试人员而言,机遇与挑战并存。这是协作的必然要求,有多种技能的测试人员可以消除商业和技术之间的隔阂,并理解使前期测试可行的实践方法和工具。
有些技能是共同的:
- 良好的分析能力,以获得客户和业务分析专家的认可
- 能够快速创建适应代码多次变化的自动测试框架
- 不仅仅是一个自动化测试工具的专家,而且是测试自动化的专家,能够在必要时开发合适的工具
- 基于商业价值及其相关的技术风险的测试设计技能
可测性是一个设计标准
早期的测试参与是一个不可替代的要求。例如,可测性已经越来越多地成为一个设计标准,以便允许早期的、有效的、快速的和可维护的测试创建。测试人员与开发人员的协作是极为重要的。
在如何或何处将可测试性作为设计标准方面的一些例子,有助于测试和自动化测试,例如:
- 确保用户界面和商业逻辑的分离,使得我们可以在适当的层次进行测试(用户界面或业务层)。这允许测试工具(如FIT/ FITNESSE)可以在UI设计没有最终确定或没有UI的情况下通过API进行测试。
- 可以更有效地使用UI对象的ID来完成UI的自动化测试
- 当外部系统不可用或仍处于开发阶段的时候,构建可配置的模拟系统来测试应用程序
软件测试的新趋势
- 从“精小”方面看测试 – 测试如何能够消除在交付过程中的浪费。这个思想确实可以驱动在工具方面和构建一个更具协作性的测试理念方面的改变,这种测试理念可以综合考虑利用IT项目中每个个体的能力而不仅仅是测试人员。
- 测试作为一个持续的反馈机制 – 测试正在渐渐成为一个持续的反馈机制,而不是在开发周期末尾的、已计划的活动。在一个构建流水线中,集成到持续的事件驱动机制中的功能测试意味着测试被应用程序的变化所驱动,而不是时间表所驱动。
- 用于定义测试的更高级语言 – 这些语言可以被非IT客户人群所理解。这使得测试可以被其他人所理解,而且允许不同的项目相关利益者或干系人(stakeholder)了解测试的价值。
- 在项目生命周期的早期开始自动化 – 正在开发的工具和框架使得测试维护是一个相对简单的任务。我们认为,由于测试代码和开发人员的代码类似,因此也可以从快速开发环境中的开发实践里获益,如重构(用以在代码中进行小的设计变更,而不影响行为。被目前的许多IDE所支持)和基于良好的面向对象编程的测试框架。
- 不仅仅是GUI驱动测试, 而且通过GUI的各个层次(包括底层)驱动测试。例如,测试和反馈一样重要,所以不管在哪个层次进行测试,关键是提供正在构建的应用程序是否正确的反馈。如FIT/ FITNESSE测试框架有助于构建可重复的、可扩展的、易读的非GU测试套件。
- 开源软件作为商业测试工具的可能的替代 – 商业工具提供商在自动测试领域并不具有绝对的优势。一个开发人员和测试人员的大型社区正在推行开源工具的广泛使用和开发。成功的工具和框架(如Selenium和 Fitnesse)就是开源工具在测试领域的有力证明。
新一代的专业测试人员
测试人员不再被看做搞怪的人(monkey tester)或者是令人扫兴的人(party pooper),而是在产品环境中应用程序可成功交付的干系人。
- 测试人员表现为客户和项目干系人的代表。
- 测试人员需要展示其对业务、客户需求的优先级和市场实际状况等的理解能力。
- 测试人员保护客户和项目干系人的利益,同时支持开发人员开发出更好的软件产品。
- 测试人员帮助开发团队避免偏离正确的轨道(局面不失控),如风险抑制、用正确的方式构建正确的东西、在开发周期早期检测应用程序的薄弱环节或区域。
- 测试人员将逐渐地将测试和开发团队的敌对关系转换为协作的关系。
参考:
Fit/FITNESSE:
<!--[if !supportLists]-->• <!--[endif]-->http://fit.c2.com/
<!--[if !supportLists]-->• <!--[endif]-->http://www.fitnesse.org/
<!--[if !supportLists]-->• <!--[endif]-->http://gojko.net/fitnesse/fixturegallery/
<!--[if !supportLists]-->• <!--[endif]-->http://www.fitnesse.info/
Selenium: