9、根据图书馆应用程序的功能和目标KPI,定义适当的性能测试用例,包括对所有四个端点的响应时间进行基准测试、对面向客户的端点进行容量测试、对面向客户的端点进行压力测试、验证每小时5000个请求的吞吐量、进行12小时的浸泡测试。
以下是针对图书馆应用程序的性能测试用例定义:
端点响应时间基准测试
对所有四个端点发起请求,记录每个端点的响应时间,多次重复测试,计算平均响应时间作为基准。
面向客户端点容量测试
模拟一定数量的用户同时访问面向客户的端点,验证在目标用户数量下,应用程序是否能正常响应,记录响应时间和成功率。
面向客户端点压力测试
逐步增加面向客户端点的负载,超出容量测试的限制,观察应用程序性能开始下降和出现错误的点,确定系统的最大承载能力。
吞吐量验证测试
在一小时内模拟5000个请求发送到应用程序,统计成功处理的请求数量,验证是否达到每小时5000个请求的吞吐量目标。
12小时浸泡测试
让应用程序在预期的用户负载下持续运行12小时,期间监控响应时间、资源利用率等指标,观察是否出现性能下降、内存泄漏等问题。
10、为完成练习,在本地机器上为/books端点创建一个存根,并配置它返回50本书,然后进行测试。
在本地机器上为
端点创建存根,配置其返回50本书,设置完成后进行一次测试。另外,进行高容量负载测试时,对公共API进行此类测试可能被视为DDoS攻击,所以需要创建存根进行练习;也可使用性能测试工具(如 JMeter 和 Gatling )提供的测试站点进行练习,获取测试站点URL,并以规定的最小负载进行测试。
/books
11、使用JMeter设计其他性能测试用例,如压力测试、浸泡测试、吞吐量验证等,并利用JMeter的各种组件和插件来模拟不同的负载模式和场景。
测试方法与操作步骤
1. 压力测试
使用Concurrency Thread Group以x个用户为步长引入负载,直至达到最大限制,并为每个步骤运行给定时间,目标是找出响应时间变慢并最终导致错误的负载。
操作步骤:
选择 Options → Plugins Manager 在 Available Plugins 标签中搜索“Custom Thread Groups”并安装 重启 JMeter 右键单击 Test Plan ,选择 Add → Threads (Users) → bzm → Concurrency Thread Group 配置负载参数(如 Target Concurrency = 166 , Ramp Up Time = 0.5 , Hold Target Rate Time = 2 ) 添加 HTTP Request sampler 并运行测试 在监听器中查看结果
2. 浸泡测试
使用 Ultimate Thread Group 模拟长时间的恒定负载。
3. 吞吐量验证
使用 Parallel Controller 插件并行运行多个 HTTP 请求,同时使用 Timer 组件在请求之间暂停,如设置思考时间。
也可使用 Constant Throughput Timer 将吞吐量固定为恒定值,验证应用程序是否按预期执行。若超过设定的吞吐量值,它会自动减慢 JMeter 向服务器发出请求的数量。
4. 其他组件应用
If、Loop 和 Random 控制器 可在测试中包含条件 若应用程序需要登录,可从 CSV 文件 等外部源提供用户凭据进行数据驱动的性能测试 也可在测试开始时使用此功能设置测试数据
12、进行数据驱动的性能测试,为图书馆应用程序的/addBook端点创建负载,包括创建CSV文件、在JMeter中添加线程组和HTTP请求采样器、将CSV文件连接到HTTP请求采样器、在请求体中使用变量,并运行测试以创建测试数据。
为
端点创建负载并进行数据驱动性能测试的步骤如下:
/addBook
创建一个以
、
name
、
author
和
language
为键的 CSV 文件,添加 50 本书的行数据(可在 Google 表格中操作并下载为 CSV 文件)。 在 JMeter 中,添加一个线程组,为
isbn
端点添加 HTTP 请求采样器,并将循环次数设置为 50。 为了将 CSV 文件连接到 HTTP 请求采样器,右键单击线程组,选择 添加 → 配置元素 → CSV 数据集配置 。在 CSV 数据集配置 窗口中,指定 CSV 文件路径和要从文件中读取的变量。 在
/addBook
端点的 HTTP 请求体中,使用变量,格式为
/addBook
。这些变量在 JMeter 测试中需要的地方都可以用相同的
${variable_name}
表示法引用。
${variable_name}
此测试可在性能测试开始前运行以创建测试数据。
13、将JMeter测试集成到CI管道中,包括保存测试、定位保存的.jmx文件并运行命令,同时可配置JMeter提供详尽的仪表板报告,请问具体步骤是什么?
将JMeter测试集成到CI管道的步骤
将JMeter测试集成到CI管道的步骤为:
将测试保存。 定位保存的
文件。 运行以下命令:
.jmx
bash $ jmeter -n -t <library.jmx> -l <log file> -e -o <Path to output folder>
此外,还可以根据需要通过进一步扩展配置 JMeter 以提供详尽的仪表板报告。
14、请简述使用Lighthouse工具探索前端性能的工作流程。
打开Chrome浏览器,访问需要测试的网站; 使用快捷键(macOS:Cmd – Option – J,Windows/Linux:Shift – Ctrl – J)或右键选择“Inspect”打开Chrome DevTools; 在“Network”选项卡选择网络节流偏好,例如可选择“Slow 3G”; 在“Performance”选项卡选择CPU节流偏好,例如可选择4x slowdown; 从响应式下拉菜单中选择窗口大小,例如可选Galaxy S5; 在“Lighthouse”选项卡选择“Performance”类别,点击“Generate report”生成报告。
15、如何使用Lighthouse与CI集成?请列举至少两种方法。
Lighthouse 与 CI 集成的两种方法
有两种方法可使用 Lighthouse 与 CI 集成:
方法 1:使用 Lighthouse Node.js 模块
安装 Lighthouse:
bash $ npm install -g lighthouse
运行性能审计:
bash $ lighthouse https://www.example.com/ --only-categories=performance
可选功能:
– 设置网络和 CPU 节流值
– 选择设备屏幕尺寸
– 编写包装器,在性能得分低于阈值时使管道失败
– 使用 LightWallet 功能定义每个网络关键指标的性能预算
方法 2:通过 cypress-audit 工具
将 Lighthouse 与 Cypress 集成 可在 CI 的功能测试中运行性能审计
16、请列举一些可以尝试的自动化无障碍审核工具
可以尝试的自动化无障碍审核工具包括:
WAVE (在线无障碍评估工具) eslint-plugin-jsx-a11y (用于 React 的 linting 工具) Codelyzer (对 TypeScript、HTML、CSS 和 Angular 源代码的无障碍标准有 linting 规则) axe-core Pa11y CI Lighthouse CI
17、请描述使用WAVE工具进行审计的步骤。
按照以下步骤操作,即可使用 WAVE 工具运行审计:
首先打开 WAVE 网站。 接着在“网页地址”框输入应用程序 URL 或使用 WAI 的不可访问演示网站。 最后点击箭头运行审计。
18、请简述在 Chrome 浏览器中使用灯塔(Lighthouse)工具对 WAI 的不可访问演示网站进行可访问性评估并生成报告的步骤。
步骤如下:
在 Chrome 浏览器中打开 WAI 的不可访问演示网站。 使用 macOS 系统的快捷键
或 Windows/Linux 系统的快捷键
Cmd - Option - I
打开 Chrome 开发者工具。 在灯塔(Lighthouse)选项卡上,选择“可访问性”类别,然后点击“生成报告”。
Shift - Ctrl - J
19、从命令行运行 Lighthouse 的可访问性审计,请写出具体步骤。
从命令行运行 Lighthouse 的可访问性审计,步骤如下:
假设你已安装 Node.js,使用命令
安装 Lighthouse。 使用命令
$ npm i -g lighthouse
运行审计。
$ lighthouse --chrome-flags="--headless" URL
20、请描述Appium 2.0的设置步骤。
打开终端,运行命令
安装 Appium v2.0; 若使用安卓系统,在终端运行命令
npm install -g appium@next
设置 UiAutomator2 驱动;若使用 iOS 系统,运行
appium driver install uiautomator2
安装 XCUITest 驱动; 在终端运行命令
appium driver install xcuitest
启动 Appium 服务器; 前往 Appium 官方渠道下载 Appium Inspector。
appium server -ka 800 -pa /wd/hub
21、请详细描述创建Android模拟器以运行Appium测试的步骤。
下载并安装Android Studio,安装过程中按提示完成设置,安装完成后即可获得所需的Android SDK和工具。 打开Android Studio,在界面中选择More Actions → AVD Manager。 在AVD Manager界面中,点击Create Virtual Device,在弹出的现有硬件配置文件列表中,选择Phone类别,比如选择Pixel 2(5.0英寸),然后点击Next。 在后续界面选择一个Android OS版本,例如Android 8.0,若本地没有该版本,可按提示选择下载。 在接下来的屏幕中为模拟器输入一个名称,如“Oreo”,然后点击Finish,此时Android 8.0 Pixel 2模拟器会出现在可用虚拟设备列表中。 在可用虚拟设备列表中,点击模拟器对应的播放/运行按钮,启动模拟器。
22、请完成Appium 2.0视觉测试插件的设置,设置步骤如下:1. 运行命令 $ npm install -g opencv4nodejs 安装OpenCV;2. 运行命令 $ appium plugin install images 安装Appium视觉测试插件;3. 运行命令 $ appium server -ka 800 –use – plugins=images – pa /wd/hub 启动Appium服务器。
打开终端,运行命令
安装 OpenCV; 安装完成后,在终端运行命令
npm install -g opencv4nodejs
安装 Appium visual testing 插件; 插件安装完毕,运行命令
appium plugin install images
启动 Appium 服务器。
appium server -ka 800 --use-plugins=images -pa /wd/hub
23、使用JMeter对/books端点进行负载测试,包括使用简单线程组、并发线程组和终极线程组配置不同的负载模式,并查看测试结果。
简单线程组配置负载测试
创建线程组 :从JMeter GUI中,右键点击左侧面板的Test Plan,选择
,命名为
Add → Threads (Users) → Thread Group
。配置参数为
ViewBooks
,
Number of Threads = 1
,
Ramp-up period = 0
,以记录端点10次不同的响应时间并求平均值。
Loop Count = 10
添加HTTP请求采样器 :右键点击刚添加的线程组,选择
,输入Web服务器名称、HTTP请求类型和路径,命名为
Add → Sampler → HTTP Request
。
viewBooksRequest
进行负载测试 :若要进行体积测试,可将参数更改为
,
Number of Threads = 166
,
Ramp-up period = 0
,JMeter将启动166个并发线程,无加速时间,循环5次以获取平均响应时间。
Loop Count = 5
查看结果 :可查看Aggregate Report视图获取响应时间结果,如166个并发用户在0加速时间、5次循环计数下,平均响应时间为801 ms,90%的用户在约1.5 s内得到响应。
并发线程组配置负载测试
安装插件 :选择
,在Available Plugins标签中搜索“Custom Thread Groups”并安装。
Options → Plugins Manager
重启JMeter :使新的线程组类型可用。
添加并发线程组 :右键点击左侧面板的Test Plan,选择
。
Add → Threads (Users) → bzm → Concurrency Thread Group
配置负载参数 :
,
Target Concurrency = 166
,
Ramp Up Time = 0.5
,即JMeter在0.5秒内增加到166个用户,并让每个用户在系统中保持2秒。
Hold Target Rate Time = 2
添加HTTP请求采样器 :在该线程组下添加HTTP Request采样器,运行测试并在监听器中查看结果。
终极线程组
可用于进行浸泡测试,模拟长时间的恒定负载。
24、为测量应用程序的前端性能指标,需要考虑哪些方面来定义测试用例?请详细说明。
测试用例定义可考虑以下方面:
页面加载性能 :包括首屏加载时间、完整页面加载时间、资源加载时间等。 响应时间 :用户操作(如点击、滚动等)后的响应时长。 内存使用 :监测页面运行时的内存占用情况。 CPU 使用率 :了解前端程序对 CPU 资源的消耗程度。 渲染性能 :如帧率、重排重绘次数等。 兼容性 :不同浏览器、设备、操作系统下的性能表现。 并发性能 :多个用户同时访问时的性能。 动画流畅度 :动画效果的帧率和连贯性。
25、使用WAVE工具测试WAI的无障碍演示网站并查看页面结构分析。
要使用 WAVE 工具进行审计,可按以下步骤操作:
打开 WAVE 网站; 在“网页地址”框中输入 WAI 的无障碍演示网站的 URL; 点击箭头运行审计。
之后,可通过摘要部分上方的控件关闭 CSS 样式,点击“结构”选项卡查看页面结构分析。
26、使用Appium插件的视觉测试API进行视觉测试,创建一组应用屏幕的基准截图,将它们与应用屏幕的当前版本进行比较,如果分数低于阈值则使测试失败。请完成上述视觉测试的步骤。
一般来说,完成该视觉测试可能的步骤如下:
安装支持视觉测试的Appium插件。 编写代码使用插件的API对应用屏幕进行截图,创建基准截图集并保存。 在测试时,再次使用API获取应用屏幕的当前截图。 利用插件API将当前截图与基准截图进行比较,得出比较分数。 设置一个分数阈值,若比较分数低于该阈值,通过测试框架的断言机制使测试失败。
27、安装JMeter并为图书馆应用程序编写测试脚本,包括设置JMeter、创建线程组、添加HTTP请求采样器、添加监听器、保存基本测试骨架并运行测试以测量/books端点的响应时间。
安装与设置 JMeter
从官方网站下载 ZIP 文件并安装,确保本地 Java 版本兼容,且环境的
中设置了
bash_profile
变量。 在终端中运行
JAVA_HOME
文件夹内的 shell 脚本
/apache - JMeter - version/bin
以打开 JMeter GUI。 从官方网站下载 Plugins Manager,将 JAR 文件放置在
jmeter.sh
目录下。 重启 JMeter,应能在 Options 菜单中看到 Plugins Manager。
/apache - JMeter - version/lib/ext
创建线程组
在 JMeter GUI 中,右键点击左侧面板的 Test Plan,选择 Add → Threads (Users) → Thread Group ,将线程组命名为
,配置参数(线程数 = 1,加速期 = 0,循环次数 = 10),以记录端点的响应时间 10 次并求平均值。
ViewBooks
添加 HTTP 请求采样器
右键点击左侧面板刚添加的线程组,选择 Add → Sampler → HTTP Request ,输入 Web 服务器名称、HTTP 请求类型和路径,将采样器命名为
。
viewBooksRequest
添加监听器
在 JMeter 中,右键点击线程组,选择 Add → Listener ,选择
等监听器来查看响应时间等结果。
Aggregate Report
保存基本测试骨架
点击 JMeter 界面的保存按钮,将测试计划保存。
运行测试
点击运行按钮,运行测试以测量
端点的响应时间,结果可在添加的监听器中查看。
/books