当前课程知识点:软件工程与软件自动化 > 第五章 软件自动化技术 > 5.4 测试自动化 > 功能和性能自动化测试工具及简单应用演示
大家好
下面给大家演示一下一个功能测试工具
现在进入的是一个示例程序,就是机票预订系统
这是一个没有源代码的可执行文件
对它进行功能测试的时候,是不需要源代码的
然后我们用一个抓屏软件把整个录制过程抓下来
这里有三个文件,一个文件是WinRunner就是功能测试工具
一个是机票预订系统,这是被测软件
一个是录屏的工具
首先,新建一个脚本文件,然后点击record开始录
录的时候正常执行被测软件
在这个软件当中,输入预订机票的日期,从哪儿飞到哪儿
两个目的地,然后就可以查询航班,输入姓名
订一个经济舱还是头等舱,提交订单
还可以修改订单信息,改变日期或者是改变目的地
或者是可以删除订单,也就是说
这种操作是对系统的一个正常的演示、测试
刚才的操作都会被WinRunner以脚本的形式录下来
大家现在看到的这个脚本,这个语言
比较浅显易懂,我们能够看得出来
它是进行了动作的所有的一个捕获
下面点击执行,大家看,现在执行速度非常快
同时看后面的脚本就像程序一样,正在往下执行
这个脚本可以反复执行,甚至可以给它进行脚本的编辑
比如说,对它进行一个FOR循环,让它执行100次,等等
这是它的一个执行过程,执行完毕后
能得到它的执行结果的统计信息
比如开始时间、结束时间,还可以得到一个报告
显示出这次测试的一些摘要信息
这家公司的软件是成套的,它还可以有上下流的
软件共享它的测试数据
这个软件之所以能对界面进行一个自动化的测试
源于一项spy技术,这spy技术,大家看到这个spy的演示
当光标移在任何windows窗口中的时候
都会得到窗口元素的对象
下面继续给大家演示性能测试工具LoadRunner
首先打开LoadRunner工具,新建一个场景
在这个场景当中,要选择这个场景所使用的协议
比如开发的是一种B/S的软件或者是C/S的软件
我们需要选择对应的协议
这次测试的是一个B/S的留言本,所以选择web HTTP协议
在这个软件当中,它也是要录制我们的操作过程
把它保存为一个action
我们在URL当中输入本机需要测试的留言本的首地址
然后确定,打开IE,就相当于正常操作软件一样
对这个程序进行测试,大家注意这个录制过程正在进行
它像WinRunner一样,会把我们现在的操作以脚本的形式记录下来
这是我们的一次正常的操作
好,我们停止,刚才录的这些动作会存为一个脚本文件
做为一个Action,一个活动,保存的时候
可以保存成一个叫Vuser Script,就是Vuser虚拟用户
我们可以录制很多这种脚本,代表不同的用户的不同操作
保存之后,下一步要新建一个场景
在这个场景当中,可以安排虚拟用户对系统进行测试
在场景的第一步,可以先选择一些脚本
现在的脚本代表的就是一类动作
将来后面需要增加的时候,我们还可以增加
先选择一个动作,再加一个动作,确定之后
它会有一个Schedule调度,在这个调度当中大家可以看到
第一个动作,现在给它设了个100
第二个动作设了101,也就是相当于说,201人
Quantity表示分组,每组这么多人
还可以增加新的小组,新的小组可以采用不同的脚本
这是第三组,第三组是102人,总共是303人,三个小组
现在303人分成三组,303个人
对每个人都可以给他指定不同的动作
比如这里的ID,1到303,每个人的状态是Down
现在还没有进行测试,每个人所执行的脚本可以单独指定
确定之后,根据每个虚拟用户给它设置特定的动作
然后开始这次性能测试,模拟303人同时连接
一个网络记事本应用程序,我们来看一看
在整个场景运行过程当中,我们会看到很多面板
这是一个分组,每一组的执行情况
这边是整个状态的信息,有错误数量
中间这块是时间,随着时间的增加
虚拟用户的数量,就是说303不是一下子就全部进行测试的
它是按照某种模型来逐步地展示
到了30秒的时候,大约有50人
我们双击这个界面当中的任意一个面板都可以
对它进放大操作,这样便于对信息查看的更清晰
随着时间的推移,各个面板的数据都在发生变化
双击,查看各个数据
这个性能测试工具
它就是想模拟并发的操作人数来了解系统的应对能力
执行完毕之后,会对数据进行一个处理
处理之后得出非常详尽的测试报告
我们来看它的Summary Report
在这个报告当中,我们看到它的内容非常详细
对运行的Running Vuser的每一个曲线的每一个节点
每一个区域都可以放大,这样便于查看细节信息
对它的吞吐率进行一个放大显示
可以看到各个面板代表不同的含义
比如每秒钟的命中率、总共运行的虚拟用户数、吞吐率等等
这是可以设置查看数据的区间
下面我们看到的是LoadRunner的一个小工具
这个小工具叫IP Wizard,它的作用是什么?
就是模拟一种特殊的应用
比如说要求300个人进行一个测试
但要求这300个测试不能在同一台机器上运行
也就是说,要求这300个客户端都有自己的IP地址
这种情况下,我们刚才那种配置303人进行
同时测试的情况就会出现问题
我们可以采用这种方式
这个IP Wizard给我们提供一个工具
让我们生成一个IP地址列表
我们把这个IP列表保存为一个ips文件
随后在性能测试当中,我们可以加载这个ips文件
下面给大家演示的是白盒测试工具DevPartener的错误探测功能
这个白盒测试工具呢,它插桩于软件当中
当软件运行的时候,它能够获取插桩于软件内部的间谍程序
发出的数据信息,然后能够得到这些详细的错误
比如说,我们这里有Deadlock,就是死锁,还有一些内存溢出
或者是其他的这些错误
我们双击这条错误
我们可以看到这个错误发生的文件
是ClientView.cpp文件
它错误发生的位置是在第841行
下面是它的源代码,源代码的这一条语句
也就是我们在进行多线程编程的时候
我们没有处理好线程之间的临界区和信号量
就会出现这种死锁的情况
通过这种方式,我们很容易就能定位到
我们程序当中编码比较差的部分
指出错误,有助于快速进行错误定位,修改程序
这是我们对整个错误内容的详细了解
这是我们有一个内存泄露的问题
这是在整个线程当中出现的
在建立多线程的时候,出现的一些问题
内存泄露,其他方面的泄露
我们可以详细查看整个错误的信息
这是我们所涉及到的各个动态库文件
整个线程的运行情况
各个线程的开始时间、结束时间
下面给大家展示一下我们用WinRunner发现一个小Bug的情况
首先我们开始正常的录制
这个小Bug是客户无意当中在无聊地来回点击的时候发现的
但是点击次数不确定,我们不知道什么时候
这个Bug会重现,所以我们就做了一个小的实验
首先来模拟客户的无意操作,录完之后就是一个切换
然后对它的脚本进行编辑
让它切换的操作执行100次,自动测试100次
我们看在什么时候它会出现问题
没有问题,我们从头开始执行。执行的时候,它的动作非常快
这时候发现这个图标已经不见了
后来证明我们用的微软的imageList是有问题的
它的缓冲区的深度是有限制的
后来我们更换了控件,这个Bug得以解决
-1.1 软件工程的前生今世
--开篇阅读
--授课视频
-第一章 软件工程基础--1.1 软件工程的前生今世
-1.2 万变不离其宗
--授课视频1/3
--授课视频2/3
--授课视频3/3
-第一章 软件工程基础--1.2 万变不离其宗
-1.3 唯一不变的是变化
--授课视频1/3
--授课视频2/3
--授课视频3/3
--外部链接
-第一章 软件工程基础--1.3 唯一不变的是变化
-1.4 亡羊补牢为时不晚
--授课视频1/2
--授课视频2/2
-第一章 软件工程基础--1.4 亡羊补牢为时不晚
-扩展阅读与话题讨论
--扩展阅读
--话题讨论
-2.1 方法论来源于恐惧
--授课视频
-第二章 敏捷开发--2.1 方法论来源于恐惧
-2.2 敏捷是什么
--授课视频
-第二章 敏捷开发--2.2 敏捷是什么
-2.3 典型敏捷开发方法
--XP敏捷开发方法
-第二章 敏捷开发--2.3 典型敏捷开发方法
-2.4 敏捷不是万能药
--授课视频
-第二章 敏捷开发--2.4 敏捷不是万能药
-专家谈敏捷
-扩展阅读与话题讨论
--外部链接
--话题讨论
-3.1 面向对象核心概念和基本特性
-第三章 OO与UML--3.1 面向对象核心概念和基本特性
-3.2 面向对象设计基本原则
-第三章 OO与UML--3.2 面向对象设计基本原则
-3.3 通用职责分配模式(GRASP)
--通用职责分配模式
-3.3 通用职责分配模式(GRASP)--作业
-3.4 从重构到模式
--模式和设计模式
-第三章 OO与UML--3.4 从重构到模式
-3.5 使用UML设计面向对象系统
--UML综述
-第三章 OO与UML--3.5 使用UML设计面向对象系统
-3.6 主要UML模型图绘制技巧
--UML用例图
--UML类图
-第三章 OO与UML--3.6 主要UML模型图绘制技巧
-扩展阅读与话题讨论
--设计模式有毒么?
--话题讨论
-4.1 案例简介
--书籍参考
--案例说明
-4.2 对象模型之一
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.2 对象模型之一
-4.3 对象模型之二
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.3 对象模型之二
-4.4 对象模型之交互
--授课视频
-第四章 对象模型分析--4.4 对象模型之交互
-扩展阅读与话题讨论
--图书推荐
--话题讨论
-5.1 软件自动化概述
--软件自动化概述
-第五章 软件自动化技术--5.1 软件自动化概述
-5.2 典型自动化方法和工具
-第五章 软件自动化技术--5.2 典型自动化方法和工具
-5.3 文档自动化
--文档自动化视频
-第五章 软件自动化技术--5.3 文档自动化
-5.4 测试自动化
--测试自动化视频
-第五章 软件自动化技术--5.4 测试自动化
-专家访谈
-扩展阅读与话题讨论
--话题讨论
-6.1 持续集成
-第六章 CI/CD与DevOps--6.1 持续集成
-6.2 持续交付和部署
-第六章 CI/CD与DevOps--6.2 持续交付和部署
-6.3 DevOps
-第六章 CI/CD与DevOps--6.3 DevOps
-专家访谈
-扩展阅读与话题讨论
--DevOps专题
--话题讨论
-7.1 质量和质量保证
--授课视频
-第七章 软件质量保证--7.1 质量和质量保证
-7.2 软件质量模型
--授课视频
-第七章 软件质量保证--7.2 软件质量模型
-7.3 SQA组织与职责
--授课视频
-第七章 软件质量保证--7.3 SQA组织与职责
-7.4 全面软件质量管理
--授课视频
-第七章 软件质量保证--7.4 全面软件质量管理
-专家访谈
--专家访谈
-扩展阅读与话题讨论
--外部链接
--话题讨论
-8.1 软件过程综述
--授课视频
-第八章 软件过程改进--8.1 软件过程综述
-8.2 软件过程改进
--授课视频
-第八章 软件过程改进--8.2 软件过程改进
-8.3 能力成熟度模型
--授课视频
-第八章 软件过程改进--8.3 能力成熟度模型
-8.4 过程改进标准框架
--授课视频
-第八章 软件过程改进--8.4 过程改进标准框架
-扩展阅读与话题讨论
--话题讨论
-9.1软件复用综述
--授课视频
-第九章 软件复用--9.1软件复用综述
-9.2 软件构件技术
--授课视频
-第九章 软件复用--9.2 软件构件技术
-9.3 软件复用实施
--授课视频
-第九章 软件复用--9.3 软件复用实施
-9.4 微服务架构
--授课视频
-第九章 软件复用--9.4 微服务架构
-扩展阅读与话题讨论
--微服务扩展
--话题讨论
-文档提交处--文档提交