21世纪的软件测试

原文来自于Testing in 21st Century,翻译出来,供大家思考。从我个人观点看,21世纪的测试可以简单地概括为3句话(三段论):

  1. 全程软件测试,测试是重中之重。
  2. 全程自动化测试,测试原来可以是这样的。
  3. 全程缺陷预防,测试工作已经不是那么重要。

————————————译文————————————————-

<!--[if gte mso 9]&amp;gt; Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 --><!--[if gte mso 9]&amp;gt; --> <!-- /* Font Definitions */ @font-face {font-family:Helvetica; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536902279 -2147483648 8 0 511 0;} @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0pt; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:Calibri; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} span.google-src-text1 {mso-style-name:google-src-text1; font-family:"Times New Roman"; mso-bidi-font-family:"Times New Roman"; display:none; mso-hide:all;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:714818529; mso-list-template-ids:-1169770166;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l1 {mso-list-id:1541359353; mso-list-template-ids:-524236662;} @list l1:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l2 {mso-list-id:1927151671; mso-list-template-ids:-146878332;} @list l2:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l3 {mso-list-id:1929272832; mso-list-template-ids:-1475574448;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l4 {mso-list-id:1942950610; mso-list-template-ids:1223035088;} @list l4:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} ol {margin-bottom:0pt;} ul {margin-bottom:0pt;} --> <!--[if gte mso 10]&amp;gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0pt 5.4pt 0pt 5.4pt; mso-para-margin:0pt; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} -->

由于当前商业和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),而是在产品环境中应用程序可成功交付的干系人。

  • 测试人员表现为客户和项目干系人的代表。
  • 测试人员需要展示其对业务、客户需求的优先级和市场实际状况等的理解能力。
  • 测试人员保护客户和项目干系人的利益,同时支持开发人员开发出更好的软件产品。
  • 测试人员帮助开发团队避免偏离正确的轨道(局面不失控),如风险抑制、用正确的方式构建正确的东西、在开发周期早期检测应用程序的薄弱环节或区域。
  • 测试人员将逐渐地将测试和开发团队的敌对关系转换为协作的关系。
21世纪的组织需要在交付周期的早期引入测试以提供快速的反馈,构建安全而完整的自动化测试以满足应用程序快速变更的需 求,并较早让用户参与以构建正确的、有价值的测试。为了实现这些,他们需要接受多技能的职业培训,以获得最先进的测试方法。单独的测试人员不能带来测试的 高效,需要增加测试人员和业务专家、测试人员和开发人员以及测试人员和最终用户之间的协作。鼓励使用敏捷方法、工具和技术,从而有助于随时随地的协作来很 好地应对变更。

参考:
Fit/FITNESSE:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator" content="Microsoft Word 11"> <meta name="Originator" content="Microsoft Word 11"> <link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CKERRYZ%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0pt; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1549535150; mso-list-type:hybrid; mso-list-template-ids:-2000785202 2061685480 -1697449446 815696652 -1574413870 1252953478 -1348848514 1427555860 -1615814058 1493619722;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:宋体; mso-fareast-font-family:"Times New Roman";} @list l0:level2 {mso-level-start-at:204; mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:宋体; mso-fareast-font-family:"Times New Roman";} @list l0:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:111.0pt; mso-level-number-position:left; margin-left:111.0pt; text-indent:-21.0pt; font-family:Wingdings;} ol {margin-bottom:0pt;} ul {margin-bottom:0pt;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0pt 5.4pt 0pt 5.4pt; mso-para-margin:0pt; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

<!--[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:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator" content="Microsoft Word 11"> <meta name="Originator" content="Microsoft Word 11"> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0pt; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0pt 5.4pt 0pt 5.4pt; mso-para-margin:0pt; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

你可能感兴趣的:(xml,框架,软件测试,敏捷开发,企业应用)