基于QTP的自动化测试

本科毕业论文(设计)

题目:基于QTP 的自动化测试 姓 名:学 号:专 业:院 系: 信息工程学院 指导老师:职称学位:完成时间:

教务处制

安徽新华学院本科毕业论文(设计)独创承诺书

本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文(设计)是我个人在导师指导下进行的研究工作及取得的研究成果。据我所知,除文中特别加以标注引用参考文献资料外,论文(设计)中所有数据均为自己研究成果,不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的工作已在论文中作了明确说明并表示谢意。

毕业论文(设计)作者签名:

日期:

基于QTP 的自动化测试

摘 要

在软件开发过程中,软件测试是发现软件缺陷的最直接手段,也是作为控制软件缺陷最主要的手段。在不断寻找有效的测试方法同时,自动化测试已经成为提高软件测试效率和解决覆盖面的重要技术手段。

本次毕业设计,首先对现阶段国内外对自动化测试的研究成果及发展前景进行了调研,比较了传统手动测试与自动化测试的优缺点。然后利用自动化软件测试工具Quick Test Professional(简称QTP) ,以飞机订票系统(Flight )为测试对象,针对Flight 的具体功能进行自动化测试。测试过程包括各功能测试场景设计和用例的编写,测试脚本的创建、编辑,对测试脚本的增强、调试,以及对测试执行结果进行分析,检查测试运行过程的正确性。同时通过手工测试与自动化测对比,凸显自动化测试在测试效率等方面的优势。

关键词:软件测试;自动化测试;QTP ;功能测试

I

QTP -based automated testing

Abstract

In the process of software development , software testing is the most direct means to find software defects , but also as a means to control the most important software defects . Constantly looking for effective testing methods at the same time , improve the automated testing software testing has become an important technical means to solve the efficiency and coverage .

The graduation project , the first stage at home and abroad for research and development prospects of automated testing conducted an investigation to compare the advantages and disadvantages of the traditional manual testing and automated testing . The use of automated software testing tools Quick Test Professional ( referred QTP), to airline reservation systems (Flight) of the test object , automated testing of specific functional Flight . The functional testing process , including the design and preparation of test scenarios use cases , test scripts to create , edit, enhance test scripts , debug , and analyze the results of the test execution , test run to check the correctness of the process . By simultaneously measuring manual testing and automated comparison , highlighting the advantages of automated testing efficiency and other aspects of the test .

Keywords :Software Testing;Automated Testing;QTP ;Functional Testing II

目 录

1 概 述 . .......................................................................................................1

1.1 课题研究背景 ..........................................................................................1

1.2 国内外研究现状 ......................................................................................1

1.3 课题研究目的 ..........................................................................................2

2软件缺陷与软件测试 ..................................................................................3

2.1软件缺陷....................................................................................................3

2.1.1 软件缺陷与硬件缺陷异同 ...................................................................3

2.1.2 如何通过软件测试发现软件缺陷 .......................................................3

2.2软件质量与软件测试 ...............................................................................4

2.2.1软件开发模式与自动化测试 ................................................................4

2.3软件自动化测试与手动测试 ...................................................................5

2.3.1自动化测试与手工测试比较 ................................................................5

2.3.2如何开展自动化测试 ............................................................................5

2.3.3自动化测试方案 ....................................................................................6

2.4自动化测试工具介绍 ...............................................................................6

3 QuickTest Professional的简介 . ...................................................................9

3.1 QTP的安装与配置 . ..................................................................................9

3.2 QTP的使用 ............................................................................................ 10

3.2.2创建测试脚本 ..................................................................................... 11

3.2.3增强测试脚本功能 ............................................................................. 11

3.2.4运行与分析 ......................................................................................... 11

4 基于QTP 自动化测试的实施 . ................................................................ 13

4.1 登录功能测试 ....................................................................................... 13

4.1.1 测试用例............................................................................................. 13

4.1.2 脚本录制............................................................................................. 14

4.1.3 测试脚本............................................................................................. 15

4.1.4 执行结果............................................................................................. 16

4.2 订票功能测试 ....................................................................................... 18

4.2.1 录制脚本过程 .................................................................................... 18

4.2.2 调试测试脚本及注解 ........................................................................ 19

4.2.3 执行结果............................................................................................. 21

4.3 修改订单功能测试 ............................................................................... 21

4.3.1 测试用例............................................................................................. 21

4.3.2 录制脚本过程 .................................................................................... 22

4.3.3 调试测试脚本及注解 ........................................................................ 24

4.3.4 执行结果............................................................................................. 25

4.4 删除订单功能测试 ............................................................................... 26

4.4.2 录制脚本过程 .................................................................................... 26

4.4.3 调试测试脚本及注解 ........................................................................ 28

4.4.4 执行结果............................................................................................. 28

4.5 传真功能测试 ....................................................................................... 29

4.5.1 录制脚本过程 .................................................................................... 29

4.5.2 调试测试脚本及注解 ........................................................................ 30

4.5.3 执行结果............................................................................................. 31

5 测试结果分析 .......................................................................................... 33

5.1 测试用例汇总表 ................................................................................... 33

5.2 检查项 . ................................................................................................... 34

5.3 对比与分析 ........................................................................................... 34

5.4 分析与建议 ........................................................................................... 35

结 论 . ........................................................................................................ 37

参考文献 . ...................................................................................................... 38

致 谢 . ........................................................................................................ 39

1 概 述

1.1 课题研究背景

按时、高质量地发布软件产品是软件开发的最基本要求,而软件测试是软件质量保证的最重要的手段之一。对于软件,不论采用什么技术和方法来进行开发,软件产品中都会存在或多或少的错误和问题[1]。于是,软件测试便扮演了极其重要的角色,贯穿于整个软件生命周期,检验各个阶段的成果是否符合质量要求和达到预先定义的目标。

据大量统计资料显示,在典型的软件开发的项目中,软件测试投入的成本和工作量往往占到软件的总成本和总工作量的40%以上。传统的软件测试方式大多停留在内部测试、手工测试阶段,并不能完全适用于应用测试。由于较多的企业采用瀑布模型进行开发,往往在软件开发结束后才开始进行测试。这些都在极大程度上降低了测试的覆盖率,增加了测试的成本,影响了软件质量的可靠性[4]。

因此,软件测试自动化技术的出现,从真正意义上把测试人员从简单重复的劳动中解放出来,弥补了手动测试在应付大规模测试中疲态的缺陷,尤其是面对大量的数据需要检查时,人工的比较和搜索不仅效率低,而且容易出错,覆盖面偏低。它为软件开发团队节约了测试成本,提高了软件质量,缩短了产品发布周期。

1.2 国内外研究现状

软件测试是软件质量的护航者,只有通过了测试软件的设计、编码和规约的评审才能通过,在软件的整个生命周期中具有与软件开发相同的地位。在许多大型的软件公司,其测试人员和开发人员比例达到了1:1,甚至更多[4]。然而,在早期软件测试常常被忽视,软件经过开发人员简单的单元测试后进行发布,导致的后果可想而知。在美国北卡罗来纳大学召开的软件测试的正式技术会议,是软件测试技术发展历史上的一个转折点,它标志着软件测试成为了软件工程领域中一个独立而重要 1

的分支。此后,Gerhart 进一步总结原来的测试理论,将软件测试提升到理论的高度,作为实践性学科的参考[2]。

为了更好的实现测试的自动化,用自动化测试代替手工劳动,许多IT 厂商推出了以工具为中心的测试,是测试人员只需要关注脚本技术和配置文件的编写。常用的测试工具有Mercury Interactive公司的QTP 、LoadRunner 、TestDirectior ,IBM 的Web 自动化测试工具Rational Function Tester,Segue Software公司的Segue ,Compuware 公司的QACenter 。这些测试工具融入了许多新的技术,如面向对象技术,当针对不同的测试重点,可以采用相应的工具[3]。

国内的软件测试技术起步较晚,但随着国内软件企业规模的壮大,人才的引进和培养,越来越多的软件生产商开始在自动化测试领域中进行软件分析和测试工具的研究和开发。西北工业大学在C/S系统的测试方面进行了许多的研究工作,并且取得了一定的成绩。北京航空航天大学和北京大学经过技术的攻关,共同研制了一系列测试工具和程序理解工具,例如具有典型代表的SafePro/javao和SafePro C/C++。南京大学和航空局计算研究所开发的静态分析工具和测试用例自动生成工具,在嵌入式系统测试方面取得了较大的成功[10]。拥有自主知识产权的泽众软件是国内领先的专业功能测试工具、测试管理工具的供应商,从2004年起就推出了AutoRunner 、TestCenter 等优秀产品。

1.3 课题研究目的

本文旨在通过QTP 在具体案例中的使用,包括设计测试案例、录制、优化脚本功能等,来具体认识自动化测试对于普通应用软件,都可以发挥其功能测试和回归测试的优点,省去了手工测试的繁琐,更加低成本,便捷而快速的找出软件的BUG 所在,是软件开发中一个不可或缺的重要的一部分。

2

2软件缺陷与软件测试

2.1软件缺陷

2.1.1 软件缺陷与硬件缺陷异同

对于用户来说,软件缺陷与硬件缺陷一样,会对用户在使用时造成困扰。但是软件缺陷在一般情况下,不会对用户造成直接的人身伤害或经济损失,也因此很多人意识不到软件缺陷的危害性和严重性。然而在一些比较依赖软件进行业务处理的领域,便可能造成重大的经济损失,甚至危及生命,例如2007年4月,某个软件缺陷导致某地铁系统的列车火灾,软件未能检测和防止剩余动力在设备中的使用,导致车过热而起火。

因此,软件缺陷与硬件缺陷一样,都需要人们重视他们可能造成的危害与损失。不同在于,硬件缺陷大多是可预见的,比较容易被发现。软件缺陷的可预见性就没有那么强,其一个重要特点就是隐蔽性。由于软件的复杂度高,状态空间广阔,因此,要覆盖软件所有的可能行为几乎是不可能的。

2.1.2 如何通过软件测试发现软件缺陷

手工测试仍然是主要的查找错误的方式,自动化测试能部分地解决覆盖面的问题和测试效率的问题,但是不能从根本上解决问题。

而在软件测试之前的开发环节中,开发人员已经对对软件进行缺陷控制,尽管大多停留在“调试”阶段的测试水平。也因此软件测试成为了软件缺陷的主要控制手段和解决方法。测试人员通过产品需求,以及用户的实际业务背景,设计出各种测试用例,通过执行测试用例,判断被测试的应用程序是否满足用户需求。

在测试用例中,主要分为两种。一是验证软件功能正确的;另一种适用于证明软件错误的。如果将这这些用例转化为可被自动化测试工具执行的脚本,那么就成了一个自动化测试用例,使用自动化的方式执行,提高效率。

3

2.2软件质量与软件测试

软件质量是软件产品的核心价值体现,也是企业竞争力的体现,重视软件质量的企业通常能获得更多的收益。软件质量也是软件项目管理的重要组成部分,在不同的开发模式中,都会围绕软件质量管理提出相应的做法。

1986年,ISO8492给出了质量定义:质量是产品或服务满足明示或暗示需求能力的固有特性和特征的集合。而在IBM RUP(统一过程)中,质量被定义为“满足或超出认定的一组要求,并使用经过的认可的评测方法和标准来评估,还使用认定的流程生产”。因此,质量不是简单地满足用户需求,还得包含证明质量达标所使用的评测方法及标准,以及如何实施可管理、可重复使用的流程,以确保由此流程生产的产品已达到预期的、稳定的质量水平。

1983年,ANSI IEEE STD729给出了软件质量的定义[ 6],包括:

(1)软件产品质量满足用户要求的程度;

(2)软件各种属性的组合程度;

(3)用户对软件产品的综合反映程度;

(4)软件在使用过程中满足用户要求的程度。

简而言之,功能、性能和可靠性是衡量软件质量的三个维度指标。

2.2.1软件开发模式与自动化测试

在不同的开发模式中,软件测试的地位和作用略有不同,但却不可能消失。在传统的瀑布开发模型中,软件测试作为一个独立的阶段出现,在进入测试阶段之前,应该完成编码并且提供完善的需求、设计和文档。如果在需求定义方面做得很好,对自动化测试十分有益,可以尽早的选择测试策略,让自动化测试高层次整体地进行。

而在RUP 迭代模型中,实施自动化测试时,需要与开发策略紧密结合,关注早期构建、迭代的速度、风险、覆盖目标等。

敏捷方法则打破了传统的自动化测试方法,第一个破坏点集中在自动化的可接受性测试,很难被其他类型的自动化重用。细粒度的迭代让每次的测试很难击中目

标和定义标准。

2.3软件自动化测试与手动测试

2.3.1自动化测试与手工测试比较

软件测试的一个显著特点就是重复性,重复的工作除了机器人没人忍受的了。在精确性的问题上,当手动测试遭遇大量的数据需要检查的时候,数据比较和搜索定位不仅效率不高而且易出错,达不到预期的覆盖率。伴随着产品的完善,软件功能的逐步完善,需要测试的内容有时候会呈现几何倍数增长,人工进行回归测试便显得捉襟见肘。当然不意味着手动测试就这样被淘汰,手工测试有这其不可替代的地方:

(1)测试用例的设计:测试人员的经验和判断能力是一切工具不具备的

(2)界面和用户体验:人类的审美和感官及心理体验是其他无法代替的

(3)正确性的检查:工具是不具备推理和逻辑思维的。

而在借助计算机强大的计算能力下,可以不知疲倦、重复的运行,对于大量的数据也能在短时间内处理结束。于是自动化测试的优势则表现如下:

(1)可重复性强

(2)计算精确

(3)大批量操作

(4)覆盖面广

(5)搜索效率高

2.3.2如何开展自动化测试

在软件测试的阶段,自动化测试应该被当作一个项目来开展。首先要确定所开发的软件项目采用自动化测试是否适用。短期的或者一次性的项目不宜采用,因为这反而增加开发周期和成本。同样,在一个非常紧迫的项目中也是不合适的,因为需要测试人员开发编写测试脚本,并需要开发人员的配合使得整个进程更加紧张仓促,适得其反。

其次,什么时候开始自动化测试项目?不能过早,太早的话,软件不成形,界面、编码等不稳定,改动频繁,这时候开展自动化徒增成本,得不偿失。可以在雏形期做一些准备,考虑测试工具的选择。熟悉和了解各种编程语言、编程工具,以及各种控件会使得在开展测试时得心用手。

2.3.3自动化测试方案

在选择测试方案的时候,要参照下列因素[4]:

(1)项目的影响:制定的方案是否对整个项目有积极作用,或者让开发更敏捷

(2)复杂度:自动化是否容易实现

(3)时间:自动化测试的实现需要多少时间

(4)早期需求和代码的稳定性:如果不能稳定,那么自动化测试介入会很尬尴

(5)覆盖率:能否覆盖程序中的关键特性和功能

(6)资源:有没有足够的人力资源、数据资源、硬件资源来支持自动化的开展 在确定方案后,测试脚本的编码阶段,编写方法也左右着自动化测试的效率和质量。自动化功能测试的开发方式主要有:

(1)线性的

(2)结构化的

(3)共享的

(4)数据驱动的

(5)关键字驱动的

2.4自动化测试工具介绍

QTP 全名HP QuickTest Professional software ,2012年12月6日发布了11.5版本,并更名为Unified Functional Testing

QTP 是Quick test Professional的简称,是一款自动化测试工具。自动化工具出现目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。在测试前要考虑好如何制定相应的测试计划,例如要测试那些功能、操作步

骤、输入数据和期望的输出数据等。

WinRunner 是Mercury Interactive公司的一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放测试用户的操作,WinRunner 能够有效地帮助测试人员对复杂应用的不同发布版进行测试,提高测试人员的工作效率和质量,且保障跨平台的、复杂的企业级应用能够无故障发布及长期稳定运行。

Rational Robot作为业界最顶尖的自动化功能测试工具,它可以在测试人员学习高级脚本技术同时帮助其进行成功的测试。集成在测试人员的桌面IBM Rational Test Manager上,测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能十分利于刚进入测试领域的人员。

AdventNet QEngine.AdventNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Java API测试、web 性能测试、Java 应用性能测试、Web 功能测试、SOAP 测试、回归测试和Java 应用功能测试。支持对于使用HTML 、JSP 、ASP 、.NET 、PHP 、JavaScript/VBScript、XML 、SOAP 、WSDL 、e-commerce 、传统客户端/服务器等开发的应用程序进行测试。此工具为Java 技术开发,十分便于移植并可提供多平台支持。

SilkTest ,是用于对企业级应用进行功能测试的领先产品,可用于测试Web 、Java 或是传统的C/S结构。SilkTest 提供了丰富的功能,使用户能够高效地进行自动化测试。包括以下功能:测试的计划和管理,数据库访问及校验,便捷、强大的4Test 脚本语言,内置恢复系统(Recovery System),并具有使用同一套脚本进行跨平台、浏览器进行测试的功能。

QA Run。QARun 的测试实现方式是通过检测鼠标移动、键盘点击操作等被测应用,即而得到相应的测试脚本,对该脚本可以进行需要编辑和调试。在记录的过程中可针对被测应用中所包含的功能点进行基线值的建立,即在插入检查点的同时建立预期值。在这里检查点是目标系统的一个特殊方面在一特定点的期望状态。一般,检查点在QARun 提示目标系统执行一系列事件之后被执行。检查点用于确定当前实际结果与预期值是否一样。

Test Partner作为一个自动化的功能测试工具,它专为测试基于微软、Java 和Web 技术的复杂应用而设计。它使测试人员和开发人员都可以使用可视的脚本编制和自动向导来生成可重复的测试,用户可以在任何水平层次和细节条件下,调用VBA 的所有功能进行测试。TestPartner 通过采用通用的、分层的方式来进行脚本的开发。各水平的的测试人员都可以通过TestPartner 的可视化导航器来快速创建测试并执行。通过可视的导航器录制并回放测试,每一个测试都将以树状结构展示,以清楚地显现测试通过的应用路径。

Holodeck-强大的故障植入软件测试工具

Holodeck is an advanced fault-injection tool that gives you the power to attack an application while it monitors and logs everything your application does - every function call, registry entry, piece of data read or written.

AutoRunner 。AutoRunner 是黑盒测试工具,可以用来完成功能测试、回归测试,可以提高测试效率,降低测试人工成本。

产品可以对以下类型对象进行GUI 功能性测试:

(1)Windows 类型对象,一般为用C++/Delphi/VB/VFP/PB/.NetForm等技术开发的桌面程序。

(2)IE 网页对象,一般性的网站,比如大的门户类网站。

(3) Java 对象,一般为用AWT/Swing/SWT等技术开发的桌面程序。

(4)Flex 对象,网页的内容是用Flex 开发的。

(5) Silverlight 对象,网页的内容是用Silverlight 开发的。

(6) WPF 对象,一般为用WPF 技术开发的桌面程序。

(7) QT 对象,一般为用QT 技术开发的桌面程序。

3 QuickTest Professional的简介

QTP 是Quick test Professional的简称,是一款自动化测试工具。自动化工具出现目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。在测试前要考虑好如何制定相应的测试计划,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等[13]。

QTP 测试的对象,包括传统的Windows 应用程序,Web 应用等等。它可以覆盖绝大多数的软件开发技术,不仅简单高效而且具备测试用例可重用的特点。其中包括:创建测试脚本、插入检查点、增强测试脚本、运行测试与分析结果和维护测试等方面。

3.1 QTP的安装与配置

第一步:点击QTP 的执行文件,选择路径进行安装

第二步:安装完成后会出现下图的对话框,然后点击”OK”,如图3.1.1;

图3.1 初始界面图

第三步:选择“Blank Test”选项,如图3.1.2;

图3.2 空白测试创建

3.2 QTP的使用

QTP 进行功能测试的测试流程包括(1)制定测试计划(2)创建测试脚本(3)增强测试脚本功能(4)运行测试(5)分析测试结果] 五个步骤:

图3.3 测试流程图

3.2.1制定测试计划

自动测试的测试计划是作为测试全工程的指导,根据被测项目的具体需求,和使用的测试工具特征而制定。

QTP 作为功能测试工具,主要用于软件的功能测试。当然QTP 是不能完全取代测试人员的手工操作,如测试脚本的创建和测试用例的设计。但是在批量操作时,使用QTP 的确能够帮助测试人员高效的完成很多工作。在测试计划阶段,首先要做的就是分析被测应用的特点,决定应该对哪些功能点进行测试,可以考虑细化到具体页面或者具体控件。在普通的应用程序测试应用方面,QTP 在回归测试中是非常有效的。

3.2.2创建测试脚本

QTP 的自动录制机制能够将测试人员的每一个操作步骤及被操作的对象记录下来,自动生成测试脚本。相较于其他自动测试工具录制脚本更方便的是,QTP 除了以VB Script脚本语言的方式生成脚本语句以外,还将被操作的对象及相应的动作按照层次和顺序保存在一个基于表格的Keyword View(关键字视图)中。比如,当测试人员单击一个链接或选择一个Check Box或者提交一个表单,相应的操作流程都会被记录在关键字视图中。

3.2.3增强测试脚本功能

脚本的录制只是为了实现创建或者设计脚本的第一步,基本脚本录制完毕后,测试人员可以根据需要增加所需要的功能,QTP 允许测试人员通过脚本编辑器,在脚本中增加或更改测试步骤来修正或自定义测试流程,如增加多种类型的检查点功能,既可以让QTP 检查一下在程序的某个特定位置或对话框中是否出现了需要的文字。以及通过变量的参数化功能,使用多组的数据驱动整个测试过程。

3.2.4运行与分析

QTP 从脚本的第一行开始执行语句,运行过程中会对设置的检查点进行验证,从DataTable 中获取实际数据代替参数值,并给出相应的输出结构信息。测试过程中测试人员还可以调试自己的脚本,直到脚本完全符合要求。

图3.4 关键字视图

运行结束后系统会自动生成一份详细完整的测试结果报告。包括测试名称。测试开始和结束的时间,测试脚本运行的迭代次数、测试通过状态等。通过报告中的测试信息,发现错误并增强脚本。

4 基于QTP 自动化测试的实施

本篇论文使用的是Flight 这个Windows 应用程序,这个程序所实现的是关于机票预订、查询、传真等操作,下面通过设计各功能的测试用例,借助QTP 这款自动化测试工具,进行回归测试,实现对Flight 功能测试的自动化,从而展现出自动化测试的优势,并测试该应用软件是否有需要改进的地方。

4.1 登录功能测试

4.1.1 测试用例

表4-1 登录测试用例表

4.1.2 脚本录制

第一步:对于登录界面,首先对登录进行了录制,分别输入用户名及密码,生成了最简单的VB 脚本。如图4.1所示:

图4.1 登录界面

第二步:为了能全面的测试在任何输入的情况下都会有预想的结果,根据设计出来的测试用例,在Data Table中设置了AgentName 及Password 列,把可能的情况均

输入进去,之后让其自动的逐个运行测试。

第三步:测试要具有全面性,根据登录界面的按钮分布,先对Help 按钮进行设计,用IF 语句来控制确定Help 之中的内容后的确认。

第四步:接着运用For 语句,来实现对Data Table中Name 和Password 的逐个执行测试。

第五步:对容易出错的地方设置检查点,以便在自动测试时对其进行检测,有对话框上标题“Login”,按钮“OK”。如图4.2所示:

图4.2 Login检查点设置

4.1.3 测试脚本

Dialog("Login").WinButton("Help").Click ' 点击Help 按钮 If Dialog ("Login").Dialog ("Flight Reservations").Exist Then

Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click End If ' 判断在点击后是否出现对话框 Dim i

For i=1 to datatable.GetSheet("Action1").GetRowCount Dialog("Login").Check CheckPoint("Login_2")

Dialog("Login").WinEdit("Agent Name:").Set DataTable("name", dtLocalSheet) Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtLocalSheet)

Dialog("Login").WinButton("OK").Check CheckPoint("OK") '点击OK 按钮添加检查点 Dialog("Login").WinButton("OK").Click ' 从datatable 中调取测试用例 If Dialog("Login").Dialog("Flight Reservations").Exist Then Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click End If

datatable.GetSheet("Action1").SetNextRow Next

Dialog("Login").WinEdit("Agent Name:").Set "mercury" Dialog("Login").WinEdit("Password:").SetSecure "mercury" Dialog("Login").WinButton("OK").Check CheckPoint("OK")

' 点击OK 按钮添加检查点 Dialog("Login").WinButton("OK").Click ' 输入正确的用户名和密码 wait (5) ' 等待5秒

Window("Flight Reservation").WinMenu("Menu").Select "File;Exit ' 退出

本测试脚本通过点击Help 按钮,查看密码;通过For 循环语句来获取DataTable 里设计的用户名和密码,验证正确的用户名和密码能够进入Flight 订票系统,实现用户名及密码的输入自动化测试,并对其中的OK 按钮添加检查点。

4.1.4 执行结果

如图4.3所示:

图4.3 测试执行结果

登陆测试的结果显示:测试执行了3次,并且全部未通过,说明在脚本里出现了错误。Datatable 中的status 与outmsg 两列的参数值出现了误差,导致在测试中,赋值对比中找不到正确的对象。修改后选取一个用列再次测试。

图4.4 测试执行结果

登陆测试的结果显示:本次测试运行了一遍,并且通过,脚本错误得到修正。

4.2 订票功能测试

4.2.1 录制脚本过程

为了体现自动化测试在测试中的高效率和便捷性,测试案例中对Flight 订票系统中的出发地、目的地、航班及订购的票数进行了随机选取,用Randomnumber 语句实现,使QTP 的自动化更具说服力。

第一步:打开QTP 选择“Record”,录制脚本。

第二步:在登录界面中,Agent Name和Password 均以Mercury 作为测试变量,点击“OK”按钮。

第三步:输入飞行时间、出发地、目的地,然后点击“Flights”选择航班,如图4.4所示:

图4.5 订票界面

第四步:选择要乘坐飞机的航班,然后点击确定。 第五步:输入顾客的姓名、票数、票的类型、点击“Insert” 第六步:点击“Stop”结束录制过程,脚本录制成功

第七步:在容易出错的点上右击鼠标,选择“Insert Standard Checkpoint”,如图4.6所示:

图4.6 Insert Order检查点

4.2.2 调试测试脚本及注解

Dim a1,b1,c1

Window("Flight Reservation").ActiveX("MaskEdBox").Type "033112"

a1=Window("FlightReservation").WinComboBox("FlyFrom:").GetROProperty("items count")

Window("FlightReservation").WinComboBox("FlyFrom:").Select andomnumber(0,a1-1)

' 随机获取出发地

b1=Window("FlightReservation").WinComboBox("FlyTo:").GetROProperty("items count")

Window("Flight Reservation").WinComboBox("Fly To:").Select Randomnumber(0,b1-1)

' 随机获取目的地

Window("Flight Reservation").WinButton("FLIGHT").Check CheckPoint("FLIGHT") ' 为FLIGHT 按钮添加检查点

Window("Flight Reservation").WinButton("FLIGHT").Click

c1=Window("FlightReservation").Dialog("FlightsTable").WinList("From").GetItemsCount

Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select Randomnumber(0,c1-1) ' 随机选择一航班

Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click Window("Flight Reservation").WinEdit("Name:").Set "zy"

Window("FlightReservation").WinEdit("Tickets:").Set RandomNumber(1,10) ' 随机1到10之间的票数 Dim r

r=RandomNumber (1,3) If r=1 Then

window("Flight Reservation").WinRadioButton("First").Set end if If r=2 Then

window("Flight Reservation").WinRadioButton("Business").Set end if

IF r=3 Then

window("Flight Reservation").WinRadioButton("Economy").Set end if ' 随机选择机舱类型

Window("Flight Reservation").WinButton("Insert Order").Check CheckPoint("Insert Order") ' 为Insert Order按钮添加检查点

Window("Flight Reservation").WinButton("Insert Order").Click Window("Flight Reservation").Close ' 退出

注:测试脚本主要通过Random number函数和If 语句进行随机选择出发地、目的地,航班、票数、机舱类型,以完成自动化来实现测试功能。

4.2.3 执行结果

如图4.7所示:

图4.7 测试执行结果

订票功能测试的结果显示:本次测试运行了2遍,并且全部通过,脚本没有错误以及警告。

4.3 修改订单功能测试

4.3.1 测试用例

4.3.2 录制脚本过程

第一步:打开QTP ,选择“Record”,录制脚本

第二步:在Agent Name和Password 中都输入Mercury ,点击“OK”按钮登录 第三步:点击“

”打开已有订票单,如图4.8所示:

图4.8 查找订单界面

第四步:选择已有的订票,可以根据“顾客名”、“航班日期”、“订单的NO”选择订单

第五步:选择具体的航班信息

第六步:对所订的票进行编辑修改,点击“Update”按钮 第七步:点击“Stop”结束录制过程,脚本录制完成

第八步:为UPdate 插入检查点,选择“Insert Standard Checkpoint”如图4.8所示:

图4.9 更新按钮检查点设置

第九步:点击“OK”

4.3.3 调试测试脚本及注解

Window("Flight Reservation").WinButton("Button").Click

Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set "ON"

Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "zy" Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click Window("Flight Reservation").Dialog("Open Order").Dialog("Search Results"). WinList("Flight No.").Activate "zy1031 58 AA 20253 2 7 112.200012/12/2012

Wednesday DEN Denver 08:12 AM LON London 03:23 PM"

Window("Flight Reservation").ActiveX("MaskEdBox").Type "12" Window("Flight Reservation").ActiveX("MaskEdBox").Type "31"

Window("Flight Reservation").WinComboBox("Fly From:").Select "London" Window("Flight Reservation").WinComboBox("Fly To:").Select "Paris"

Window("Flight Reservation").WinButton("FLIGHT").Click

Window("Flight Reservation").Dialog("Flights Table").WinList("From").Activate "12594 LON 03:12 PM PAR 05:12 PM AF $165.40" Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1 Window("Flight Reservation").WinEdit("Tickets:").Set "2" Window("Flight Reservation").WinRadioButton("First").Set Window("Flight Reservation").WinEdit("Name:").SetSelection 0,6 Window("Flight Reservation").WinEdit("Name:").Set "zy"

Window("Flight Reservation").WinButton("Update").Check CheckPoint("Update") ' 为Update 按钮添加检查点 Window("Flight Reservation").WinButton("Update").Click Window("Flight Reservation").Close

注解:进入Open Order,通过输入订单用户名来选择所要修改的订单,修改好内容后,先对Update 按钮添加检查点,在测试过程中来检查是否会出现问题,亦是通过自动化来实现。

4.3.4 执行结果

如图4.10所示:

图4.10 测试执行结果

修改订单功能测试的结果显示:本次测试运行了一遍,并且全部通过,脚本没有错误以及警告。

4.4 删除订单功能测试

4.4.1 测试用例

表4-3 删除订单测试用例表

4.4.2 录制脚本过程

第一步:打开QTP 录制脚本,选择“Record”

第二步:在Agent Name和Password 中都输入Mercury 点击“OK”按钮 第三步:点击“

”打开已有订票单

第四步:选择已有的订票,可以根据“顾客名”、“航班日期”、“订单的NO”选择订单

第五步:选择具体的航班信息

第六步:对选中的订票信息进行修改,点击“delete”按钮,如图4.10所示:

图4.11 删除订单界面

第七步:确认删除

第八步:点击“Stop”结束录制过程,脚本录制成功

第九步:在容易出错的点上右击鼠标,选择“Insert Standard Checkpoint”如图4.12所示:

图4.12 删除按钮检查点设置

第十步:点击“OK”

4.4.3 调试测试脚本及注解

Window("Flight Reservation").WinButton("Button").Click

Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set "ON"

Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "zy" Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click Window("Flight Reservation").Dialog("Open Order").Dialog("Search Results").WinButton("OK").Click

Window("Flight Reservation").WinButton("Delete").Check CheckPoint("Delete") ' 为Delete 按钮添加检查点 Window("Flight Reservation").WinButton("Delete").Click

Window("Flight Reservation").Dialog("Flight Reservations").Activate Window("Flight Reservation").Dialog("Flight Reservations").Activate

Window("Flight Reservation").Dialog("Flight Reservations").WinButton("是(Y)").Click Window("Flight Reservation").Activate Window("Flight Reservation").Close

注:调试脚本通过打开Open Order,选择一个订单,接着对Delete 按钮进行添加检查点,然后删除该订单,通过对检查点的设置,验证测试是否正确。

4.4.4 执行结果

如图4.12所示:

图4.13 测试执行结果

删除订单功能测试的结果显示:本次测试执行一次,并且全部通过,脚本没有错误以及警告。

4.5 传真功能测试

4.5.1 录制脚本过程

第一步:录制脚本,选择“Record”

第二步:在Agent Name和Password 中都输入Mercury 点击“OK”按钮 第三步:点击“

”打开原有订票单

第四步:选择原有的订票,可以根据“顾客名”、“航班日期”、“订单NO”选择要订单

第五步:从File 中打开Fax Order,如图4.14所示:

图4.14 传真界面

第六步:输入Fax Number 传真号

第七步:由于这里的脚本录制不能记录下鼠标的轨迹,即Agent Signature里不能直接去签名,要用

Analog Recording来实现。

第八步:单击Send 发送

4.5.2 调试测试脚本及注解

Window("Flight Reservation").WinMenu("Menu").Select "File;Fax Order..." ' 进入传真界面

Window("Flight Reservation").Dialog("Fax Order No.43").ActiveX("MaskEdBox").Type "[***********]" ' 设置传真号

Window("Flight Reservation").Window("Fax Order No. 43").RunAnalog "Track1" ' 模拟鼠标轨迹进行自动测试

Window("Flight Reservation").Dialog("Fax Order No. 43").WinCheckBox("Send Signature with order").Check CheckPoint("Send Signature with order")

' 为Send Signature with order添加检查点 Window("Flight Reservation").Dialog("Fax Order No. 43").WinCheckBox("Send Signature with order").Set "ON"

Window("Flight Reservation").Dialog("Fax Order No. 43").WinButton("Send").Check CheckPoint("Send") ' 为Send 添加检查点

Window("Flight Reservation").Dialog("Fax Order No. 43").WinButton("Send").Click 注:进入传真界面后,首先设置传真号,再通过Analog Recording按钮对鼠标轨迹进行模拟,之后再添加了Send Signature with order以及Send 按钮的检查点。之后要继续在QTP 的菜单栏单击Object Repository,选择Fax Order No. 43中对应的text 属性,将其改成Fax Order No\. ..才能实现鼠标轨迹模拟,从而实现自动化测试[15]。如图4.14所示:

图4.15 Object Repository

4.5.3 执行结果

如图4.15所示:

图4.16 测试执行结果

传真功能测试的结果显示:本次测试运行了一遍,错误提示在自动测试时有一处出错。其中通过检查点的设置,发现Send Signature with order按钮中的checked 和focused 属性与测试前预期值不匹配,出现BUG 。

5 测试结果分析

5.1 测试用例汇总表

表5-1 测试用例汇总

5.2 检查项

表5-2 检查项

5.3 对比与分析

本文中在Flight 的登录、订票和删除等操作中,设计的测试用例较多。如将这些测试用例完全由手工测试完成,将会耗费大量时间和人力资源。以20个测试用例作说明,在登录测试中,一个用列的测试需要时间大概为5秒钟,20个用例则至少需要一百秒。而在调试好的脚本自动执行下,只需要两三秒钟。当然会有疑问,难道录制脚本和强化脚本的沉没成本不算?当然要算!这样一来这20个用例所耗费的时间不会比手动测试少甚至更多!

图5.1 测试用例1

但这只是执行一次的时间,如果我们需要重复测试这20个用例50次,那么两者之间的时间效率比将远远超过100:3。在QTP 中,我们通过For 循环进行获取Datatable 中的行号,每一行都代表一个用列。这样将录制的脚本优化后,自动执行获得的高效率和极低的出错率都是手工测试不能相比的。

同时,QuickTest Professional还可以与其他工具整合。

如在QTP 中调用WinRunner 的测试脚本和函数,在LoadRunner 中插入和运行QTP 脚本。不过在Loadrunner 中运行QTP 脚本学要确保QTP 已经被关闭。

5.4 分析与建议

Flight 在测试中满足了用户订票基本要求,但在现在服务至上的社会里,略显得功能较为单一。建议增设查询出行向导、航班正晚点折扣信息以及各个机场天气等布告版块。应多设置几个访问权限,类似于12306的设置,一般用户也能对系统进行访问,查看自己的订票并进行相关操作。同时可设计开放互联网订票的窗口,在互联网进行功能等测试。在传真功能测试的最后,Send Signature with order按钮在测试

前后有属性出现不匹配的状况,意味着本软件出现了相应的缺陷,需要进行进一步的完善。

在测试的过程中,QTP 在录制和运行设置中,Web 的测试中浏览器常报错无法正常运行。不能对本地的页面进行访问。浏览器选择设置局限太大,极易造成与用户习惯的不便。

结 论

通过这次毕业设计,学到了许多实用的测试知识。在大学期间学习的测试知识也终于能得到实践。经过这次毕业设计,把以前所学到的书本知识和实际应用结合了起来,对软件工程和软件测试的理论知识有了深层次的理解,意识到了学习就是要多实践,理论和实践相结合,才能真正将知识留在自己的大脑里。本文通过QTP 案例的实际测试,初步掌握了自动化测试的基本知识。也再次熟悉了白盒测试与黑盒测试两种方法。这一段时间里,查阅了大量的资料和文献,完成了以QTP 为软件平台、Flight 为对象的自动化测试。过程中,脚本的增强与优化以及检查点的插入都是需要注意的地方。

自动化测试的过程中,脚本的规范性和可读性十分重要。在测试的开始的阶段,脚本比较混乱,出现错误后难以发现。QTP 的测试对象很多,如Windows 对象、ActiveX 对象以及VB 和Web 对象等等。在这里仅以Windows 的Flight 程序做测试对象。

通过多次的测试比较,可以发现自动化测试相对比手工测试在覆盖率、时间效率和质量上都有极大的优势。当然也有不能完全替代手工测试的地方,如在GUI 界面中,对布局的纠正。

参考文献

[1]余杰,赵旭斌. 精通QTP[M].人民邮电出版社,2012.

[2]陈能技.QTP 自动化测试最佳实践[M].电子工业出版社,2012.

[3]黄文高.QTP 自动化测试与框架模型设计[M].机械工业出版社.2011

[4]李晓鹏,赵书良,魏娜娣. 软件功能测试[M].清华大学出版社.2012

[5]Paul C.Jorgensen 著. (李海峰,马琳 译)软件测试[M]人民邮电出版社.2011

[6]Elfriede Dustin,Thom Garrett.自动化软件测试实践指南[M].电子工业出版社.2011

[7]Rex Black.著,(郑丹丹,王华 译)软件测试基础[M].人民邮电出版社.2013.05

[8]朱少民. 完美测试[M].电子工业出版社.2012

[9]郑文杰,许静,于波 . 软件测试[M].人民邮电出版社.2012

[10]郑炜. 软件测试. 西北工业大学出版社[M].2011.08.

[11]马均飞,郑文强. 软件测试设计[M].电子工业出版社.2011.04

[12]Ammann.P,Offutt.J 著(郁莲 等译)软件测试基础[M].2010.09

[13]陈能技.QTP 自动化测试进阶[M].电子工业出版社.2010.06

[14]蔡为东. 赢在测试[M].电子工业出版社.2010.

[15] 刘宇飞.QTP 在软件项目管理中的新发展[M].北京:清华大学出版社,2010.

[16] 朱少民. 软件测试方法和技术[M].北京:清华大学出版社,2010.

[17]软件测试资源网站:http://testingfaqs.org/

致 谢

本次设计在钱丽老师的悉心指导下,一步步完成。很幸运地能够由钱老师作为我的指导老师,在这里表示十分感谢。从开始的选题确定,我开始借助图书馆互联网搜集和我论文有关的资料。毕竟我的能力有限,而钱老师给我提供了一些参考文献、视屏等资料,是我获益匪浅,在我的论文实现过程中解决了我不少疑惑和难题。虽然之前做过一些小论文和设计,但还是稍显拙劣和稚嫩。在钱老师帮助下,才能顺利地完成本次毕业论文。

在这里也感谢其他老师给予我的帮助,在与老师们聊天讨论的过程中,给了我很多启发。我的同学们对我来说也是一笔财富,在这次论文设计中,给我指正了不少不足之处,帮我及早的发现并修正。

再次感谢各位。

本科毕业论文(设计)

题目:基于QTP 的自动化测试 姓 名:学 号:专 业:院 系: 信息工程学院 指导老师:职称学位:完成时间:

教务处制

安徽新华学院本科毕业论文(设计)独创承诺书

本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文(设计)是我个人在导师指导下进行的研究工作及取得的研究成果。据我所知,除文中特别加以标注引用参考文献资料外,论文(设计)中所有数据均为自己研究成果,不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的工作已在论文中作了明确说明并表示谢意。

毕业论文(设计)作者签名:

日期:

基于QTP 的自动化测试

摘 要

在软件开发过程中,软件测试是发现软件缺陷的最直接手段,也是作为控制软件缺陷最主要的手段。在不断寻找有效的测试方法同时,自动化测试已经成为提高软件测试效率和解决覆盖面的重要技术手段。

本次毕业设计,首先对现阶段国内外对自动化测试的研究成果及发展前景进行了调研,比较了传统手动测试与自动化测试的优缺点。然后利用自动化软件测试工具Quick Test Professional(简称QTP) ,以飞机订票系统(Flight )为测试对象,针对Flight 的具体功能进行自动化测试。测试过程包括各功能测试场景设计和用例的编写,测试脚本的创建、编辑,对测试脚本的增强、调试,以及对测试执行结果进行分析,检查测试运行过程的正确性。同时通过手工测试与自动化测对比,凸显自动化测试在测试效率等方面的优势。

关键词:软件测试;自动化测试;QTP ;功能测试

I

QTP -based automated testing

Abstract

In the process of software development , software testing is the most direct means to find software defects , but also as a means to control the most important software defects . Constantly looking for effective testing methods at the same time , improve the automated testing software testing has become an important technical means to solve the efficiency and coverage .

The graduation project , the first stage at home and abroad for research and development prospects of automated testing conducted an investigation to compare the advantages and disadvantages of the traditional manual testing and automated testing . The use of automated software testing tools Quick Test Professional ( referred QTP), to airline reservation systems (Flight) of the test object , automated testing of specific functional Flight . The functional testing process , including the design and preparation of test scenarios use cases , test scripts to create , edit, enhance test scripts , debug , and analyze the results of the test execution , test run to check the correctness of the process . By simultaneously measuring manual testing and automated comparison , highlighting the advantages of automated testing efficiency and other aspects of the test .

Keywords :Software Testing;Automated Testing;QTP ;Functional Testing II

目 录

1 概 述 . .......................................................................................................1

1.1 课题研究背景 ..........................................................................................1

1.2 国内外研究现状 ......................................................................................1

1.3 课题研究目的 ..........................................................................................2

2软件缺陷与软件测试 ..................................................................................3

2.1软件缺陷....................................................................................................3

2.1.1 软件缺陷与硬件缺陷异同 ...................................................................3

2.1.2 如何通过软件测试发现软件缺陷 .......................................................3

2.2软件质量与软件测试 ...............................................................................4

2.2.1软件开发模式与自动化测试 ................................................................4

2.3软件自动化测试与手动测试 ...................................................................5

2.3.1自动化测试与手工测试比较 ................................................................5

2.3.2如何开展自动化测试 ............................................................................5

2.3.3自动化测试方案 ....................................................................................6

2.4自动化测试工具介绍 ...............................................................................6

3 QuickTest Professional的简介 . ...................................................................9

3.1 QTP的安装与配置 . ..................................................................................9

3.2 QTP的使用 ............................................................................................ 10

3.2.2创建测试脚本 ..................................................................................... 11

3.2.3增强测试脚本功能 ............................................................................. 11

3.2.4运行与分析 ......................................................................................... 11

4 基于QTP 自动化测试的实施 . ................................................................ 13

4.1 登录功能测试 ....................................................................................... 13

4.1.1 测试用例............................................................................................. 13

4.1.2 脚本录制............................................................................................. 14

4.1.3 测试脚本............................................................................................. 15

4.1.4 执行结果............................................................................................. 16

4.2 订票功能测试 ....................................................................................... 18

4.2.1 录制脚本过程 .................................................................................... 18

4.2.2 调试测试脚本及注解 ........................................................................ 19

4.2.3 执行结果............................................................................................. 21

4.3 修改订单功能测试 ............................................................................... 21

4.3.1 测试用例............................................................................................. 21

4.3.2 录制脚本过程 .................................................................................... 22

4.3.3 调试测试脚本及注解 ........................................................................ 24

4.3.4 执行结果............................................................................................. 25

4.4 删除订单功能测试 ............................................................................... 26

4.4.2 录制脚本过程 .................................................................................... 26

4.4.3 调试测试脚本及注解 ........................................................................ 28

4.4.4 执行结果............................................................................................. 28

4.5 传真功能测试 ....................................................................................... 29

4.5.1 录制脚本过程 .................................................................................... 29

4.5.2 调试测试脚本及注解 ........................................................................ 30

4.5.3 执行结果............................................................................................. 31

5 测试结果分析 .......................................................................................... 33

5.1 测试用例汇总表 ................................................................................... 33

5.2 检查项 . ................................................................................................... 34

5.3 对比与分析 ........................................................................................... 34

5.4 分析与建议 ........................................................................................... 35

结 论 . ........................................................................................................ 37

参考文献 . ...................................................................................................... 38

致 谢 . ........................................................................................................ 39

1 概 述

1.1 课题研究背景

按时、高质量地发布软件产品是软件开发的最基本要求,而软件测试是软件质量保证的最重要的手段之一。对于软件,不论采用什么技术和方法来进行开发,软件产品中都会存在或多或少的错误和问题[1]。于是,软件测试便扮演了极其重要的角色,贯穿于整个软件生命周期,检验各个阶段的成果是否符合质量要求和达到预先定义的目标。

据大量统计资料显示,在典型的软件开发的项目中,软件测试投入的成本和工作量往往占到软件的总成本和总工作量的40%以上。传统的软件测试方式大多停留在内部测试、手工测试阶段,并不能完全适用于应用测试。由于较多的企业采用瀑布模型进行开发,往往在软件开发结束后才开始进行测试。这些都在极大程度上降低了测试的覆盖率,增加了测试的成本,影响了软件质量的可靠性[4]。

因此,软件测试自动化技术的出现,从真正意义上把测试人员从简单重复的劳动中解放出来,弥补了手动测试在应付大规模测试中疲态的缺陷,尤其是面对大量的数据需要检查时,人工的比较和搜索不仅效率低,而且容易出错,覆盖面偏低。它为软件开发团队节约了测试成本,提高了软件质量,缩短了产品发布周期。

1.2 国内外研究现状

软件测试是软件质量的护航者,只有通过了测试软件的设计、编码和规约的评审才能通过,在软件的整个生命周期中具有与软件开发相同的地位。在许多大型的软件公司,其测试人员和开发人员比例达到了1:1,甚至更多[4]。然而,在早期软件测试常常被忽视,软件经过开发人员简单的单元测试后进行发布,导致的后果可想而知。在美国北卡罗来纳大学召开的软件测试的正式技术会议,是软件测试技术发展历史上的一个转折点,它标志着软件测试成为了软件工程领域中一个独立而重要 1

的分支。此后,Gerhart 进一步总结原来的测试理论,将软件测试提升到理论的高度,作为实践性学科的参考[2]。

为了更好的实现测试的自动化,用自动化测试代替手工劳动,许多IT 厂商推出了以工具为中心的测试,是测试人员只需要关注脚本技术和配置文件的编写。常用的测试工具有Mercury Interactive公司的QTP 、LoadRunner 、TestDirectior ,IBM 的Web 自动化测试工具Rational Function Tester,Segue Software公司的Segue ,Compuware 公司的QACenter 。这些测试工具融入了许多新的技术,如面向对象技术,当针对不同的测试重点,可以采用相应的工具[3]。

国内的软件测试技术起步较晚,但随着国内软件企业规模的壮大,人才的引进和培养,越来越多的软件生产商开始在自动化测试领域中进行软件分析和测试工具的研究和开发。西北工业大学在C/S系统的测试方面进行了许多的研究工作,并且取得了一定的成绩。北京航空航天大学和北京大学经过技术的攻关,共同研制了一系列测试工具和程序理解工具,例如具有典型代表的SafePro/javao和SafePro C/C++。南京大学和航空局计算研究所开发的静态分析工具和测试用例自动生成工具,在嵌入式系统测试方面取得了较大的成功[10]。拥有自主知识产权的泽众软件是国内领先的专业功能测试工具、测试管理工具的供应商,从2004年起就推出了AutoRunner 、TestCenter 等优秀产品。

1.3 课题研究目的

本文旨在通过QTP 在具体案例中的使用,包括设计测试案例、录制、优化脚本功能等,来具体认识自动化测试对于普通应用软件,都可以发挥其功能测试和回归测试的优点,省去了手工测试的繁琐,更加低成本,便捷而快速的找出软件的BUG 所在,是软件开发中一个不可或缺的重要的一部分。

2

2软件缺陷与软件测试

2.1软件缺陷

2.1.1 软件缺陷与硬件缺陷异同

对于用户来说,软件缺陷与硬件缺陷一样,会对用户在使用时造成困扰。但是软件缺陷在一般情况下,不会对用户造成直接的人身伤害或经济损失,也因此很多人意识不到软件缺陷的危害性和严重性。然而在一些比较依赖软件进行业务处理的领域,便可能造成重大的经济损失,甚至危及生命,例如2007年4月,某个软件缺陷导致某地铁系统的列车火灾,软件未能检测和防止剩余动力在设备中的使用,导致车过热而起火。

因此,软件缺陷与硬件缺陷一样,都需要人们重视他们可能造成的危害与损失。不同在于,硬件缺陷大多是可预见的,比较容易被发现。软件缺陷的可预见性就没有那么强,其一个重要特点就是隐蔽性。由于软件的复杂度高,状态空间广阔,因此,要覆盖软件所有的可能行为几乎是不可能的。

2.1.2 如何通过软件测试发现软件缺陷

手工测试仍然是主要的查找错误的方式,自动化测试能部分地解决覆盖面的问题和测试效率的问题,但是不能从根本上解决问题。

而在软件测试之前的开发环节中,开发人员已经对对软件进行缺陷控制,尽管大多停留在“调试”阶段的测试水平。也因此软件测试成为了软件缺陷的主要控制手段和解决方法。测试人员通过产品需求,以及用户的实际业务背景,设计出各种测试用例,通过执行测试用例,判断被测试的应用程序是否满足用户需求。

在测试用例中,主要分为两种。一是验证软件功能正确的;另一种适用于证明软件错误的。如果将这这些用例转化为可被自动化测试工具执行的脚本,那么就成了一个自动化测试用例,使用自动化的方式执行,提高效率。

3

2.2软件质量与软件测试

软件质量是软件产品的核心价值体现,也是企业竞争力的体现,重视软件质量的企业通常能获得更多的收益。软件质量也是软件项目管理的重要组成部分,在不同的开发模式中,都会围绕软件质量管理提出相应的做法。

1986年,ISO8492给出了质量定义:质量是产品或服务满足明示或暗示需求能力的固有特性和特征的集合。而在IBM RUP(统一过程)中,质量被定义为“满足或超出认定的一组要求,并使用经过的认可的评测方法和标准来评估,还使用认定的流程生产”。因此,质量不是简单地满足用户需求,还得包含证明质量达标所使用的评测方法及标准,以及如何实施可管理、可重复使用的流程,以确保由此流程生产的产品已达到预期的、稳定的质量水平。

1983年,ANSI IEEE STD729给出了软件质量的定义[ 6],包括:

(1)软件产品质量满足用户要求的程度;

(2)软件各种属性的组合程度;

(3)用户对软件产品的综合反映程度;

(4)软件在使用过程中满足用户要求的程度。

简而言之,功能、性能和可靠性是衡量软件质量的三个维度指标。

2.2.1软件开发模式与自动化测试

在不同的开发模式中,软件测试的地位和作用略有不同,但却不可能消失。在传统的瀑布开发模型中,软件测试作为一个独立的阶段出现,在进入测试阶段之前,应该完成编码并且提供完善的需求、设计和文档。如果在需求定义方面做得很好,对自动化测试十分有益,可以尽早的选择测试策略,让自动化测试高层次整体地进行。

而在RUP 迭代模型中,实施自动化测试时,需要与开发策略紧密结合,关注早期构建、迭代的速度、风险、覆盖目标等。

敏捷方法则打破了传统的自动化测试方法,第一个破坏点集中在自动化的可接受性测试,很难被其他类型的自动化重用。细粒度的迭代让每次的测试很难击中目

标和定义标准。

2.3软件自动化测试与手动测试

2.3.1自动化测试与手工测试比较

软件测试的一个显著特点就是重复性,重复的工作除了机器人没人忍受的了。在精确性的问题上,当手动测试遭遇大量的数据需要检查的时候,数据比较和搜索定位不仅效率不高而且易出错,达不到预期的覆盖率。伴随着产品的完善,软件功能的逐步完善,需要测试的内容有时候会呈现几何倍数增长,人工进行回归测试便显得捉襟见肘。当然不意味着手动测试就这样被淘汰,手工测试有这其不可替代的地方:

(1)测试用例的设计:测试人员的经验和判断能力是一切工具不具备的

(2)界面和用户体验:人类的审美和感官及心理体验是其他无法代替的

(3)正确性的检查:工具是不具备推理和逻辑思维的。

而在借助计算机强大的计算能力下,可以不知疲倦、重复的运行,对于大量的数据也能在短时间内处理结束。于是自动化测试的优势则表现如下:

(1)可重复性强

(2)计算精确

(3)大批量操作

(4)覆盖面广

(5)搜索效率高

2.3.2如何开展自动化测试

在软件测试的阶段,自动化测试应该被当作一个项目来开展。首先要确定所开发的软件项目采用自动化测试是否适用。短期的或者一次性的项目不宜采用,因为这反而增加开发周期和成本。同样,在一个非常紧迫的项目中也是不合适的,因为需要测试人员开发编写测试脚本,并需要开发人员的配合使得整个进程更加紧张仓促,适得其反。

其次,什么时候开始自动化测试项目?不能过早,太早的话,软件不成形,界面、编码等不稳定,改动频繁,这时候开展自动化徒增成本,得不偿失。可以在雏形期做一些准备,考虑测试工具的选择。熟悉和了解各种编程语言、编程工具,以及各种控件会使得在开展测试时得心用手。

2.3.3自动化测试方案

在选择测试方案的时候,要参照下列因素[4]:

(1)项目的影响:制定的方案是否对整个项目有积极作用,或者让开发更敏捷

(2)复杂度:自动化是否容易实现

(3)时间:自动化测试的实现需要多少时间

(4)早期需求和代码的稳定性:如果不能稳定,那么自动化测试介入会很尬尴

(5)覆盖率:能否覆盖程序中的关键特性和功能

(6)资源:有没有足够的人力资源、数据资源、硬件资源来支持自动化的开展 在确定方案后,测试脚本的编码阶段,编写方法也左右着自动化测试的效率和质量。自动化功能测试的开发方式主要有:

(1)线性的

(2)结构化的

(3)共享的

(4)数据驱动的

(5)关键字驱动的

2.4自动化测试工具介绍

QTP 全名HP QuickTest Professional software ,2012年12月6日发布了11.5版本,并更名为Unified Functional Testing

QTP 是Quick test Professional的简称,是一款自动化测试工具。自动化工具出现目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。在测试前要考虑好如何制定相应的测试计划,例如要测试那些功能、操作步

骤、输入数据和期望的输出数据等。

WinRunner 是Mercury Interactive公司的一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放测试用户的操作,WinRunner 能够有效地帮助测试人员对复杂应用的不同发布版进行测试,提高测试人员的工作效率和质量,且保障跨平台的、复杂的企业级应用能够无故障发布及长期稳定运行。

Rational Robot作为业界最顶尖的自动化功能测试工具,它可以在测试人员学习高级脚本技术同时帮助其进行成功的测试。集成在测试人员的桌面IBM Rational Test Manager上,测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能十分利于刚进入测试领域的人员。

AdventNet QEngine.AdventNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Java API测试、web 性能测试、Java 应用性能测试、Web 功能测试、SOAP 测试、回归测试和Java 应用功能测试。支持对于使用HTML 、JSP 、ASP 、.NET 、PHP 、JavaScript/VBScript、XML 、SOAP 、WSDL 、e-commerce 、传统客户端/服务器等开发的应用程序进行测试。此工具为Java 技术开发,十分便于移植并可提供多平台支持。

SilkTest ,是用于对企业级应用进行功能测试的领先产品,可用于测试Web 、Java 或是传统的C/S结构。SilkTest 提供了丰富的功能,使用户能够高效地进行自动化测试。包括以下功能:测试的计划和管理,数据库访问及校验,便捷、强大的4Test 脚本语言,内置恢复系统(Recovery System),并具有使用同一套脚本进行跨平台、浏览器进行测试的功能。

QA Run。QARun 的测试实现方式是通过检测鼠标移动、键盘点击操作等被测应用,即而得到相应的测试脚本,对该脚本可以进行需要编辑和调试。在记录的过程中可针对被测应用中所包含的功能点进行基线值的建立,即在插入检查点的同时建立预期值。在这里检查点是目标系统的一个特殊方面在一特定点的期望状态。一般,检查点在QARun 提示目标系统执行一系列事件之后被执行。检查点用于确定当前实际结果与预期值是否一样。

Test Partner作为一个自动化的功能测试工具,它专为测试基于微软、Java 和Web 技术的复杂应用而设计。它使测试人员和开发人员都可以使用可视的脚本编制和自动向导来生成可重复的测试,用户可以在任何水平层次和细节条件下,调用VBA 的所有功能进行测试。TestPartner 通过采用通用的、分层的方式来进行脚本的开发。各水平的的测试人员都可以通过TestPartner 的可视化导航器来快速创建测试并执行。通过可视的导航器录制并回放测试,每一个测试都将以树状结构展示,以清楚地显现测试通过的应用路径。

Holodeck-强大的故障植入软件测试工具

Holodeck is an advanced fault-injection tool that gives you the power to attack an application while it monitors and logs everything your application does - every function call, registry entry, piece of data read or written.

AutoRunner 。AutoRunner 是黑盒测试工具,可以用来完成功能测试、回归测试,可以提高测试效率,降低测试人工成本。

产品可以对以下类型对象进行GUI 功能性测试:

(1)Windows 类型对象,一般为用C++/Delphi/VB/VFP/PB/.NetForm等技术开发的桌面程序。

(2)IE 网页对象,一般性的网站,比如大的门户类网站。

(3) Java 对象,一般为用AWT/Swing/SWT等技术开发的桌面程序。

(4)Flex 对象,网页的内容是用Flex 开发的。

(5) Silverlight 对象,网页的内容是用Silverlight 开发的。

(6) WPF 对象,一般为用WPF 技术开发的桌面程序。

(7) QT 对象,一般为用QT 技术开发的桌面程序。

3 QuickTest Professional的简介

QTP 是Quick test Professional的简称,是一款自动化测试工具。自动化工具出现目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。在测试前要考虑好如何制定相应的测试计划,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等[13]。

QTP 测试的对象,包括传统的Windows 应用程序,Web 应用等等。它可以覆盖绝大多数的软件开发技术,不仅简单高效而且具备测试用例可重用的特点。其中包括:创建测试脚本、插入检查点、增强测试脚本、运行测试与分析结果和维护测试等方面。

3.1 QTP的安装与配置

第一步:点击QTP 的执行文件,选择路径进行安装

第二步:安装完成后会出现下图的对话框,然后点击”OK”,如图3.1.1;

图3.1 初始界面图

第三步:选择“Blank Test”选项,如图3.1.2;

图3.2 空白测试创建

3.2 QTP的使用

QTP 进行功能测试的测试流程包括(1)制定测试计划(2)创建测试脚本(3)增强测试脚本功能(4)运行测试(5)分析测试结果] 五个步骤:

图3.3 测试流程图

3.2.1制定测试计划

自动测试的测试计划是作为测试全工程的指导,根据被测项目的具体需求,和使用的测试工具特征而制定。

QTP 作为功能测试工具,主要用于软件的功能测试。当然QTP 是不能完全取代测试人员的手工操作,如测试脚本的创建和测试用例的设计。但是在批量操作时,使用QTP 的确能够帮助测试人员高效的完成很多工作。在测试计划阶段,首先要做的就是分析被测应用的特点,决定应该对哪些功能点进行测试,可以考虑细化到具体页面或者具体控件。在普通的应用程序测试应用方面,QTP 在回归测试中是非常有效的。

3.2.2创建测试脚本

QTP 的自动录制机制能够将测试人员的每一个操作步骤及被操作的对象记录下来,自动生成测试脚本。相较于其他自动测试工具录制脚本更方便的是,QTP 除了以VB Script脚本语言的方式生成脚本语句以外,还将被操作的对象及相应的动作按照层次和顺序保存在一个基于表格的Keyword View(关键字视图)中。比如,当测试人员单击一个链接或选择一个Check Box或者提交一个表单,相应的操作流程都会被记录在关键字视图中。

3.2.3增强测试脚本功能

脚本的录制只是为了实现创建或者设计脚本的第一步,基本脚本录制完毕后,测试人员可以根据需要增加所需要的功能,QTP 允许测试人员通过脚本编辑器,在脚本中增加或更改测试步骤来修正或自定义测试流程,如增加多种类型的检查点功能,既可以让QTP 检查一下在程序的某个特定位置或对话框中是否出现了需要的文字。以及通过变量的参数化功能,使用多组的数据驱动整个测试过程。

3.2.4运行与分析

QTP 从脚本的第一行开始执行语句,运行过程中会对设置的检查点进行验证,从DataTable 中获取实际数据代替参数值,并给出相应的输出结构信息。测试过程中测试人员还可以调试自己的脚本,直到脚本完全符合要求。

图3.4 关键字视图

运行结束后系统会自动生成一份详细完整的测试结果报告。包括测试名称。测试开始和结束的时间,测试脚本运行的迭代次数、测试通过状态等。通过报告中的测试信息,发现错误并增强脚本。

4 基于QTP 自动化测试的实施

本篇论文使用的是Flight 这个Windows 应用程序,这个程序所实现的是关于机票预订、查询、传真等操作,下面通过设计各功能的测试用例,借助QTP 这款自动化测试工具,进行回归测试,实现对Flight 功能测试的自动化,从而展现出自动化测试的优势,并测试该应用软件是否有需要改进的地方。

4.1 登录功能测试

4.1.1 测试用例

表4-1 登录测试用例表

4.1.2 脚本录制

第一步:对于登录界面,首先对登录进行了录制,分别输入用户名及密码,生成了最简单的VB 脚本。如图4.1所示:

图4.1 登录界面

第二步:为了能全面的测试在任何输入的情况下都会有预想的结果,根据设计出来的测试用例,在Data Table中设置了AgentName 及Password 列,把可能的情况均

输入进去,之后让其自动的逐个运行测试。

第三步:测试要具有全面性,根据登录界面的按钮分布,先对Help 按钮进行设计,用IF 语句来控制确定Help 之中的内容后的确认。

第四步:接着运用For 语句,来实现对Data Table中Name 和Password 的逐个执行测试。

第五步:对容易出错的地方设置检查点,以便在自动测试时对其进行检测,有对话框上标题“Login”,按钮“OK”。如图4.2所示:

图4.2 Login检查点设置

4.1.3 测试脚本

Dialog("Login").WinButton("Help").Click ' 点击Help 按钮 If Dialog ("Login").Dialog ("Flight Reservations").Exist Then

Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click End If ' 判断在点击后是否出现对话框 Dim i

For i=1 to datatable.GetSheet("Action1").GetRowCount Dialog("Login").Check CheckPoint("Login_2")

Dialog("Login").WinEdit("Agent Name:").Set DataTable("name", dtLocalSheet) Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtLocalSheet)

Dialog("Login").WinButton("OK").Check CheckPoint("OK") '点击OK 按钮添加检查点 Dialog("Login").WinButton("OK").Click ' 从datatable 中调取测试用例 If Dialog("Login").Dialog("Flight Reservations").Exist Then Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click End If

datatable.GetSheet("Action1").SetNextRow Next

Dialog("Login").WinEdit("Agent Name:").Set "mercury" Dialog("Login").WinEdit("Password:").SetSecure "mercury" Dialog("Login").WinButton("OK").Check CheckPoint("OK")

' 点击OK 按钮添加检查点 Dialog("Login").WinButton("OK").Click ' 输入正确的用户名和密码 wait (5) ' 等待5秒

Window("Flight Reservation").WinMenu("Menu").Select "File;Exit ' 退出

本测试脚本通过点击Help 按钮,查看密码;通过For 循环语句来获取DataTable 里设计的用户名和密码,验证正确的用户名和密码能够进入Flight 订票系统,实现用户名及密码的输入自动化测试,并对其中的OK 按钮添加检查点。

4.1.4 执行结果

如图4.3所示:

图4.3 测试执行结果

登陆测试的结果显示:测试执行了3次,并且全部未通过,说明在脚本里出现了错误。Datatable 中的status 与outmsg 两列的参数值出现了误差,导致在测试中,赋值对比中找不到正确的对象。修改后选取一个用列再次测试。

图4.4 测试执行结果

登陆测试的结果显示:本次测试运行了一遍,并且通过,脚本错误得到修正。

4.2 订票功能测试

4.2.1 录制脚本过程

为了体现自动化测试在测试中的高效率和便捷性,测试案例中对Flight 订票系统中的出发地、目的地、航班及订购的票数进行了随机选取,用Randomnumber 语句实现,使QTP 的自动化更具说服力。

第一步:打开QTP 选择“Record”,录制脚本。

第二步:在登录界面中,Agent Name和Password 均以Mercury 作为测试变量,点击“OK”按钮。

第三步:输入飞行时间、出发地、目的地,然后点击“Flights”选择航班,如图4.4所示:

图4.5 订票界面

第四步:选择要乘坐飞机的航班,然后点击确定。 第五步:输入顾客的姓名、票数、票的类型、点击“Insert” 第六步:点击“Stop”结束录制过程,脚本录制成功

第七步:在容易出错的点上右击鼠标,选择“Insert Standard Checkpoint”,如图4.6所示:

图4.6 Insert Order检查点

4.2.2 调试测试脚本及注解

Dim a1,b1,c1

Window("Flight Reservation").ActiveX("MaskEdBox").Type "033112"

a1=Window("FlightReservation").WinComboBox("FlyFrom:").GetROProperty("items count")

Window("FlightReservation").WinComboBox("FlyFrom:").Select andomnumber(0,a1-1)

' 随机获取出发地

b1=Window("FlightReservation").WinComboBox("FlyTo:").GetROProperty("items count")

Window("Flight Reservation").WinComboBox("Fly To:").Select Randomnumber(0,b1-1)

' 随机获取目的地

Window("Flight Reservation").WinButton("FLIGHT").Check CheckPoint("FLIGHT") ' 为FLIGHT 按钮添加检查点

Window("Flight Reservation").WinButton("FLIGHT").Click

c1=Window("FlightReservation").Dialog("FlightsTable").WinList("From").GetItemsCount

Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select Randomnumber(0,c1-1) ' 随机选择一航班

Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click Window("Flight Reservation").WinEdit("Name:").Set "zy"

Window("FlightReservation").WinEdit("Tickets:").Set RandomNumber(1,10) ' 随机1到10之间的票数 Dim r

r=RandomNumber (1,3) If r=1 Then

window("Flight Reservation").WinRadioButton("First").Set end if If r=2 Then

window("Flight Reservation").WinRadioButton("Business").Set end if

IF r=3 Then

window("Flight Reservation").WinRadioButton("Economy").Set end if ' 随机选择机舱类型

Window("Flight Reservation").WinButton("Insert Order").Check CheckPoint("Insert Order") ' 为Insert Order按钮添加检查点

Window("Flight Reservation").WinButton("Insert Order").Click Window("Flight Reservation").Close ' 退出

注:测试脚本主要通过Random number函数和If 语句进行随机选择出发地、目的地,航班、票数、机舱类型,以完成自动化来实现测试功能。

4.2.3 执行结果

如图4.7所示:

图4.7 测试执行结果

订票功能测试的结果显示:本次测试运行了2遍,并且全部通过,脚本没有错误以及警告。

4.3 修改订单功能测试

4.3.1 测试用例

4.3.2 录制脚本过程

第一步:打开QTP ,选择“Record”,录制脚本

第二步:在Agent Name和Password 中都输入Mercury ,点击“OK”按钮登录 第三步:点击“

”打开已有订票单,如图4.8所示:

图4.8 查找订单界面

第四步:选择已有的订票,可以根据“顾客名”、“航班日期”、“订单的NO”选择订单

第五步:选择具体的航班信息

第六步:对所订的票进行编辑修改,点击“Update”按钮 第七步:点击“Stop”结束录制过程,脚本录制完成

第八步:为UPdate 插入检查点,选择“Insert Standard Checkpoint”如图4.8所示:

图4.9 更新按钮检查点设置

第九步:点击“OK”

4.3.3 调试测试脚本及注解

Window("Flight Reservation").WinButton("Button").Click

Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set "ON"

Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "zy" Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click Window("Flight Reservation").Dialog("Open Order").Dialog("Search Results"). WinList("Flight No.").Activate "zy1031 58 AA 20253 2 7 112.200012/12/2012

Wednesday DEN Denver 08:12 AM LON London 03:23 PM"

Window("Flight Reservation").ActiveX("MaskEdBox").Type "12" Window("Flight Reservation").ActiveX("MaskEdBox").Type "31"

Window("Flight Reservation").WinComboBox("Fly From:").Select "London" Window("Flight Reservation").WinComboBox("Fly To:").Select "Paris"

Window("Flight Reservation").WinButton("FLIGHT").Click

Window("Flight Reservation").Dialog("Flights Table").WinList("From").Activate "12594 LON 03:12 PM PAR 05:12 PM AF $165.40" Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1 Window("Flight Reservation").WinEdit("Tickets:").Set "2" Window("Flight Reservation").WinRadioButton("First").Set Window("Flight Reservation").WinEdit("Name:").SetSelection 0,6 Window("Flight Reservation").WinEdit("Name:").Set "zy"

Window("Flight Reservation").WinButton("Update").Check CheckPoint("Update") ' 为Update 按钮添加检查点 Window("Flight Reservation").WinButton("Update").Click Window("Flight Reservation").Close

注解:进入Open Order,通过输入订单用户名来选择所要修改的订单,修改好内容后,先对Update 按钮添加检查点,在测试过程中来检查是否会出现问题,亦是通过自动化来实现。

4.3.4 执行结果

如图4.10所示:

图4.10 测试执行结果

修改订单功能测试的结果显示:本次测试运行了一遍,并且全部通过,脚本没有错误以及警告。

4.4 删除订单功能测试

4.4.1 测试用例

表4-3 删除订单测试用例表

4.4.2 录制脚本过程

第一步:打开QTP 录制脚本,选择“Record”

第二步:在Agent Name和Password 中都输入Mercury 点击“OK”按钮 第三步:点击“

”打开已有订票单

第四步:选择已有的订票,可以根据“顾客名”、“航班日期”、“订单的NO”选择订单

第五步:选择具体的航班信息

第六步:对选中的订票信息进行修改,点击“delete”按钮,如图4.10所示:

图4.11 删除订单界面

第七步:确认删除

第八步:点击“Stop”结束录制过程,脚本录制成功

第九步:在容易出错的点上右击鼠标,选择“Insert Standard Checkpoint”如图4.12所示:

图4.12 删除按钮检查点设置

第十步:点击“OK”

4.4.3 调试测试脚本及注解

Window("Flight Reservation").WinButton("Button").Click

Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set "ON"

Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "zy" Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click Window("Flight Reservation").Dialog("Open Order").Dialog("Search Results").WinButton("OK").Click

Window("Flight Reservation").WinButton("Delete").Check CheckPoint("Delete") ' 为Delete 按钮添加检查点 Window("Flight Reservation").WinButton("Delete").Click

Window("Flight Reservation").Dialog("Flight Reservations").Activate Window("Flight Reservation").Dialog("Flight Reservations").Activate

Window("Flight Reservation").Dialog("Flight Reservations").WinButton("是(Y)").Click Window("Flight Reservation").Activate Window("Flight Reservation").Close

注:调试脚本通过打开Open Order,选择一个订单,接着对Delete 按钮进行添加检查点,然后删除该订单,通过对检查点的设置,验证测试是否正确。

4.4.4 执行结果

如图4.12所示:

图4.13 测试执行结果

删除订单功能测试的结果显示:本次测试执行一次,并且全部通过,脚本没有错误以及警告。

4.5 传真功能测试

4.5.1 录制脚本过程

第一步:录制脚本,选择“Record”

第二步:在Agent Name和Password 中都输入Mercury 点击“OK”按钮 第三步:点击“

”打开原有订票单

第四步:选择原有的订票,可以根据“顾客名”、“航班日期”、“订单NO”选择要订单

第五步:从File 中打开Fax Order,如图4.14所示:

图4.14 传真界面

第六步:输入Fax Number 传真号

第七步:由于这里的脚本录制不能记录下鼠标的轨迹,即Agent Signature里不能直接去签名,要用

Analog Recording来实现。

第八步:单击Send 发送

4.5.2 调试测试脚本及注解

Window("Flight Reservation").WinMenu("Menu").Select "File;Fax Order..." ' 进入传真界面

Window("Flight Reservation").Dialog("Fax Order No.43").ActiveX("MaskEdBox").Type "[***********]" ' 设置传真号

Window("Flight Reservation").Window("Fax Order No. 43").RunAnalog "Track1" ' 模拟鼠标轨迹进行自动测试

Window("Flight Reservation").Dialog("Fax Order No. 43").WinCheckBox("Send Signature with order").Check CheckPoint("Send Signature with order")

' 为Send Signature with order添加检查点 Window("Flight Reservation").Dialog("Fax Order No. 43").WinCheckBox("Send Signature with order").Set "ON"

Window("Flight Reservation").Dialog("Fax Order No. 43").WinButton("Send").Check CheckPoint("Send") ' 为Send 添加检查点

Window("Flight Reservation").Dialog("Fax Order No. 43").WinButton("Send").Click 注:进入传真界面后,首先设置传真号,再通过Analog Recording按钮对鼠标轨迹进行模拟,之后再添加了Send Signature with order以及Send 按钮的检查点。之后要继续在QTP 的菜单栏单击Object Repository,选择Fax Order No. 43中对应的text 属性,将其改成Fax Order No\. ..才能实现鼠标轨迹模拟,从而实现自动化测试[15]。如图4.14所示:

图4.15 Object Repository

4.5.3 执行结果

如图4.15所示:

图4.16 测试执行结果

传真功能测试的结果显示:本次测试运行了一遍,错误提示在自动测试时有一处出错。其中通过检查点的设置,发现Send Signature with order按钮中的checked 和focused 属性与测试前预期值不匹配,出现BUG 。

5 测试结果分析

5.1 测试用例汇总表

表5-1 测试用例汇总

5.2 检查项

表5-2 检查项

5.3 对比与分析

本文中在Flight 的登录、订票和删除等操作中,设计的测试用例较多。如将这些测试用例完全由手工测试完成,将会耗费大量时间和人力资源。以20个测试用例作说明,在登录测试中,一个用列的测试需要时间大概为5秒钟,20个用例则至少需要一百秒。而在调试好的脚本自动执行下,只需要两三秒钟。当然会有疑问,难道录制脚本和强化脚本的沉没成本不算?当然要算!这样一来这20个用例所耗费的时间不会比手动测试少甚至更多!

图5.1 测试用例1

但这只是执行一次的时间,如果我们需要重复测试这20个用例50次,那么两者之间的时间效率比将远远超过100:3。在QTP 中,我们通过For 循环进行获取Datatable 中的行号,每一行都代表一个用列。这样将录制的脚本优化后,自动执行获得的高效率和极低的出错率都是手工测试不能相比的。

同时,QuickTest Professional还可以与其他工具整合。

如在QTP 中调用WinRunner 的测试脚本和函数,在LoadRunner 中插入和运行QTP 脚本。不过在Loadrunner 中运行QTP 脚本学要确保QTP 已经被关闭。

5.4 分析与建议

Flight 在测试中满足了用户订票基本要求,但在现在服务至上的社会里,略显得功能较为单一。建议增设查询出行向导、航班正晚点折扣信息以及各个机场天气等布告版块。应多设置几个访问权限,类似于12306的设置,一般用户也能对系统进行访问,查看自己的订票并进行相关操作。同时可设计开放互联网订票的窗口,在互联网进行功能等测试。在传真功能测试的最后,Send Signature with order按钮在测试

前后有属性出现不匹配的状况,意味着本软件出现了相应的缺陷,需要进行进一步的完善。

在测试的过程中,QTP 在录制和运行设置中,Web 的测试中浏览器常报错无法正常运行。不能对本地的页面进行访问。浏览器选择设置局限太大,极易造成与用户习惯的不便。

结 论

通过这次毕业设计,学到了许多实用的测试知识。在大学期间学习的测试知识也终于能得到实践。经过这次毕业设计,把以前所学到的书本知识和实际应用结合了起来,对软件工程和软件测试的理论知识有了深层次的理解,意识到了学习就是要多实践,理论和实践相结合,才能真正将知识留在自己的大脑里。本文通过QTP 案例的实际测试,初步掌握了自动化测试的基本知识。也再次熟悉了白盒测试与黑盒测试两种方法。这一段时间里,查阅了大量的资料和文献,完成了以QTP 为软件平台、Flight 为对象的自动化测试。过程中,脚本的增强与优化以及检查点的插入都是需要注意的地方。

自动化测试的过程中,脚本的规范性和可读性十分重要。在测试的开始的阶段,脚本比较混乱,出现错误后难以发现。QTP 的测试对象很多,如Windows 对象、ActiveX 对象以及VB 和Web 对象等等。在这里仅以Windows 的Flight 程序做测试对象。

通过多次的测试比较,可以发现自动化测试相对比手工测试在覆盖率、时间效率和质量上都有极大的优势。当然也有不能完全替代手工测试的地方,如在GUI 界面中,对布局的纠正。

参考文献

[1]余杰,赵旭斌. 精通QTP[M].人民邮电出版社,2012.

[2]陈能技.QTP 自动化测试最佳实践[M].电子工业出版社,2012.

[3]黄文高.QTP 自动化测试与框架模型设计[M].机械工业出版社.2011

[4]李晓鹏,赵书良,魏娜娣. 软件功能测试[M].清华大学出版社.2012

[5]Paul C.Jorgensen 著. (李海峰,马琳 译)软件测试[M]人民邮电出版社.2011

[6]Elfriede Dustin,Thom Garrett.自动化软件测试实践指南[M].电子工业出版社.2011

[7]Rex Black.著,(郑丹丹,王华 译)软件测试基础[M].人民邮电出版社.2013.05

[8]朱少民. 完美测试[M].电子工业出版社.2012

[9]郑文杰,许静,于波 . 软件测试[M].人民邮电出版社.2012

[10]郑炜. 软件测试. 西北工业大学出版社[M].2011.08.

[11]马均飞,郑文强. 软件测试设计[M].电子工业出版社.2011.04

[12]Ammann.P,Offutt.J 著(郁莲 等译)软件测试基础[M].2010.09

[13]陈能技.QTP 自动化测试进阶[M].电子工业出版社.2010.06

[14]蔡为东. 赢在测试[M].电子工业出版社.2010.

[15] 刘宇飞.QTP 在软件项目管理中的新发展[M].北京:清华大学出版社,2010.

[16] 朱少民. 软件测试方法和技术[M].北京:清华大学出版社,2010.

[17]软件测试资源网站:http://testingfaqs.org/

致 谢

本次设计在钱丽老师的悉心指导下,一步步完成。很幸运地能够由钱老师作为我的指导老师,在这里表示十分感谢。从开始的选题确定,我开始借助图书馆互联网搜集和我论文有关的资料。毕竟我的能力有限,而钱老师给我提供了一些参考文献、视屏等资料,是我获益匪浅,在我的论文实现过程中解决了我不少疑惑和难题。虽然之前做过一些小论文和设计,但还是稍显拙劣和稚嫩。在钱老师帮助下,才能顺利地完成本次毕业论文。

在这里也感谢其他老师给予我的帮助,在与老师们聊天讨论的过程中,给了我很多启发。我的同学们对我来说也是一笔财富,在这次论文设计中,给我指正了不少不足之处,帮我及早的发现并修正。

再次感谢各位。


    相关文章

    项目测试方案模板

    文件状态: [ ] 草稿 [ √ ] 正式发布 [ ] 正在修改 XX 项目测试方案 方案编号: 版 本 号: 原 作 者: 建立日期: 版本号 日期 修改者 A/M 内容及原因描述 备注 说明:方案版本维护表,用于测试方案版本的维护, A ...

    太原理工大学软件测试方法和技术实验报告

    本科实验报告 课程名称: 软件测试技术 实验项目:软件测试技术实验 实验地点:专业班级:12xx学号:201200xxxx 学生姓名:指导教师:宋晓涛 2014年12月13日 实验名称实验地点 逸夫楼202 实验一白盒测试方法 实验时间 1 ...

    平安银行笔试参考题目

    一.选择题 1.在CPU与主存之间设置调整缓冲存储器Cache,其目的是为了(B) A.扩大主存的存储容量 B.提高CPU对主存的访问效率 C.既扩大主存容量又提高存储效率 D.提高外在储器的速度 2.(A)是面向对象程序设计语言不同于其它 ...

    [转]数据驱动在QTP的运用

    (2008-09-08 22:06:57) 转载 标签:数据驱动 在qtp 的运用 it 分类:QTP测试工具 原文地址:http://www.51testing.com/?26649/action_viewspace_itemid_122 ...

    描述性编程

    QTP自动化的原理 1.封装被测对象到对象库 封装的概念:是指隐藏对象的属性和实现细节,仅仅对外公开接口的过程 2.对比对象库里的对象(静止)属性和运行时的真实被测对象(动态)的属性 3.对比一致后找到相应得对象 QTP识别对象的原理 QT ...

    selenium + python自动化测试环境搭建

    selenium + python自动化测试环境搭建 2013-05-29 18:21 by 虫师, 36846 阅读, 16 评论, 收藏, 编辑 selenium 是一个web 的自动化测试工具,不少学习功能自动化的同学开始首选se l ...

    敏捷开发测试规范V0.1

    敏捷开发测试规范(试行) 2012年9月 目录 1 概述............................................................................................ ...

    银行测试面试题库

    1. 答案题目正确性为80%以上. 单选题 1. 若类A继承B,下列哪个写法是正确的是(B) publicclassA,B{} publicclassAextendsB{} publicclassAB{} publicclassAexten ...

    他的名片上写着QA,这是什么鬼职位?

    QA是英文QUALITY ASSURANCE的缩写,中文意思就是"质量保证",中国质量管理协会的定义是:"企业为用户在产品质量方面提供的担保,保证用户购得的产品在寿命期内质量可靠." 美国质量管理协会 ...