软件测试策略模式.docx
《软件测试策略模式.docx》由会员分享,可在线阅读,更多相关《软件测试策略模式.docx(48页珍藏版)》请在三一办公上搜索。
1、_软件测试面试必备第18章测试策略模式18.1 记录测试(也称为记录与回放测试、机器人用户测试、捕获/回放测试)如何准备软件的自动化测试?通过记录与应用程序的交互并使用测试工具回放它们来自动化测试。图18-1 记录测试示意图自动化测试有几个目的。在回归测试软件更改之后,它们可以用于这些软件。它们有助于归档软件的行为。在写软件之前,它们可以指定其行为。如何准备自动化测试脚本,对可以将它们用于什么目的、它们对SUT中的变更有多健壮以及准备它们需要多少技能与努力等产生影响。记录测试使得能够在构建SUT之后、改变它之前迅速创建回归测试。18.1.1 运行原理我们使用一种工具,它会监控我们与SUT的交互
2、。这种工具记录大多数SUT对我们的通信以及我们对SUT的响应。录音会话完成之后,可以将它保存在文件里以便稍后回放。准备运行测试时,可以从工具的“回放”部分开始,并让它指向录音会话。它启动SUT,并给它提供响应SUT输出的记录输入。在录音会话内,它也可以比较SUT的输出及其响应。错误匹配可能导致测试失败。有些记录测试工具允许调整录音会话内SUT表现与回放过程中SUT表现之间比较的敏感性。大多数记录测试工具通过用户界面与SUT交互。18.1.2 使用时机如果应用程序正在运行,但不希望对它进行太多变更,就可以使用记录测试进行回归测试。现有应用程序需要重构(预计修改功能性)而没有可用的脚本测试用作回归
3、测试时,也可以使用记录测试。通常,生成一组记录测试比准备具有相同功能性的脚本测试更快。在理论上,任何知道如何运行应用程序的人都可以完成测试记录,几乎不需要专业技术。实际上,许多商业工具都值得深入学习。同时,需要一些专业技术来添加“检查点”,以便调整回放工具的敏感性,或者调整测试脚本(如果记录工具记录了错误信息)。大多数记录测试工具通过用户界面与SUT交互。如果SUT的用户界面不断发展,这种方法特别容易让它们变得脆弱(接口敏感性,参见“脆弱测试”)。甚至是小的变更(例如改变按钮或字段的内部名称)也足以让回放工具产生错误。这些工具也倾向于在低级别详细记录信息,这样会让测试难以理解(参见“模糊测试”
4、)。因此,如果对SUT的变更中止了这些工具,也很难手动修复它们。所以,如果SUT不断发展,就要准备有规律地再记录测试。如果要使用作为文档的测试或者要使用这些测试驱动新的开发,就应该考虑使用脚本测试。使用商业记录测试工具难以实现这些目标,因为大多数工具不允许定义用于测试记录的高级语言。将记录测试性能构建到应用程序本身之中或者使用重构的记录测试可以解决这个问题。变体:重构的记录测试这两种策略的混合是,使用“记录、重构、回放”1 名称“记录、重构、回放”是Adam Geras提出来的。顺序从最新记录测试中提取一组“动作组件”或“动词”,然后通过测试用例来调用这些“动作组件”(而不是使用详细的内联代码
5、)。大多数商业捕获/回放工具提供将字面值转换为参数的方法,主要的测试用例可以将这些参数传递到“动作组件”。屏幕改变时,只需再记录“动作组件”,所有测试用例自动使用新的“动作组件”定义继续运行。这种策略在效能上与使用测试实用程序方法与单元测试中的SUT交互相同。它允许使用重构的记录测试组件作为脚本测试中的高级语言。像Mercury Interactive的BPT2 BPT是“业务进程测试(Business Process Testing)”的缩写。这样的工具以自顶向下的方法将这一范式用于脚本测试。开发完高级脚本并指定了测试步骤所需的组件之后,更多的技术人员就可以记录或手动编码单个组件。18.1.
6、3 实现方式说明使用记录测试策略时,有两种基本选择:可以获得第三方工具,它记录与应用程序交互时发生的通信;可以将“记录与回放”机制内置于应用程序。1. 变体:外部测试记录在商业上有许多测试记录工具可用,每种工具都有自身的优缺点。最好的选择取决于应用程序用户接口的性质、预算、要验证的功能性的复杂性以及其他可能的因素。如果要使用测试来驱动开发,就需要挑选使用测试记录文件格式的工具,这种格式可以手动编辑且易于理解。需要手动编写内容,如果使用“记录与回放”工具来执行测试,这种情况也还是脚本测试的示例。2. 变体:内置测试记录也可以将记录测试性能内置于SUT。在那种情况下,可以用相当高的级别定义测试脚本
7、“语言”,级别足够高,就可以在构建系统之前手动编写测试。实际上,有报告说Microsoft Excel电子数据表的VBA宏性能是Excel自动化测试机制的开端。18.1.4 示例:内置测试记录从表面上看,提供记录测试的代码样本没有意义,因为这种模式处理生成测试的方法,而不是表示它的方法。回放测试时,实际上就是数据驱动测试。同样,通常不重构到记录测试,因为它经常是项目尝试的第一种测试自动化策略。而且,如果发现有过多遗漏的测试,还可以在尝试脚本测试之后引入记录测试,因为手动自动化的成本太高。在那种情况下,不应该试图将现有脚本测试转换为记录测试,应该记录新测试。下面是应用程序本身记录的测试的示例。该
8、测试用来回归测试安全关键的应用程序,并且在它从OS2上的C移植到Windows上的C+之后。请注意,记录的信息如何形成用户易于理解的域专用高级语言。 5566 SOUTH SOUTH NORTH SOUTH NORTH 该样本表示回放测试的输出。内置回放机制插入了actual元素。status属性表示这些元素是否匹配expected值。将样式表应用于这些文件来格式化它们,就像具有彩色编码结果的Fit测试一样。然后项目的商业用户可以进行记录、回放和结果分析。在软件的表示层插入挂钩可以记录用户和用户响应提供的选项列表。其中一个挂钩的示例如下所示:if (playback_is_on() choic
9、e = get_choice_for_playback(dialog_id, choices_list); else choice = display_dialog(choices_list, row, col, title, key); if (recording_is_on() record_choice(dialog_id, choices_list, choice, key); 方法get_choice_for_playback检索used-value元素的内容,而不是要求用户从选项列表中选取。方法record_choice生成actual元素并“断言”expected元素,记录各元素
10、status属性的结果。注意,当处于回放模式时,recording_is_on()返回true以便记录测试结果。18.1.5 示例:商业记录与回放测试工具几乎有所商业测试工具都使用“记录与回放”隐喻。每种工具都定义自己的记录测试文件格式,其中大多数都非常冗长。下面是使用Mercury Interactive的QuickTest Professional QTP工具记录的测试的“简短”摘要。它显示于“专家视图”中,该视图表示真正记录的内容:VbScript程序!该示例包括手动插入的注释(前缀为)来说明测试在做什么,如果改变导致测试不再运行的应用程序之后记录测试,那么就会丢失这些注释。 GoToP
11、ageMaintainTaxonomy()Browser(Inf).Page(Inf).WebButton(Login).ClickBrowser(Inf).Page(Inf_2).Check CheckPoint(Inf_2)Browser(Inf).Page(Inf_2).Link(TAXONOMY LINKING).ClickBrowser(Inf).Page(Inf_3).Check CheckPoint(Inf_3)Browser(Inf).Page(Inf_3).Link(MAINTAIN TAXONOMY).ClickBrowser(Inf).Page(Inf_4).Check
12、CheckPoint(Inf_4) AddTerm(A,Top Level, Top Level Definition)Browser(Inf).Page(Inf_4).Link(Add).Clickwait 4Browser(Inf_2).Page(Inf).Check CheckPoint(Inf_5)Browser(Inf_2).Page(Inf).WebEdit(childCodeSuffi x).Set ABrowser(Inf_2).Page(Inf).WebEdit(taxonomyDto.descript).Set Top Level Browser(Inf_2).Page(I
13、nf).WebEdit(taxonomyDto.definiti).Set Top Level Definition Browser(Inf_2).Page(Inf).WebButton(Save).Click wait 4Browser(Inf).Page(Inf_5).Check CheckPoint(Inf_5_2) SelectTerm(A-Top Level) Browser(Inf).Page(Inf_5).WebList(selectedTaxonomyCode).Select A-Top Level AddTerm(B,Second Top Level, Second Top
14、Level Definition)Browser(Inf).Page(Inf_5).Link(Add).Click wait 4 Browser(Inf_2).Page(Inf_2).Check CheckPoint(Inf_2_2)infofi le_;_Inform_Alberta_21.inf_;_hightlight id_; _Browser(Inf_2).Page(Inf_2)_;_ and it goes on, and on, and on .注意,测试依据应用程序用户界面描述所有输入和输出的方法。这样主要会产生两个问题:模糊测试(由记录信息的具体性质所导致)和接口敏感性(导致
15、脆弱测试)。18.1.6 重构说明让该测试作为文档可以使之更有用,能够降低或避免高测试维护成本,支持使用一系列提取方法Fowler重构组成使用高级语言的其他测试。18.1.7 示例:重构的商业记录测试下面的示例显示重构来交流意图的相同测试:GoToPage_MaintainTaxonomy()AddTerm(A,Top Level, Top Level Defi nition)SelectTerm(A-Top Level)AddTerm(B,Second Top Level, Second Top Level Defi nition)注意,该测试的意图变得非常明显。提取的测试实用程序方法如下所
16、示:Method GoToPage_MaintainTaxonomy()Browser(Inf).Page(Inf).WebButton(Login).Click Browser(Inf).Page(Inf_2).Check CheckPoint(Inf_2) Browser(Inf).Page(Inf_2).Link(TAXONOMY LINKING).Click Browser(Inf).Page(Inf_3).Check CheckPoint(Inf_3) Browser(Inf).Page(Inf_3).Link(MAINTAIN TAXONOMY).Click Browser(Inf
17、).Page(Inf_4).Check CheckPoint(Inf_4)EndMethod AddTerm( code, name, description)Browser(Inf).Page(Inf_4).Link(Add).Clickwait 4Browser(Inf_2).Page(Inf).Check CheckPoint(Inf_5)Browser(Inf_2).Page(Inf).WebEdit(childCodeSuffi x).Set code Browser(Inf_2).Page(Inf).WebEdit(taxonomyDto.descript).Set name Br
18、owser(Inf_2).Page(Inf).WebEdit(taxonomyDto.defi niti).Set description Browser(Inf_2).Page(Inf).WebButton(Save).Click wait 4Browser(Inf).Page(Inf_5).Check CheckPoint(Inf_5_2) endMethod SelectTerm( path )Browser(Inf).Page(Inf_5).WebList(selectedTaxonomyCode).Select pathBrowser(Inf).Page(Inf_5).Link(Ad
19、d).Clickwait 4 end我将这个示例编在一起是为了说明与xUnit中做法的类似之处。不要随便运行该示例,因为在语句构成上它可能不正确。18.1.8 高级阅读论文“Agile Regression Testing Using Record and PlayBack”ARTRP介绍了将记录测试机制内置于应用程序以利于将它导出到其他平台的经验。18.2 脚本测试(也称为手写测试、手动编码测试、程序测试、自动化单元测试) 如何准备软件的自动化测试?通过手动写测试程序来自动化测试。图18-2 脚本测试示意图自动化测试有几个目的。在回归测试软件更改之后,它们可以用于这些软件。它们有助于归档软件
20、的行为。在写软件之前,它们可以指定其行为。如何准备自动化测试脚本,这将影响可以将它们用于什么目的、它们对SUT中的变更有多健壮以及准备它们需要多少技能与努力。脚本测试允许在开发软件之前准备测试,以便它们有助于驱动设计。18.2.1 运行原理通过写测试程序来自动化测试,这些测试程序为了执行其功能性而与SUT交互。和记录测试不一样,这些测试可以是客户测试或单元测试。这些测试程序通常称为“测试脚本”,以便与它们测试的产品代码区分开来。18.2.2 使用时机准备软件的单元测试时,通常使用脚本测试。因为它更容易从用相同编程语言写的软件中直接访问单个单元。它也允许执行所有代码路径,包括“不合理的”。客户测
21、试稍微有些复杂。当使用自动化故事测试来驱动软件开发时,应该使用脚本测试。记录测试不能很好满足这种需要,因为没有用来记录它们的应用程序时它难以记录测试。准备脚本测试可以使用编程经验以及测试方法中的经验。项目上的大多数业务用户不可能对学习如何准备脚本测试感兴趣。在编程语言中进行脚本测试的方法之一是,定义测试SUT的高级语言,然后作为数据驱动测试解释程序GOF实现该语言。一种定义数据驱动测试的开源架构是Fit及FitNesse。Canoo WebTest是支持这种类型测试的另一种工具。在现有遗留应用程序3 在测试驱动程序中,遗留应用程序是缺乏自动化测试安全网的系统。中,可以考虑使用记录测试作为快速创
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 策略 模式

链接地址:https://www.31ppt.com/p-1716552.html