时间:2024-05-19
王芬,罗春凤
(广州华南商贸职业学院,广东广州 510000)
伴随着信息化的发展,软件已经融入人们的工作和生活,人们对软件质量的要求日益提高。为了满足用户对软件质量的要求,软件研发人员需不断对软件进行测试,不断优化软件的功能和性能,确保软件有效且安全地运行,软件测试技术也需要相应不断提高。本文介绍了如何对Web 系统进行自动化功能测试和性能测试。
Web Tours 是一款基于ASP.net 平台的网站,基于先进的.NET Framework,默认支持SQL Server、Access、MySQL 等多种数据库,基于IE、Opera、Chrome、Firefox等浏览器,主要提供网上订票、查看订票信息、预定机票等功能。
下载 strawberry-perl,下载地址为http://strawberryperl.com/,下载网站如图1 所示。
图1 下载网站
安装strawberry-perl,安装界面如图2 所示。
图2 安装界面
启动服务,解压Web Tours 文件包,双击StartServer文件启动服务,启动服务器界面如图3 所示。
图3 启动服务器界面
双击“运行”就会进入如图4 所示的服务器界面。
图4 服务器界面
打开谷歌浏览器,在地址栏输入http://127.0.0.1:1080/WebTours/,默认账户为jojo,密码为bean,也可注册自己的账号,登录界面如图5 所示。使用默认账号jojo,密码bean,登录后的界面如图6 所示。
图5 登录界面
图6 登录后的界面
网站的功能如下:①注册功能,点击sign up now跳转到注册用户页面,注册新用户名和密码;②登录功能,输入注册后的用户名、密码登录进入主页;③首页界面,包括功能导航、信息介绍2 部分;④搜索航班功能;⑤选择航班功能,可以选择合适的航班;⑥支付功能,根据表格填写相应的个人信息;⑦订票成功功能;⑧订票查询功能,可以取消航班(cancel flights);⑨退出系统功能(sign off)。
在一个大型软件项目开发中软件测试的工作量通常是很大的,甚至占据总工作量的40%。完全靠手工测试,例如静态测试要检查几百万行代码和动态测试要执行几万个测试用例,其中包含许多简单重复劳动,导致工作效率低、测试速度慢,因此早期的软件测试进度非常缓慢。为了解决这一问题,软件测试迫切需要一个标准、兼容、成熟的方案,而自动化软件测试能很好地解决这个问题。在测试需求的基础上进行自动化测试,编写测试脚本和执行测试用例得到测试结果,最后进行测试总结和分析。
常见的性能测试主要有以下几个方面:①测试网络连接速度。客户端连接到服务器可以通过多种网络连接方式,不同的连接方式产生不同的传输速度,例如有的网站系统不会自动保存数据,页面连接超时用户需重新刷新页面和保存数据。②负载测试。负载测试是测试Web 系统在某个时间段内满足性能指标的情况下所能容纳的最大在线人数,主要是寻找系统能保持正常运行的极限和测试同时在线人员对系统功能操作的响应时间。③压力测试。压力测试主要测试超出Web 系统的最大数据处理量或最大的容纳人数时导致系统资源接近饱和甚至崩溃的边缘后系统所能承受的最大极限。
早期软件测试是通过人工观测的方式观察软件界面变化来判断被测应用软件的界面显示和界面逻辑是否存在问题,这样做浪费了人力。断言(Assert)是在测试步骤中设置检查点对软件运行结果进行预期判断,如果实际测试结果符合预期则判断正确,否则判断错误,故而可以利用断言代替人工检查软件UI界面是否显示正确。利用断言对复杂逻辑的验证能力,本文将在Selenium 自动化测试代码中加入断言(Assertin)代码,在JMeter 性能测试脚本中添加Response Assertion 验证用户是否登录成功,丰富断言的功能。
3.2.1 数据驱动[3]
常见的自动化测试模式分别是数据驱动测试、关键字驱动测试和行为驱动测试。其中数据驱动测试实现输入、输出数据与测试代码分离,有利于测试代码维护和测试数据管理。测试数据和开发脚本可以同步进行,减少编写测试脚本的工作量,测试人员可以将时间放在正在开发的功能上从而提高工作效率。数据驱动的优点是将测试数据与测试脚本区分开使其独立存在,降低依赖关系。不需要重新编写测试脚本,测试数据可以根据测试需求的改变而变化,减少测试人员的工作量。通过数据使数据驱动与脚本、应用程序同步运行方便验证测试结果。
3.2.2 Selenium 框架[4]
Selenium 是一套基于Web 应用软件开发的测试框架,它支持Firefox、Chrome、IE、Edge 等多种浏览器。Selenium 框架使得自动化测试浏览器的兼容性成为可能。Selenium 框架底层能够模拟用户对浏览器进行点击、输入、打开、验证等操作,Selenium 框架是从终端用户的角度测试应用程序。执行测试脚本时,浏览器自动按照脚本代码进行各种操作,可以使用Python、Java、Perl 和Ruby 等不同语言编写自动化测试脚本[5]。
3.2.3 WebDriver 原理
WebDriver 是一种用于Web 应用程序的自动化测试工具,具有Selenium2.0 的新特点。相比Selenium1.0,WebDriver 的API(Application Program Interface)能更好地支持Web 动态页面测试开发脚本。WebDriver 有一套完整的类库,它不依赖其他测试框架,能直接支持浏览器的内核测试。由于不同浏览器对于页面元素的使用不同导致所使用的WebDriver 不同,例如Chrome 浏览器支持的驱动是Chrome driver,Firefox浏览器支持的驱动是Gecko Driver,IE 浏览器支持的驱动是Internet Explorer Driver。
3.2.4 将数据驱动测试应用于Web Tours 机票预订系统[6]
测试用户账号如图7 所示,自动化测试代码如图8所示。
图7 测试用户账号
图8 自动化测试代码
3.2.5 测试结果分析
模拟正确的用户名和密码,用户可以登录成功;模拟错误的账号或密码,用户登录提示用户名或者密码错误,登录不成功。登录模块功能逻辑正确,符合用户对系统的应用需求。代码模拟浏览器操作如图9所示,多用户登录Web Tours 代码运行结果如图10 所示,Selenium 自动化功能测试断言实现如图11 所示。
图9 代码模拟浏览器操作
图10 多用户登录Web Tours 代码运行结果
图11 Selenium 自动化功能测试断言实现
3.3.1 测试实施
运用测试工具JMeter+BadBoy 工具测试脚本设计,先由BadBoy 工具录制用户登录Web Tours 系统脚本再导出jmx 文件,再导入到Jmeter 工具进行调试测试脚本[7]。Badboy 录制登录脚本如图12 所示。
图12 Badboy 录制登录脚本
3.3.2 导入并修改脚本
在测试计划中先添加2 个Listener,如View Results Tree 和Aggregate Report 查看运行结果数据,再添加post processors 中的Regular Expression Extractor 处理登录usersessions 并关联数据,最后添加CSV Data Set Config 元件参数化处理多用户登录账号、密码,断言验证实例结果,脚本处理过程如图13—图16 所示。
图13 关联处理usersessions
图14 参数化登录数据
图15 读取CSV 文件数据
图16 Jmeter 性能测试断言实现
3.3.3 测试结果
测试结果如图17 所示。
图17 用户登录成功
本文主要研究发现以下内容:①选择适合的自动化测试方法和性能测试方法,在登录模块系统测试和性能测试过程中运用;②使用数据驱动,从外部文件读取输入数据,通过使变量参数化处理将测试数据传入测试脚本,不同的测试数据对应不同的测试用例,实现数据和脚本分离;③通过响应断言判断响应文本是否包含期望字符串以验证用户登录是否成功。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!