这套逻辑帮你理清性能测试策略!

本文详细介绍性能测试的五大阶段:需求分析、设计、执行、分析与调优,涵盖启动、暂停/再启动及完成标准,旨在确保系统在高压下稳定运行,满足用户需求。

性能测试流程图

01

测试阶段

1.  性能测试需求分析阶段

·根据用户使用习惯和实际业务的性能需求,生成性能测试需求调查表

·根据性能测试需求及系统重要业务调研,选取典型业务

·了解业务模型及业务架构

2.  性能测试设计阶段

·编写性能测试用例

·结合性能测试用例录制/修改/完善测试执行脚本

·结合用户应用场景设计性能测试执行场景

3.  性能测试执行阶段

·利用LoadRunner性能测试工具中的Controller应用,按照并发用户数执行场景,并保存测试结果(Jmeter同理)

·利用LoadRunner性能测试工具监控被测试环境下的服务器CPU,内存,磁盘等系统资源的使用情况

·在需要的情况下利用第三方监控工具监控被测试系统的资源使用情况

·在对于可靠性测试,长时间执行测试,查看系统是否会出现内存泄漏,宕机等情况

4.  性能测试分析阶段

·利用LoadRunner性能测试工具中的Analysis应用,分析场景执行后的结果

·在需要的情况下借助其他辅助工具对系统进行监控,如Linux系统top等命令或其他辅助工具,进一步分析系统资源使用情况

5.  性能测试调优阶段

通过与以前的测试结果进行对比分析,从而确定经过调整以后系统的性能是否有提升。

在进行性能调整的时候,最好一次只调整一项内容或者一类内容,避免一次调整多项而引起性能提高,却不知道是由于调整哪项关键指标而改善性能的。通常,我们是按照由易到难的顺序对系统性能进行调优。

系统调优有易到难的先后顺序如下:

(1)硬件问题

(2)网络问题

(3)应用服务器,数据库等配置信息

(4)源代码,数据库脚本问题

(5)系统架构问题根据性能测试执行结果,分析结果是否满足用户需求并生成性能测试报告。

02

测试启动标准

1.  系统待测版本定版

2.  测试环境部署完毕,包括:

·系统安装并调试成功,并经过相应优化,初始数据量满足测试要求

·应用软件安装成功,待测试版本已正确部署

·测试客户端机器到位,系统软件安装完毕

·网络配置正确,连接通畅,可以满足压力测试需求

3.  测试方案审核,批准完毕,项目组签字确认

03

测试暂停/再启动标准

1.  暂停准则

·测试中发现问题,需求对系统进行代码修改,调优或需要更换,调整硬件资源(CPU,内存等)

·测试环境受到干扰,比如服务器被临时征用,或服务器的其他使用会对测试结果造成干扰

2.  再启动准则

·测试中发现的软,硬件问题得以解决

·测试环境恢复正常

04

测试完成标准

1. 完成测试计划中规定的测试内容和轮次。

2. 已达到性能测试计划完成时间,但因非测试方原因未完成测试场景的执行,客户方决定不再顺延该阶段的测试。

05

性能测试的测试目的、准备和方法

1.  测试目的

·主要目的是检查系统处于压力情况下时应用系统的表现,重点在于系统有无出错信息产生,考察系统应用的响应时间,TPS,资源状况等

·针对系统可靠性进行测试,主要检查系统在高负荷压力的情况下是否会出现如宕机,应用异常终止,资源竞争异常,资源死锁等问题

·通过压力测试,获得系统可能存在的性能瓶颈,发现,定位系统中可能存在的性能缺陷。

2.  测试准备

·功能测试已经结束

·性能测试环境已经准备完毕

·已将模拟数据提前准备完毕(被测试系统需要的测试数据) 

·相关技术支持人员的支持

3.  测试方法

·利用LoadRunner性能测试工具中的Virtual User Generator应用,录制性能测试执行脚本

·对性能测试脚本进行修改,调试,完善并保存测试脚本

·利用LoadRunner性能测试工具中的Controller应用,按性能测试用例执行设计的场景并保存场景

·利用被测服务器自带监控工具和LoadRunner监控被测环境下服务器的CPU,网络流量等系统资源的使用情况

·利用LoadRunner性能测试工具中的Analysis应用,分析场景执行后的结果

4.  测试分析范围

针对“测试业务及性能需求”的内容,对系统响应时间,系统业务处理容量(TPS),被测试环境下服务器资源使用情况(如CPU,内存,磁盘等)进行监控。

链接:https://www.jianshu.com/p/ac980b4b4dc5转载文章所包含的文字来源于作者。

### 代码功能概述 这段C语言代码的主要功能是读取一行以 `.` 结束、以空格分隔单词的文本,并输出每个单词的长度。 ### 代码逻辑详细解释 #### 1. 变量定义 ```c char input; int num_letter = 0; int flag = 0; ``` - `input`:用于存储每次从标准输入读取的单个字符。 - `num_letter`:用于记录当前正在统计的单词的字母数量,初始化为 0。 - `flag`:作为一个标记,用于判断是否已经输出过单词的长度,初始化为 0 表示还未输出过。 #### 2. 无限循环读取字符 ```c while (1) { scanf("%c", &input); ``` 使用 `while (1)` 创建一个无限循环,在循环内部使用 `scanf("%c", &input)` 从标准输入读取一个字符,并将其存储到 `input` 变量中。 #### 3. 处理不同字符情况 ##### 遇到结束符 `.` ```c if (input == '.') { if (num_letter != 0) { if (flag != 0) { putchar(' '); } printf("%d", num_letter); } break; } ``` 当读取到的字符是 `.` 时,表示输入结束。此时,如果 `num_letter` 不为 0,说明有最后一个单词需要处理。若 `flag` 不为 0,意味着之前已经输出过单词的长度,需要先输出一个空格,然后输出当前单词的长度。最后使用 `break` 语句跳出循环。 ##### 遇到空格 ```c else if (input == ' ') { if (num_letter != 0) { if (flag != 0) { putchar(' '); } printf("%d", num_letter); num_letter = 0; flag = 1; } } ``` 当读取到的字符是空格时,如果 `num_letter` 不为 0,说明一个单词结束。同样,若 `flag` 不为 0,先输出一个空格,然后输出当前单词的长度。接着将 `num_letter` 重置为 0,准备统计下一个单词的长度,并将 `flag` 置为 1,表示已经输出过单词的长度。 ##### 遇到其他字符 ```c else { num_letter++; } ``` 当读取到的字符既不是 `.` 也不是空格时,说明该字符是当前单词的一部分,将 `num_letter` 加 1,继续统计当前单词的长度。 #### 4. 程序结束 ```c return 0; ``` 最后,`main` 函数返回 0,表示程序正常结束。 ### 完整代码示例 ```c #include <stdio.h> int main() { char input; int num_letter = 0; int flag = 0; while (1) { scanf("%c", &input); if (input == '.') { if (num_letter != 0) { if (flag != 0) { putchar(' '); } printf("%d", num_letter); } break; } else if (input == ' ') { if (num_letter != 0) { if (flag != 0) { putchar(' '); } printf("%d", num_letter); num_letter = 0; flag = 1; } } else { num_letter++; } } return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值