QTP——功能测试

一、前言(课设目的及内容)

QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等

1.1 测试目的

(1) 使学生能掌握网站功能测试的基本思路和方法,学会使用自动化测试工具QTP进行功能测试;

(2) 培养学生分析、解决问题的能力;

(3) 提高学生的创新思维能力与动手能力;

(4) 提高学生的科技论文写作能力。

1.2 测试内容

QTP进行功能测试的测试流程的五个步骤:

1.制定测试计划

自动测试的测试计划是根据被测项目的具体需求,以及所使用的测试工具而制定的,完全用于指导测试全工程。

2.创建测试脚本

当测试人员浏览站点或在应用程序上操作的时候,QTP的自动录制机制能够将测试人员的每一个操作步骤及被操作的对象记录下来,自动生成测试脚本语句。

3.增强测试脚本的功能

录制脚本只是为了实现创建或者设计脚本的第一步,基本的脚本录制完毕后,测试人员可以根据需要增加一些扩展功能,QTP允许测试人员通过在脚本中增加或更改测试步骤来修正或自定义测试流程。

4.运行测试

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

5.分析测试

运行结束后系统会自动生成一份详细完整的测试结果报告。
二、测试计划及测试需求

2.1 测试原理分析

QTP主要采用的是使用GUI模拟人的操作。它在模拟人的操作时会记录操作的对象及所做的操作和顺序,然后在回放时按记录顺序操作这些对象。而在这个模拟的过程中,最重要的莫过于界面对象(控件)的识别。

例如,在“用户名输入框”中输入“a用户”,伪代码如下:
WebEdit(“用户名输入框”).Set “a用户”,下面分析这个测试原理。

首先,QTP会通过“用户名输入框”这个名字到对象库的对象名中查找;

然后通过找到的对象名,找到对象名映射的属性包;

接着QTP就会通过这个属性包来匹配页面上的控件的属性,如果在页面上找到一个唯一与此属性包匹配的控件,那QTP就会认为此控件为要找的控件;

最后QTP根据“WebEdit”来确定控件的类型,并调用QTP对于此类控件内置的操作方法“Set”把“a用户”赋予了控件。

至于其他控件的识别和操作,基本原理和上面一样。

2.2测试流程图

根据测试原理的分析以及QTP测试的基本步骤可以设计如图2-1的测试流程图。

在这里插入图片描述

​ 图2-1 测试流程图

·2.3 测试计划设计

根据测试原理分析与测试思想设计,设计如图2-2所示的测试过程计划流程图。
在这里插入图片描述

图2-2 测试计划流程图

2.4 测试需求分析

对于一个网站系统,其链接的正确性和各个功能模块的功能实现的准确性是其测试的关键性环节。同时在最短的时间内开发出需求分析中的网站系统的软件产品,以最快的速度能先于其他竞争对手占领软件市场,从而获取最大的利益,所以测试速度也是至关重要的。

传统的软件测试是靠人进行手工测试,也就是现在各个公司的主流方法,我们称之为Manual test。测试部门每天都要计算在某个项目上Charge多少个人。这样的测试耗费时间、人力、物力以及成本。自动化测试的目的就是尽可能的减少在测试上的人力和财力的开销,以最便捷省时省事的方法完成同样的任务。

因此以QTP自动化测试工具对网站的链接正确性检查和各个功能模块的功能实现的准确性测试能够在满足测试需求的前提下加快测试进度。

2.5 测试环境搭建

操作系统:Windows 10

语言:中文

浏览器:IE浏览器

网络:宽带连接

网站:http://127.0.0.1:5000/newstype

软件:QuickTest Professional

其他软件需求:Microsoft Visio2007和Microsoft Word2016

三、测试用例的设计

3.1 登录与注册测试用例

(1).注册测试用例设计如表3-1所示:

表3-1注册测试用例

前置条件输入数据预期结果实际结果
输入姓名:章英杰注册成功注册成功
输入电话:15297323390
输入密码:******

(2). 登录测试用例如表3-2所示:

表3-2 登录测试用例

前置条件输入数据预期结果实际结果
已注册用户登录成功登录成功
输入电话:15297323390
输入密码:******

3.2 查看新闻的测试用例

(1). 查看新闻的测试用例如表3-3所示:

表3-3 查看新闻的测试用例

前置条件输入数据预期结果实际结果
点击想要查看的新闻类别点击对应新闻类别链接进入对应类别的新闻列表页面进入对应类别的新闻列表页面
点击想要查看的新闻点击对应新闻链接进入对应新闻详情页面进入对应新闻详情页面

3.3 关闭新闻返回新闻咨询页面的测试用例

(1). 关闭新闻返回新闻咨询页面的测试用例如表3-4所示:

表3-4 关闭新闻返回新闻咨询页面的测试用例

前置条件输入数据预期结果实际结果
关闭新闻详情页面点击关闭页面按钮新闻详情页面关闭进入新闻列表页面新闻详情页面关闭进入新闻列表页面
点击导航栏中的“新闻首页”点击导航栏中“新闻首页”链接进入新闻咨询页面进入新闻咨询页面

3.4 脚本

SBrowser("Accordion Slider").Page("Accordion Slider").Link("登录|注册").ClickBrowser("Accordion Slider").Page("注册或登录").WebEdit("WebEdit").Set "15297323390"Browser("Accordion Slider").Page("注册或登录").WebEdit("WebEdit_2").SetSecure "627c7a0e614001379ef301f87ebc5b3ea454"Browser("Accordion Slider").Page("注册或登录").WebButton("登录").Drag 137,142Browser("Accordion Slider").Page("注册或登录").WebButton("登录").Drop 137,142Browser("Accordion Slider").Page("Accordion Slider_2").Link("新闻资讯").ClickBrowser("Accordion Slider").Page("新闻资讯").Link("旅游").ClickBrowser("Accordion Slider").Page("旅游").Link("最火五一小长假将来临!这三座热门城市就别去了,火车票已秒光").ClickBrowser("Accordion Slider").Page("旅游_2").Link("新闻首页").ClickBrowser("Accordion Slider").Page("新闻资讯").Link("返回首页").Click

四、测试过程

4.1开始录制脚本:

点击打开QTP,创建一个Blank Test;

在这里插入图片描述

点击Record来录制一个脚本:

在这里插入图片描述

点击“确定”后进入新闻网站主页:

在这里插入图片描述

然后进入用户登录页面,如下图所示:

在这里插入图片描述

输入用户名和密码后,进入网站首页:

在这里插入图片描述

图4-5 进入邮箱的写信界面

点击新闻资讯,进入新闻类别页面:

在这里插入图片描述

点击想要查看的新闻类别进入新闻列表页面:

在这里插入图片描述

点击新闻链接进入新闻详情界面:

在这里插入图片描述

返回新闻首页:

在这里插入图片描述

进入QTP的Keyword视图:

在这里插入图片描述

而下图是其Expert View(Expert就是代码视图,一般编写脚本都在这个区域):

在这里插入图片描述

4.2 回放录制脚本:

录制完成后,点击按钮,由于没有加入检查点,故而结果都是Done,出现如下图:

在这里插入图片描述

4.3 加入检查点

下面加入检查点,在用户页面的输入用户名时加入一个检查点,以检查输入的用户名是否正确:,

在这里插入图片描述

然后设置检查点属性,检查点插入位置设为后,检查点超时设为2)):

在这里插入图片描述

插入检查点后效果:

在这里插入图片描述

Expert View:

在这里插入图片描述

4.4 重新运行脚本

再次点击按钮,得到结果如下:

在这里插入图片描述

图4-17 脚本回放完成界面

两个结果都是Passed,表示都通过了,功能验证测试完成。

五、测试结果分析

本次实验主要利用QTP的检查点功能来测试登录时输入用户名功能。在开始设置检查点的时候,我开始将检查点放在了输入用户名之前,导致用户名还没有输入就进行检查,所以一直失败,后来发现检查点位置放错了,应该放在输入用户名之后,修改之后测试通过。

在这里插入图片描述

六、课设小结及心得体会

QTP是一款非常强大自动化测试工具,它的用途非常广泛,各项功能如对象库,同步点,检查点等也非常好用。通过本次的课程设计,使我对软件测试这门课程有了一个更加深入的了解,尤其是相对于小学期之前来说,使用QTP进行功能测试熟练了很多,尤其是插入检查点这一环节,之前做实验时对这一环节并没有完全理解,所以在这次测试过程中卡在了插入检查点这一环节,测试一直不通过,后来通过网上查找资料以及查看学习通的视频才对这一环节完全理解,测试过程中除了插入检查点之外,基本没有出现其他问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五个超级好用的Prompt网站,让你的GPT效率碾压旁人!

五个超级好用的Prompt网站,让你的GPT效率碾压旁人! 1. 150 Best ChatGPT Prompts for All Kinds of Workflow 该网站包含了150个能够显著提升工作流程效率的ChatGPT Prompt。从制作引人入胜的内容到简化项目,这些提示应该有助于将 ChatGPT …

【Python】解决Python报错:IndentationError: expected an indented block

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

基于51单片机的酒精浓度检测仪的设计

一.硬件方案 硬件部分为利用MQ3气敏传感器测量空气中酒精浓度,并转换为电压信号,经A/D转换器转换成数字信号后传给单片机系统,由单片机及其相应外围电路进行信号的处理,显示酒精浓度值以及超阈值声光报警。电路主要由51单片机最小…

【刷题(13)】二分查找

一、二分查找基础 &#xff08;1&#xff09;int mid ((right - left) >> 1) left; &#xff08;2&#xff09;lower_bound的底层实现 int lower_bound(vector<int>& nums, int x) {int left 0;int right nums.size() - 1;// 区间为 左闭右闭while (lef…

基于python实现生命游戏

文章目录 一、生命游戏是什么二、生命游戏规则解释1.相邻细胞2.细胞状态 三、代码实现1.邻居细胞2.更新状态 四、整体代码 一、生命游戏是什么 生命游戏&#xff08;Game of Life&#xff09;是由英国数学家约翰何顿康威在1970年发明的一种细胞自动机&#xff08;Cellular Aut…

(超详细)字符函数和字符串函数【上】

前言 C 语言中对字符和字符串的处理很是频繁&#xff0c;但是 C 语言本身是没有字符串类型的&#xff0c;字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 . 1.求字符串长度函数 strlen函数 我们要求一个字符串函数的长度…

Firefox国际版

Firefox国际版官方网址&#xff1a; Download the Firefox Browser in English (US) and more than 90 other languagesEveryone deserves access to the internet — your language should never be a barrier. That’s why — with the help of dedicated volunteers around…

C语言序列化和反序列化--TPL(一)

TPL TPL说明网站 C语言中高效的序列化 您可以使用tpl快速轻松地存储和重新加载C数据。Tpl是一个用于序列化C数据的库。数据以自然二进制形式存储。该API很小&#xff0c;并试图保持“不碍事”。Tpl可以序列化许多C数据类型&#xff0c;包括结构。Tpl与文件、内存缓冲区和文件…

【数据结构:排序算法】堆排序(图文详解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f369;1.大堆和小堆 &#x1f369;2.向上调整算法建堆和向下调整算法建堆&#xff1a;…

Kafka原生API使用Java代码-生产者-分区策略-默认分区策略轮询分区策略

文章目录 1、代码演示1.1、pom.xml1.2、KafkaProducerPartitioningStrategy.java1.2.1、ProducerConfig.LINGER_MS_CONFIG取 0 值得情况&#xff0c;不轮询1.2.2、ProducerConfig.LINGER_MS_CONFIG取 0 值得情况&#xff0c;轮询1.2.3、ProducerConfig.LINGER_MS_CONFIG取 1000…

B/S架构+java语言+Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用?

B/S架构&#xff0b;java语言&#xff0b;Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用&#xff1f; 药物不良反应(ADR)是指在合格药物以正常用量和用法用于预防、诊断、治疗疾病或调节生理功能时所发生的意外的、与防治目的无关的、不利或…

AI Agent智能体概述及原理

AI Agent概述 AI Agent旨在理解、分析和响应人类输入&#xff0c;像人类一样执行任务、做出决策并与环境互动。它们可以是遵循预定义规则的简单系统&#xff0c;也可以是根据经验学习和适应的复杂、自主的实体&#xff1b;可以是基于软件的实体&#xff0c;也可以是物理实体。…

大模型“1元购”?AI公司加速奔向应用端“大航海时代”

自字节跳动发布豆包大模型&#xff0c;互联网大厂纷纷就位&#xff0c;击穿“地板价”的打法从C端向B端拓展。这也成为今年“618”最亮眼的价格战。 5月15日&#xff0c;字节跳动率先宣布豆包大模型已通过火山引擎开放给企业客户&#xff0c;大模型定价降至0.0008元/千Tokens&…

设计模式20——职责链模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 职责链模式&#xff08;Chain …

FreeRTOS【8】二值信号量使用

1.开发背景 FreeRTOS 提供了队列可以在线程间快速交换信息&#xff0c;那么还有没有其他交互渠道&#xff1f;答案是有的&#xff0c;相对于队列传递信息&#xff0c;还有更轻量级的线程唤醒操作&#xff0c;那就是信号量&#xff0c;而二值信号量就是最简单的一种。 二值信号量…

C++模拟实现stack和queue

1 stack 1.1概念 stl栈 1.2栈概念 1.3代码 2 queue 2.1概念 stl队列 2.2队列概念 2.3代码

网上打印资料A4纸一般多少钱一张

我们知道&#xff0c;在打印需求上A4纸&#xff08;210mmx297mm&#xff09;是较为常见的打印用纸&#xff0c;同时因为纸张的不同在价格上也存在一定的差异。当然&#xff0c;因在网上打印平台打印资料&#xff0c;能够降低一定的租金个人工成本。 因此&#xff0c;在网上打印…

Swift 中的Getter 和 Setter

目录 前言 1. 什么是Getter和Setter 1.定义 2.作用 2.属性 1.存储属性 2.计算属性 3.属性观察者 3. 使用 Getter 和 Setter 的场景 1.数据转换 2.懒加载 3.数据验证和限制 4.触发相关操作 4.自定义Getter 和 Setter 5. 参考资料 前言 属性是 Swift 编程中的基本…

关于 Spring 是什么

Spring 是什么 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;有着活跃⽽庞⼤的社区&#xff0c;这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景&#xff0c;它可以让 Java 企业级的…

九章云极DataCanvas公司DingoDB完成中国信通院权威多模数据库测试

2024年5月16日&#xff0c;九章云极DataCanvas公司自主研发和设计的开源多模向量数据库DingoDB顺利完成中国信息通信研究院&#xff08;以下简称中国信通院&#xff09;多模数据库产品测试。本次测试的成功标志着DingoDB在技术能力、性能表现和产品稳定性方面得到了权威机构的高…