邓松软件测试实验指导书(20140907采用) - 图文

更新时间:2024-06-15 08:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件测试实验指导书

编制人:邓 松

江西财经大学软通学院2014.5

实验一 书写测试计划(6学时)??????????????????????? 2 实验二 白盒测试(2学时)??????????????????????????12 实验三 JUnit测试框架的使用(4学时) ????????????????????36 实验四 黑盒测试(2学时)?????????????????? ??????? 50 实验五 集成测试(2学时)??????????????????????????62 实验六 QTP综合测试(8学时)?????????????????? ????? 74 实验七 Load Runner认识实验(4学时)????????????? ??? ??? 18 实验八 TestDirector错误报告与管理(2学时)??????????????????26

实验一 测试计划(6学时)

一、实验目的

1. 掌握测试计划的内容和编制。 2. 通过给定案例练习编写测试计划。

二、基本知识

1. 具有微软Windows和office Word的使用经验 2. 熟悉软件测试的基本知识 3. 熟悉测试计划的概念和内容 4. 了解案例的功能和使用步骤。

三、实验设备及环境

1. Windows操作系统 2. Office Word应用软件 3. 案例系统软件

4. 系统软件需求分析说明书和开发计划

四、实验内容

班级管理系统测试计划

1. 需求描述(学生考勤情况管理、学生学习记录、学生活动情况、班级

活动情况管理、住宿情况管理、各位班干部工作事项汇报子系统(工作完成情况可用仪表盘表示)等)。请各位同学细化各项目功能,使用原型法完成相应软件。

2. 测试计划标识符

FR201011-001-ST

3. 引言

1) 目标

班级管理系统测试计划的目标是:

1. 找出班级管理系统功能的缺陷;

2. 找出班级管理系统中对特殊数据处理的漏洞; 3. 找出班级管理系统运行过程中的BUG; 4. 找出班级管理系统登陆权限的差错; (此处学生填写相应目标)

2) 背景

a. 待开发软件系统的名称:班级管理系统;

b. 本项目任务提出者:《软件质量保证与测试》的授课教师 用户:班级信息管理人员,班级学生; c. 参考资料: 《软件工程》

《软件测试方法与技术》 d. 本系统的主要功能有:

学生信息管理功能:方便学生信息的查询,增加,删除,修改; 课程管理:管理员可通过编写表格的形式修改课程等相关的信息;

成绩管理:管理员可通过数据库中的学生成绩信息进行修改,增加;

学分管理:管理员对班级学生的荣誉情况,获奖信息,活动培训等学分机制的数量统计。

班级信息管理功能:管理员可通过此功能对班级信息进行查询,修改,增加,删除;

班干配备管理:管理员根据班级干部平日工作考察评比分配班干任免;

班级活动管理:管理员配合组织委员对一定时间内的班级集体活动作出计划和安排;

班级卫生管理:管理员配合勤工委员对班级寝室卫生考察并以表格的形式表现各个寝室卫生的具体情况。

(填写)

3) 范围

所选择的测试用例基本上能够检查到所有合法与不合法的输入和

输出;

局限性在于数据库设计存在的缺陷,可能存在学号相同但是其他信息完全一致的情况出现。 (此处学生填写相应内容)

4) 引用文档

(暂空)

4. 测试依据

GB/T

5. 方法

6. 测试项通过准则 7. 暂停准则和恢复要求 8. 测试交付项 9. 测试任务 10. 环境要求 11. 职责

12. 人员配备、培训要求和资源配置 13. 进度

登陆界面,班级管理员系统和学生信息系统的测试; 学生课程信息系统的检测;

14. 风险和应急

实验二 白盒测试(2学时)

实验目的

(1) 掌握结构性测试技术,并能应用结构性测试技术设计测试用例;

(2) 对测试用例进行优化设计;

背景知识

结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

一、 逻辑覆盖

结构性测试力求提高测试覆盖率。逻辑覆盖是对一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。

逻辑覆盖按覆盖程度由低到高大致分为以下几类:

(1) 语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次; (2) 判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一

次;

(3) 条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次; (4) 判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现

一次,而且判断本身所有可能结果也至少出现一次;

(5) 条件组合覆盖。设计用例,使得每个判断表达式中条件的各种可能组合都至

少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。

(6) 路径覆盖。设计足够的测试用例,使程序的每条可能路径都至少执行一次。 如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。

二、 基本路径测试

如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,

导出基本可执行路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。 ① 程序的控制流图

控制流图是描述程序控制流的一种图示方法。基本控制构造的图形符号如图所示。符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。

图3-.1 控制流图的各种图形符号

如果判定中的条件表达式是复合条件时,即条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的逻辑表达式,则需要改复合条件的判定为一系列只有单个条件的嵌套的判定。例如对应图3-2. (a) 的复合条件的判定,应该画成如图3-2. (b) 所示的控制流图。 条件语句 if a OR b 中条件a和条件b各有一个只有单个条件的判定结点。

图3-2 复合逻辑下的控制流图

② 计算程序环路复杂性

进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。

所谓独立路径,是指包括一组以前没有处理的语句或条件的一条路径。如在图3-3(b)所示的控制流图中,一组独立的路径是:

path1:1 - 11

path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11

路径path1,path2,path3,path4组成了图3-3 (b) 所示控制流图的一个基本路径集。只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的取真分支和取假分支也能得到测试。基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

(a) 程序流程图 (b) 控制流图

图3-3 程序流程图与对应的控制流图

通常环路复杂性可用以下三种方法求得。 ? 将环路复杂性定义为控制流图中的区域数。

? 设E为控制流图的边数,N为图的结点数,则定义环路复杂性为 V(G)=E-N+2。

? 若设P为控制流图中的判定结点数,则有 V(G)=P+1。

因为图5.14(b)所示控制流图有4个区域。其环路复杂性为4。 它是构成基本路径集的独立路径数的上界。可以据此得到应该设计的测试用例的数目。

③ 导出测试用例

利用逻辑覆盖方法生成测试用例,确保基本路径集中每条路径的执行。

3.2.1 实验设备

主流PC机一套,要求安装windows操作系统、Visual C++开发工具和OFFICE工具;

3.2.2 实验内容

题目一:使用逻辑覆盖测试方法测试以下程序段

void DoWork (int x,int y,int z) { 1 2 3

int k=0, j=0; if ( (x>3)&&(z<10) ) {

4 k=x*y-1; 5 j=sqrt(k); 6 }

7 if((x==4)||(y>5)) 8 j=x*y+10; 9 j=j%3; 10 }

说明:程序段中每行开头的数字(1~10)是对每条语句的编号。 (1)画出程序的控制流图(用题中给出的语句编号表示)。

(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。

题目二:三角形问题

在三角形计算中,要求输入三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示错误,可构成三角形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”。画出程序流程图、控制流程图、计算圈复杂度V(g),找出基本测试路径。

题目三:计算生日是星期几

已知公元1年1月1日是星期一。编写一个程序,只要输入年月日,就能回答那天是星期几。应用逻辑覆盖方法和基路径测试方法为上面的问题设计测试用例。

题目四:选择排序

下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( ):: 象

for ( int j = i+1; j < list.n; j++)

if ( list.V[j].getKey ( ) < list.V[k].getKey ( ) ) k = j;//当前具最小关键码的对象 if ( k != i ) Swap ( list.V[i], list.V[k] );

//交换

void SelectSort ( datalist & list ) {

/对表list.V[0]到list.V[n-1]进行排序, n是表当前长度。 for ( int i = 0; i < list.n-1; i++ ) {

int k = i;

//在list.V[i].key到list.V[n-1].key中找具有最小关键码的对

} }

(1) 试计算此程序段的McCabe复杂性;

(2) 用基本路径覆盖法给出测试路径; (3) 为各测试路径设计测试用例。

3.2.3 实验步骤

(1) 根据结构性测试技术设计测试用例,主要考虑逻辑覆盖测试(语句覆盖、判断

覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、路径覆盖)和基路径测试技术;

(2) 根据所学知识确定优化策略(原则:用最少的用例检测出更多的缺陷、软件测

试的充分性与冗余性考虑),设计两套测试用例集;

(3) 根据设计的两套测试用例集进行测试、参照表2所示的缺陷等级给出缺陷列表; (4) 计算测试用例的分支覆盖率、条件覆盖率和语句覆盖率等测试管理指标;

3.2.4 实验要求

(1) 根据题目要求编写测试用例(参照表1进行用例设计);

(2) 实验结果要求给出两套测试用例集测试效果比较;计算测试用例的分支覆盖率、

条件覆盖率和语句覆盖率等测试管理指标;

(3) 撰写实验报告;

3.2.5 实验思考

(1) 使用公式e-n+p/e-n+2p确定的McCabe基路径与实际分析的是否完全一致? (2) DD-路径和MM-路径的区别与联系。

实验三 JUnit测试框架的使用(4学时) 一、实验目的

1、掌握Junit测试框架的使用 2、掌握测试用例的编写

二、基本知识

1、熟悉java编程语言和Eclipse集成开发环境 2、熟悉单元测试概念 3、熟悉测试设计技术

三、实验环境

①windows操作系统+IE浏览器

②Eclipse集成开发环境+Junit测试框架

四、实验内容

1、学习Junit框架的使用

可通过以下两个示例进行学习。

A、Junit使用方法示例1

1)把Junit引入当前项目库中

新建一个 Java 工程—coolJUnit,打开项目coolJUnit 的属性页 -> 选择“Java Build Path”子选项 -> 点选“Add Library?”按钮 -> 在弹出的“Add Library”对话框中选择 JUnit(图1),并在下一页中选择版本 Junit 4 后点击“Finish”按钮。这样便把 JUnit 引入到当前项目库中了。

图1 为项目添加 JUnit 库

2)新建单元测试代码目录

单元测试代码是不会出现在最终软件产品中的,所以最好为单元测试代码与被测试代码创建单独的目录,并保证测试代码和被测试代码使用相同的包名。这样既保证了代码的分离,同时还保证了查找的方便。遵照这条原则,在项目 coolJUnit 根目录下添加一个新目录 testsrc,并把它加入到项目源代码目录中。(见 图2、3)。

图2 新建测试代码目录

图3 添加测试代码目录

3)在工程中添加类

添加类SampleCaculator,类中有两个方法,分别计算加减法。编译代码。

package cn.edu.gzhu;

public class SampleCalculator { }

//计算两整数之和

public int add(int augend, int addend){ }

//计算两整数之差

public int subtration(int minuend, int subtrahend){ }

return minuend - subtrahend; return augend + addend;

4)写单元测试代码

为类SampleCalculator添加测试用例。在资源管理器SampleCalculator.java文

件处右击选new>选Junit Test Case(见图4),Source foler选择testsrc目录,点击next,选择要测试的方法,这里把add和subtration方法都选上,最后点finish完成。

}

}

return m.appendTail(sb).toString().toLowerCase();

图6 示例2运行结果

2、使用Junit框架对类Date和类DateUtil(参见附录)进行单元测试。

只对包含业务逻辑的方法进行测试,包括: 类Date中的

isDayValid(int year, int month, int day) isMonthValid(int month) isYearValid(int year)

类DateUtil中的

isLeapYear(int year) getDayofYear(Date date)

要求设计合理测试用例,用Junit进行测试,分析测试结果,并对错误代码进行修改。

3、(选做)使用 Junit框架对给出的工程进行单元测试。

该工程应用SSH框架实现。 必须测试的类:

javaMax.Customer.Service.Impl包中 类LoginCheck.java 类Register.java

javaMax.SystemAdmin.Service.Impl包中的 类InternalUserManagement.java 要求设计合理测试用例,用Junit进行测试,分析测试结果,并对错误代码进行修改。

五、实验要求

1、做好实验预习,掌握并熟悉本实验中所使用的测试环境及相应的测试软件。 2、写出实验报告,内容包括: ① 实验目的 ② 实验环境

完成实验内容2: ③ 给出测试用例 ④ 分析测试结果 ⑤ 给出改进后的代码

实验四 黑盒测试(2

学时)

实验类型:验证型(2学时) 实验目的

(1) 能熟练应用功能性测试技术进行测试用例设计; (2) 对测试用例进行优化设计;

背景知识

功能测试是指在对程序进行功能抽象的基础上,将程序划分成功能单元,然后在数据抽象的基础上,对每个功能单元生成测试数据进行测试。进行功能测试时,被测程序被当作打不开的黑盒,因而无法了解其内部构造,因此又称为黑盒测试。

一、 等价类测试

等价类测试方法是把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。使用等价类划分方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。

等价类的划分有两种不同的情况: ① 有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。 ② 无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。

用等价类划分法设计测试用例步骤:

(1) 形成等价类表,每一等价类规定一个唯一的编号;

(2) 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;

(3) 设计一个新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖。

二、 边界值测试

1. 边界值分析

边界值分析是考虑边界条件而选取测试用例的一种功能测试方法。边界值分析关注输入空间的边界,以标识测试用例,因为错误更可能出现在输入变量的极值附近。

边界值分析的基本思想是:使用在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值。

2. 健壮性测试

健壮性是指在异常情况下,软件还能正常运行的能力。健壮性考虑的主要部分是预期输出,而不是输入。

健壮性测试是边界值分析的一种简单扩展。除了变量的5个边界分析取值还要考虑略超过最大值(max)和略小于最小值(min)时的情况。

3. 最坏情况测试

最坏情况测试将意味着更大工作量,n变量函数的最坏情况测试会产生5的n次方个测试用例,而边界值分析只产生4n+1个测试用例。

三、 基于决策表的测试

决策表适合描述不同条件集合下采取行动的若干组合的情况。使用决策表标识测试用例,则把条件解释为输入,行动解释为输出。有时条件最终引用输入的等价类,行为引用被测试软件的主要功能处理部分,规则解释为测试用例。

对于有限条目决策表,如果有n个条件,则必须有2条规则。如果不关心条目实际地表明条件是不相关的,则没有不关心条目的规则统计为1条规则,规则中每出现一个不关心条目,该规则数乘一次2。

实验设备

主流PC机一套,要求安装windows操作系统、Visual C++开发工具和OFFICE工具;

实验内容

题目一:电话号码问题

某城市电话号码由三部分组成。它们的名称和内容分别是:

地区码:空白或三位数字; 前 缀:非'0'或'1'的三位数字; 后 缀:4位数字。

假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。

题目二:三角形问题

根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。

“一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。”

题目三:日期问题

用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month 、 day和year均为整数值,并且满足:1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为 2004 年11月29日,则该程序的输出为2004年12月1日。

(1) 分析各种输入情况,列出为输入变量 month 、 day 、 year 划分的有效等价类。

(2) 分析程序的规格说明,并结合以上等价类划分的情况,给出问题规定的可能采取的操作(即列出所有的动作桩)。

(3) 根据 (1) 和 (2) ,画出简化后的决策表。

题目四:找零钱最佳组合

假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内 (P) , 求找给顾客最少货币个(张)数?(货币面值50元10 元,5 元,1元四 种 )

实验步骤

(1) 根据功能性测试技术设计测试用例,主要考虑等价类划分和边界值分析测试技术;

(2) 根据所学知识确定优化策略(原则:用最少的用例检测出更多的缺陷、软件测试的充分性与冗

余性考虑),设计两套测试用例集;

(3) 根据设计的两套测试用例集进行测试;

实验要求

(1) 根据题目要求编写测试用例(参照表1进行用例设计); (2) 实验结果要求给出两套测试用例集测试效果比较; (3) 撰写实验报告;

实验思考

(1) 在实际的测试中,如何设计测试用例才能达到用最少的测试用例检测出最多的缺陷; (2) 在进行用例设计时,如何考虑软件测试用例的充分性和减少软件测试用例的冗余性;

实验五 集成测试(2学时)

一、实验目的

验证集成测试相关理论,实践集成测试的具体方法。

二、实验内容

1.题目一:对给定的子系统,采用白盒测试和黑盒测试相结合的方法进行集成测试。

1. 被子系统构成

1. int WINAPI GetMainLevel ( void )

2. int WINAPI GetFirstDirSetting ( char* path, unsigned int len , int& lev ) 3. BOOL FileSearchInLink(DirLayerLink* &search, DirLayerLink* &setting) 4. int WINAPI GetNextDirSetting ( char* path, unsigned int len , int& lev ) 5. DirLayerLink* IsInDirSettings(DirLayerLink* setting, char* dirname,

DirLayerLink* &prelink)

6. BOOL IsInFileSettings(char* filename) 7. FileModeSel WINAPI GetFileMode ( void )

8. BOOL WINAPI AddRstCont ( char* file, char* path, unsigned long size) 9. int WINAPI GetFirstFileSetting ( char* file, unsigned int len ) 10. int WINAPI GetNextFileSetting ( char* file, unsigned int len ) 11. BOOL MatchPattern(char* file, char* pattern) 12. void WINAPI SetErrMsg ( char* msg )

13. int FindSubString ( const char* source, const char* dest )

2. 被测子系统逻辑结构图

GetMainLevel IsInDirSettings GetFirstFileSetting 【实验步骤】 FileSearch GetFirstDirSettings FileSearchInLin GetNextDirSetting InInFileSetting GetFileMode AddRstCont GetNextFileSetting MatchPattern SetErrMsg FindSubStr (1) 预习相关课堂内容,了解测试对象,阅读文件检索项目的需求规格说明书,界面规格说明书,

概要设计说明书,详细设计说明书。

(2) 根据小组角色,分别进行代码模块分析,要求能够画出模块逻辑框图。并和试验材料进行比较,

找出不同。

(3) 为每个模块(函数)数建立一个VC Console工程,工程项目名称与被测函数名称一致。 调试编

译该工程。(可以参考课堂实例)

(4) 在调试过程中,如果需要,就建立一个或多个桩模块,并建立一个驱动模块。 (5) 根据步骤(2)功能模块图,设计测试用例。

(6) 对于每个测试用例,向工程中添加一个驱动模块。直到所有的测试用例全部结束。 (7) 填写试验报告。

三、实验要求

(1)要求学生能够理解集成测试的相关概念和集成测试的过程、方法。 (2)撰写实验报告; 四、思考与讨论

(1)集成测试一般的测试的步骤是什么?

(2)集成测试的测试用例设计和单元测试测试用例选择方法上有和异同?

五、其它说明:

1、实验结束上交资料包括:设计的集成测试用例(包括测试用例的选取准则)、错误记录、实验报告

2、实验成绩评定包括:测试用例报告(50%)、实验报告(50%)。

实验六 QTP大型测试工具的使用(8学时)

一、实验目的

1. 掌握QuickTest Professional 8.2(QTP)操作界面的组成。

2. 着重掌握如何在不同的环境中使用QuickTest来作为自动化的功能测试工具。 3. 掌握如何创建自动化测试用例。

二、基本知识

1. 熟悉测试概念 2. QTP8.2的使用概要。

三、实验设备及环境

①windows操作系统

②QuickTest Professional 8.2应用软件

四、实验内容

使用QuickTest进行测试的过程包括6个主要步骤: ● 准备录制

打开你要对其进行测试的应用程序,并检查QuickTest中的各项设置是否适合当前的要求。 ● 进行录制

打开QuickTest的录制功能,按测试用例中的描述,操作被测试应用程序。 ● 编辑测试脚本

通过加入检测点、参数化测试,以及添加分支、循环等控制语句,来增强测试脚本的功能,使将来的回归测试真正能够自动化。 ● 调试脚本

调试脚本,检查脚本是否存在错误。 ● 在回归测试中运行测试

在对应用程序的回归测试中,通过QuickTest回放对应用程序的操作,检验软件正确性,实现测试的自动化进行。 ● 分析结果,报告问题

查看QuickTest记录的运行结果,记录问题,报告测试结果。

QuickTest简介

使用 QuickTest 你可以测试标准的网页、一般Windows 应用程序、Visual Basic 应用程序、ActiveX 控件、多媒体对象等。

自动测试的好处:

人工测试非常浪费时间而且需要投入大量人力。使用 QuickTest 可以加速整个测试的过程,并且在建置(build)完新版本的应用程序或网站后,可以重复使用测试脚本进行测试。

以 QuickTest 执行测试,就与人工测试一样,QuickTest 会仿真鼠标的动作与键盘的输入,不过QuickTest 比人工测试快多了。

自动测试的好处

快速 (Fast) QuickTest 执行测试比人工测试速度快多了。

可靠 (Reliable) QuickTest 每一次的测试都可以正确执行相同的动作,可避免人工测试的错误。 可重复(Repeatable) QuickTest 可以重复执行相同的测试。

可程序化(Programmable)QuickTest 可以程序的方式,撰写复杂的测试脚本。

广泛的(Comprehensive)QuickTest 可建立广泛的测试脚本,涵盖应用程序的所有功能。 可再使用(Reusable)QuickTest 可重复使用测试脚本,即使应用程序使用接口已经改变。

QuickTest的检查点

QuickTest的检查点到底是什么?,为什么要那样添加,提示的信息本来就是正确的,那样添加肯定是正确的,到底在检查什么。

QuickTest检查点功能有3个,1.设置预期结果 2.捕获实际结果 3.比较。

在录制测试脚本时。如果处于手工测试方式,直接人工看一下每个页面的提示信息/文字/图片是否与测试用例的预期结果相同,就可以判断测试结果了,但是这时需要工具来做判断,其实我们很需要工具也应该能和人工一样,通过某种方式(例如:眼睛)来查看提示的信息和文档中相应的测试用例的预期结果做比较的,但是工具是没有眼睛的,那工具是通过什么来作为他的眼睛的?QuickTest是通过提供的检查点来进行判断的,工具没有眼睛,他并不知道需要判断的提示信息在什么位置上,那么作为工具来讲,首先要解决的就是捕获到要检查的信息在哪里,QuickTest提供的添加检查点的方式就是解决了这个问题,那么其次工具还需要知道预期结果是什么,预期结果在哪里写,QuickTest解决的方式就是在添加完检查点后将抓取的信息修改成为用例中的预期结果,实际上到目前位为止整个过程都是在设置预期结果,并没有做比较,那接下来运行测试脚本时,工具将设置好的预期结果与实际结果比较进行判断。

第一部分 测试应用程序

试验一、二

测试应用程序的具体操作步骤:

通过本例子熟悉对应用程序的测试,并学习QuickTest 的参数化功能 1.1录制应用程序测试过程

我们将使用QuickTest录制对一个QuickTest自带应用程序的操作过程。 1.1.1 启动QuickTest

启动QuickTest,在随后显示的“Add- in Manager”窗口中,只选中“Visual Basic”复选框,点击“OK”按钮。

在“欢迎”窗口中,点击“Blank Test”项,开始一个新的测试。

1.1.2 开始录制

在QuickTest中,选择“Test > Record”菜单命令,这时会显示下面这样一个窗口:

录制、运行设置对话框Windows Application页面

如果选择“Record and run test on any application”单选按钮,则在录制过程中,QuickTest会记录你对所有的Windows程序所做的操作。如果选择“Record and run on these application(opened on session start)”单选按钮,则在录制过程中,QuickTest只会记录对那些添加到下面“Application details”列表框中的应用程序的操作(你可以通过“Add”、“Edit”、“Delete”按钮来编辑这个列表)。 我们选择第一个单选按钮,确定。(由于工具环境原因,若选择第二个选项,涉及到循环的时候,时而会出现不执行第二次循环的现象,这里用这种方法避免这种情况发生,之后会介绍其他方方法)。因为我们只想对单一App进行操作,所以要确保录制时不要操作其他应用程序,包括word,若操作了其他的应用程序,请在录制完成后将多余的步骤删除。 1.1.3 进行操作

0. 启动应用程序。开始->程序->QuickTest Pro->sample app->Flight。此时录制了启动应用程序的操作。

1.输入用户名:不能小于4字符,请输入自己的学号。输入密码:点击help查看密码,登陆

2. 输入日期。选择出发地,目的地,点击Flights...

3. 选择航班页面,默认航班,不要点击选择航班,直接点击确定(否者之后的参数化无法运行)

4. 输入乘客名,请输入自己的学号,点击Insert Order

5.点击菜单File,选择Exit。关闭Flight应用程序,也可以自行添加其他步骤。 1.1.4 停止录制

在QuickTest中,选择“Test > Stop”菜单命令,录制就此停止。 测试脚本管理窗口显示的内容大致如下图所示:

1.1.5 建立文字检查点

在Keyword View中,选择Fly From:

在Active Screen中,右键点击在「Fly From:」下方的对话框,点选Insert Text Checkpoint开启Text Checkpoint Properties对话窗口。如上图所示

在Text Checkpoint Properties对话窗口中,如下图所示,选择After current step。否者检查点无法通过,因为是在本步骤(检查点插入位置)Select之后,对话框内才显示“London”字母

1.1.6运行、分析测试

在测试执行完成后,会显示测试结果窗口,如果所有的检测点都通过了验证,运行结果为Passed。若有疑问请参考P8

1.2、参数化

当你在作测试时,你可能会想要使用多种不同的测试数据,针对同样的操作或功能进行测试。

举例来说,当你想要使用10 组不同的订单数据,来验证新增订单的功能。最简单的方式是你可以直接将这10 组不同数据的操作录制下来;另一个聪明的选择是,你可以将新增订单的操作录制下来,然后透过QuickTest 的参数化功能,建立这10 组不同的数据,如此一来,QuickTest 执行测试脚本时,就会分别使用这10 组数据,执行10 次新增订单的测试了。

1.2.1 定义数据表参数

之前录制的测试脚本预订了从Landon到Los Angeles 的机票,在测试脚本中,Landon是个常数值,也就是说,每次执行测试脚本预定机票时,出发地点都是Landon。通过这部分内容,你将会学习到,如何将测试脚本中的出发地点参数化,如此一来,执行测试脚本时

就会以不同的出发地点去预订机票了。

1.保存脚本

在QuickTest中,选择“File > Save”菜单命令,保存录制的测试。在保存时,要确保保存对话框中的“Save Active Screen files”复选框被选中,选择合适的路径,添入文件名,我们取名为Parameter。点击“保存”按钮进行保存。

2. 确认【Active Screen】是开启的

假如你没有看到QuickTest 右下方的【Active Screen】,点选工具列上的【Active Screen】按钮,或是点选【View】>【Active Screen】。

3. 确认【Data Table】是开启的

假如在 QuickTest 下方没有出现【Data Table】,请点选工具列上的【Data Table】按钮,或是点选【View】>【Data Table】。

4. 选取要参数化的文字

在 Keyword View 中点选\From\右边的【Value】字段,然后再点选参数化图示(如下图所示)。会开启【Value Configuration Options】对话窗口。

参数化图示

【Value Configuration Options】对话窗口

5. 设定要参数化的属性

点选 Parameter。如此一来,你就可以使用参数值来取代Landon这个常数值。请选择【Data Table】这个选项,这个选项表示此参数的值会从QuickTest 的Data Table 中取得。

而且【Name】字段会出现p_Item,请将其修改成myFrom。

点选【OK】关闭窗口。QuickTest 会在Data Table 中新增myFrom参数字段,并且插入一行Landon 的值。则Landon 会成为测试脚本执行时所用的的第一个值。

同时请特别注意一下在Keyword View 中的变化。在参数化之前,此测试步骤是显示【\Fly From \】。现在,这个测试步骤变成了【\DataTable(“myFrom”, dtGlobalSheet)】。而且当您点选【Value】字段时,【Value】字段会变成如下图所示,表示此测试步骤已经被参数化了,而且其值是从Data Table 中的myFrom字段中取得。

1.2.2 在数据表中输入参数

QuickTest 会在Data Table 中显示参数值。在此课程,你会在Data Table 中加入更多笔出发地点的资料,让QuickTest 可以使用这些资料执行测试脚本。

1. 在myFrom 字段输入更多数据

点选myFrom字段的第二行,并输入「Portland」。 点选第三行,并输入「Seattle」。 按下【Enter】。 2. 储存测试脚本

点选【File】>【Save】或是点选工具列上的【Save】按钮。

1.2.3 修正受到参数化影响的测试步骤

当某个测试步骤被参数化后,有可能会影响到其它的测试步骤也需要作参数化的动作。接下来,将会对出发地点的文字检查点作参数化,以符合对出发地点作参数化的预期结果。

1. 修改文字检查点

在 Keyword View 中,文字检查点的位置,然后点选鼠标右键,选取【Checkpoint Properties】,开启【Text Checkpoint Properties】对话窗口。

2. 对文字检查点作参数化

在【Checked Text】的【Constant】字段中会显示「London」,表示测试脚本每次执行时,这个文字检查点的预期值为「London」。点选【Parameter】。

点选【Parameter Options】按钮,开启【Parameter Options】对话窗口。

在【Name】下拉列表中选取「myFrom」,指定这个文字检查点使用myFrom字段中的值,当成是检查点的预期值。

点选【OK】关闭对话窗口,此文字检查点也被参数化了。 1.2.4 执行并分析使用参数的测试步骤

现在,您可以执行修改完成后的「Parameter」测试脚本了。QuickTest 会使用Data Table 中departure 字段的值,执行三次测试脚本。

检视测试结果: Iteration 2:

在检查点的【Details】窗格中,显示Portland 为预期结果同时也是实际值,所以此文字检查点为通过。你也可以看到在下方的【Application】窗格中,显示机票的出发地点也是Portland。

Iteration 3

在检查点的【Details】窗格中,显示Seattle 为预期结果同时也是实际值,所以此文

字检查点为通过。你也可以看到在下方的【Application】窗格中,显示机票的出发地点也是Seattle。:

试验三 修改脚本文件

本小节简单介绍一下对脚本文件的修改,编写等操作。

试验一、二做完后,选择Expert View,脚本文件看起来应该大概是下面这样的

这个脚本文件(和我们录制的操作对应),在运行后会被循环执行3次,我们接下来要做的内容是让脚本只执行一次,但由于之前进行了参数化操作,所以我们通过加入For循环以及其他代码实现需要循环执行程序部分

2.1 设定让脚本只执行一次

QTP的工具栏上选择 Test –> Settings,在run标签上选择Run one iteration only。如下图,设定程序只运行一次,点击OK。

2.2 修改脚本

首先加入For循环,加入的位置在输入日期操作之前,加入的语句为For i=1 to 3(循环3次)。Next加入到窗口关闭操作之前。For和Next之间的脚本会被执行3次,如下图

此时若运行还存在若干问题:

1.执行会报错,由于我们插入订单的的操作执行一次后,程序的Insert Order按钮变得不可用。再次循环次会报错

对应的我们要在第一循环结束时加入新建订单的操作,录制实现的话是选择菜单File –>New Order。本次我们编辑脚本实现。可以看一下脚本的最后一行,是通过菜单关闭应用

本文来源:https://www.bwwdw.com/article/qvc3.html

Top