1、web端项目性能测试
从事web端项目性能测试需要借助于LoadRunner 11.0.
全栈软件测试要求测试人员掌握多种技术,包括前后端,利用多种工具完成产品的独立测试和验收。
2、前端与后端的区别
前端注重用户界面设计、交互效果、页面加载速度等与用户直接接触的方面。
后端则更注重业务逻辑、数据库设计、服务器配置、负载均衡、API设计等与用户不直接接触,但对系统运行十分重要的方面。
前后端协同工作,共同保证Web应用的性能、安全和稳定性。
3、性能测试的概念:
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。
4、性能测试的目的:
性能测试重点不是去找bug,而是找出系统的性能瓶颈,把风险减轻到最低的程度。
负载测试:不断的加压,找出性能瓶颈的过程。
压力测试:在系统达到性能瓶颈时一直运行看能否坚持住。
5、并发数:LoadRunner中的虚拟用户数指的就是并发数。
系统用户数:系统注册用户数。
在线用户数:系统登录用户数。
并发用户数: 对服务器产生压力的用户数。
7、题目:现有两组对象1和对象2.两者的关系为选课:
对象1:学生(姓名、学号、系别)
对象2:课程(课程名、课程编号、学分)
请画出表示以上关系的E-R图
ER图核心三要素:实体、属性、关系。实体就是一个个对象,比如猫;属性就是实体所有的某个属性。比如猫的性别;关系就是实体和实体之间或者实体内部之间的关系。
开发人员能够根据ER图快速的建模。
负载发生器:用来产生压力的真实机器,受Controller控制。可以使用户脚本在不同主机上执行。在性能测试工作中通常由一个Controller控制多个load generator以对被测试系统进行加压。
8、针对web端项目系统进行性能调优的解决方案有大致五种:
a、控制在线的并发用户数。
b、升级服务器,提升其性能。
c、更换较优质的CPU中央处理器。
d、增加一块内存条,使其运行内存充足,达到性能提升效果。
e、关闭占用cpu资源较大的进程,达到性能提升的效果。
f、提升带宽速率
集合点:对应于真实用户中的并发点。它可以让所有的虚拟用户集合在某一点,然后一起对事件进行触发,从而实现真正意义上的并发。
场景:在LR中主要表现为Controller中设计与执行测试用例中的用户场景。主要工作有,在Controller中选择虚拟用户脚本,设置虚拟用户数量、配置虚拟用户运行时的行为、选择负载发生器设置执行时间等等。
思考时间:为了在模拟时更加接近用户的真实行为而引进的概念。在实际中,用户进行一系列操作后往往会进行等待处理,例如浏览网页内容时,用户往往会等待几秒思考要浏览什么样的内容,因此在虚拟用户脚本中使用函数lr_think_time()来模拟用户等待时间的过程,那么执行该函数时,用户线程会按照相应的time值进行等待。
6、事务:LoadRunner通过事务来衡量服务器的性能。在业务上事务代表用户的一个或一系列操作,而在程序上则表现为一段代码区块。测试人员可以将一个或多个操作步骤定义为一个事务,以便衡量这部分用户并发的响应时间。
事务的特点:
1、事务是成对出现的。
2、事务中不能夹杂跟业务无关的操作(比如检查点、思考时间、if判断)保持事务的纯净。
3、事务里面不能放事务,也就是说事务不能嵌套。
4、事务中只能放跟业务相关的操作。
虚拟用户脚本:通过Vuser Generator录制或开发的脚本。这些脚本用来模拟用户的行为。
虚拟用户:对应于现实中的真实用户,使用LR模拟的用户称为虚拟用户。
9、评判系统软件性能的几项重要指标有哪些呢?
1、事务响应时间(RT)
事务响应时间是一个统计量,是评价系统软件性能的重要参数。定义好事务后,在场景执行过程和测试结果分析中即可看到对应事务的响应时间。通过对关键或核心事务的执行情况进行分析,可以快速定位出性能问题。RT=网络响应时间+应用程序响应时间。
2、点击率(Hit per Second)
每秒钟用户向服务器提交的http请求数量。注意:点击一次并不代表客户端只向服务端发送一个http请求,而是发出多个http请求。点击率越大对server造成的压力就越大。
3、TPS(Transaction Per Second)
每秒钟系统处理的事务数量。它是基于事务统计出来的,如果不添加事务,则根本无法看出它的TPS.
4、吞吐量(Throughput)
单位时间内系统处理客户的请求数量。
5、吞吐率
吞吐率=吞吐量/测试时间,反应单位时间内服务器处理客户提交的请求数,通常吞吐量越大,吞吐率也越大,说明被测系统的负载能力越强。
6、资源利用率
CPU利用率、内存、磁盘利用率(I/O)、网络资源等的实际使用情况。比如我们可以在分析整体系统的基础上,找出影响服务器整体性能的瓶颈,确定相应的升级需求:服务器硬盘负载较重,需增加硬盘、加或更新CPU、网卡性能偏低,需更换光纤网卡、内存资源短缺,需增大内存等等。
针对机票系统项目流程有:机票首页、登录、下单(购买机票)、查看订单、退出/注销。
10、项目性能测试一般流程:
1、熟悉项目性能需求。
2、制定性能测试计划。
3、创建性能测试环境。
4、开发性能测试脚本。
5、创建并运行场景。
6、执行测试
7、监控场景
8、分析测试结果。
11、LoadRunner重要的组件有:Virtual User Generator、Controller、Analysis.
Virtual User Generator(VUG):开发设计性能测试脚本。
Controller:是用来设计、管理和监控负载测试的中央控制台。
Analysis:分析测试报告,以确定系统性能瓶颈,最后进行性能调优。
12、LR脚本中用户名参数化有四种方式:
a、手写参数名,然后直接替换即可。
b、直接在"P"选项卡中先设置参数,然后回到脚本页面,进行使用替换即可。
c、预先准备文档,事先写入用户名及其对应的值,然后直接从"P"选项卡导入即可。
d、直接在"P"选项卡中编辑记事本内容,然后回到脚本页面进行替换即可。
保存函数:lr_save_string("www.taobao.com","ip");
思考时间函数:lr_think_time(3); 设置思考时间为3秒。
输出函数:lr_output_message("当前用户名为:%s",lr_eval_string("jojo"));
添加事务的函数:lr_start_transaction("事务的名称");lr_end_transaction("事务的名称",LR_AUTO);
添加集合点函数:lr_rendezvous("一起点击登录按钮");
文本检查点函数:web_reg_find("Text=文本名称","SaveCount=userCount",LAST);
如:web_reg_find("Text=jojo",LAST);
图片检查点函数:web_image_check("hp_logo","src=images/hp_logo.png",LAST);
统计找到文本检查点的次数的函数:if(atoi(lr_eval_string("{userCount}"))>0)
{
lr_output_message("海江,恭喜你,一会儿可以去厕所饱餐一顿。");
}else{
lr_error_message("诗琪,你的腰好些了吗?");
}
13、LR脚本中文本检查点添加有三种方式:
a、手写文本检查点函数。
b、在树视图对应的快照中进行捕捉。
c、借助于函数参考。
脚本回放时,回放界面为辅,主要还是看回放日志。
LR中C语言脚本都是放在Action里面。
15、LoadRunner做自动化测试的步骤:
1、确定测试需求
2、写测试计划
3、写测试用例
4、搭建测试环境
5、安装LR,并开发自动化脚本
6、分析脚本(去除掉不相干的脚本、杂质)
7、优化脚本(去除冗余脚本)
8、强化脚本(设置好相关的文本、图片检查点以及参数化)
9、测试脚本的导通性(编译脚本)
10、执行脚本
11、查看日志。
12、分析日志,收集测试数据。
一般来说,cpu使用率低于75%都算正常,若高于75%说明系统快遇到瓶颈。
在命令提示符中输入:perfmon可以查看系统性能监视状况。
设置迭代方法:vuser-run time setting-运行逻辑-迭代次数(3)
SessionID和Token都是为了保护网站数据安全而采用的技术。
SessionID是一个动态的值,用于验证用户身份,并防止恶意用户绕过验证码直接进入网站从事非法行为;
Token则是在数据传输前进行核对的暗号,不同的Token被授权不同的数据操作。例如,在USB3.0协议中,就定义了Token包来保护数据传输。
LR中有两种录制方式分别为:
1、web_submit_form(相当于get请求),依赖url地址。
2、web_submit_data(相当于post请求),不依赖于url地址。
如何知道有没有关联函数存在呢?我们可以从以下途径寻找突破点:
1、可以直接问开发,毕竟他才知晓哪里做了关联。
2、寻找hidden,就一定可以找到动态值。
3、若发现一串数字和字母的组合,那么很可能此处就是需要做关联。
4、使用post方式连续录制两遍脚本,两者相对比,如果发现有一处不同,则表明此处有关联函数。
如何在日志中打印每一次的动态值?
lr_output_message("%s", lr_eval_string("{userSession}"));
做负载测试时候,需要做好数据结果统计:
打开机票首页 登录 下单 查看订单 注销 TPS(AVG) CPU% memory(内存使用率) I/O(磁盘读写率) network(队列)
01vuser: 0.453s 0.440s 0.811s 0.205s 0.404s 0.6 16%
05vuser: 0.728s 0.646s 1.349s 0.503s 0.651s 1.1 53%
10vuser: 0.879s 0.776s 1.765s 0.957s 0.750s 1.7 90%
50vuser 0.272s 0.4 100%(直接卡住,动弹不了,那么肯定遇到瓶颈无疑。)
得出结论:该系统只能允许10个并发用户数进行业务操作,否则CPU将会卡主,动弹不了,导致系统遇到瓶颈。
使用LoadRunner针对机票系统的性能测试具体步骤:
1、确定机票系统项目测试需求
2、确定机票系统性能测试计划
3、确定性能测试用例
4、搭建性能测试环境(开启机票服务)
5、安装LR,并且开发业务性能测试脚本。
6、分析脚本、优化脚本、强化脚本。
7、测试脚本的导通性。
8、设置场景策略。
9、运行场景,添加监控。
10、分析测试结果,出具性能测试报告。
11、对软件系统进行性能调优。
设置场景策略
1、在VUG中打开脚本,点击Tools->Create Controller Scenario 进入到controller控制器组件
2、点击场景日程->添加计划名称->添加计划方式->添加运行模式
3、点击全局计划->确定启动并发数及测试时间并停止测试策略
4、观察全局计划每一步的设置是否与交互计划图的曲线图一一对应
5、点击run选项卡观察到对应的脚本准备完毕
针对“人力资源管理系统”,你(测试经理)是如何开展性能测试工作?
a、首先我会花时间与产品经理、开发经理一起探讨、研究性能需求分析说明书,确定是目标需求还是负载测试出性能瓶颈,如果是手动压测系统瓶颈,我就申请召开项目性能需求评审会议,会上提出此次是手动压测出软件系统瓶颈,最终确定需求点并且带领测试部门员工进一步熟悉项目业务流程。
b、接下来我就根据性能需求文档开始制定性能测试计划,最终确定性能测试计划,然后传达各个部门。
c、待测试计划确定后,我就开始和测试团队一起搭建性能测试环境,我们公司当时使用的工具是LoadRunner.
d、我们当时把人力资源项目所有业务流程都部署在LR工具中,然后开发并强化性能测试脚本。
e、接下来我们通过LR第二大组件Controller创建并运行场景,包括设置并发用户数、运行时间、运行策略等。
f、在运行选项卡点击“运行场景”,进行执行测试。
g、在执行期间,我便安排测试人员在监视图中添加各种事务对应的监控图,从而方便我们监视人力资源项目系统的各项性能指标。
h、根据性能指标的曲线图,分析测试结果。
i、最后我就搜集性能测试数据结果,记录系统瓶颈,并且提出对人力资源管理系统调优的解决方案。
H5就是一个现在比较流行的做网站或是手机app页面的一个技术。所谓H5测试,也就是测试网站页面或是手机app页面的功能是否正常及页面布局是否合理。
Fiddler工具的原理:
Fiddler是最强大最好用的web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据的抓包工具。
如何使用Fiddler抓取web端数据包?
1、下 载安装fiddlersetup. exe程序。
2、打开IE浏览器,设置代理网址(127.0.0.1) 和代理端口号: 8888。
3、打开fidgler.工具,设置好对应的代理地址和端口号。
4、在浏览器中可以进行一发系列的操作,比如搜索刘德华
5、返回到fiddler界面,可以看到相关抓取到的图片或者文本。
如何使用fiddler抓取手机app数据包?
1、开启fiddler, 设置好端口号: 8888
2、在本机上安装一个免 费WiFi,并且查找出无限WiFi的IP地址 (192.168.1.3)
3、准备一部手机,使其连接上电脑的WiFi,并且修改网络配置,输入对应的IP地址和端口号。
4、随意的在手机上进行一系列操作,则可以在fiddler.上查看数据。
如何通过fiddler做弱网测试?
1、开启fiddler,设置好端口号:8888
2、在本机上安装一个免费WiFi,并且查找出无限WiFi的IP地址
3、准备一部手机,使其连接上电脑的WiFi,并且修改网络配置,输入对应的IP地址和端口号。
4、随意的在手机上进行一系列操作,则可以在fiddler上查看数据。
5、点击Rules-Customis rules,弹出一个Customis rules脚本
6、向脚本中添加oSession[“request-trickle-delay”] = “3000”;让请求延迟3秒,达到弱网环境。(响应延迟亦是如此)
7、可以在手机上点击一列操作,就可以进行弱网测试。