LoadRunner上传附件脚本

本文介绍了使用LoadRunner进行文件上传的步骤,通过web_submit_data或web_custom_request函数实现。重点在于从响应JSON中关联获取文件ID,并注意上传文件名应使用英文或数字。

这是上传产品图片的一个实例。参看了LoadRunner的Function Reference,这里记录一下上传脚本的实现方式(比较简单),给自己做一个笔记。

	int uploadImgStatus = 0;

	//获取上传产品图ID
	web_reg_save_param_ex("ParamName=imgRandName",
			      "LB=\"sourceImgPath\":\"upload\\/cropzoomimg\\/",
			      "RB=\"}",
			      LAST);

	uploadImgStatus = web_submit_data("CropZoomImgController.do", 
					  "Action=http://192.168.2.67:7001/CropZoomImgController.do?method=uploadSourceImg", 
					  "Method=POST", 
					  "EncType=multipart/form-data", 
					  "Referer=http://192.168.2.67:7001/GoodsController.do?method=toCreateGoods", 
					  "Snapshot=t377.inf", 
					  "Mode=HTTP", 
					  ITEMDATA, 
					  "Name=attachFile", "Value=E:\\1.jpg", "File=Yes", ENDITEM, 
					  LAST);
	
	if (uploadImgStatus == 1) {
		//如果上传失败则终止脚本
		lr_abort();
	} else {
		//输出上传图片ID(调试使用)
		lr_output_message("%s", lr_eval_string("{imgRandName}"));
	}

web_submit_data函数可以实现文件上传的脚本功能,也可以考虑使用web_custom_request的函数来完成。上面的关联函数主要是从返回的j

<think>我们正在寻找一个软件测试实战项目示例,该项目使用禅道进行项目管理,并结合LoadRunner实现性能测试。根据用户提供的引用内容,特别是引用[4]中提到了禅道用于功能测试(用例管理、缺陷跟踪)和LoadRunner用于性能测试,我们可以构建一个示例项目。项目背景:假设我们有一个简单的Web应用——在线书店,需要对其进行功能测试和性能测试。步骤规划:1.使用禅道管理测试需求、测试用例、缺陷跟踪。2.使用LoadRunner对该在线书店进行性能测试,模拟多用户并发操作。详细步骤:一、禅道项目管理(以在线书店项目为例)1.创建产品:在禅道中创建产品“在线书店”,并添加需求(例如:用户登录、图书搜索、下单购买)。2.创建项目:为当前测试任务创建项目,关联需求。3.设计测试用例:-在禅道的“测试”模块中创建测试用例,例如:用例1:用户登录功能(输入正确用户名密码,验证登录成功;输入错误密码,验证登录失败并提示)用例2:图书搜索功能(输入书名关键词,验证返回正确结果;输入不存在的书名,验证返回空结果)用例3:下单购买功能(选择图书,加入购物车,填写收货信息,支付,验证订单生成)-为每个用例编写步骤、预期结果。4.执行测试用例:在禅道中创建测试任务,关联用例,执行测试并记录结果(通过/失败)。5.缺陷管理:如果测试失败,在禅道中提交缺陷,指定给开发人员,并跟踪缺陷状态(激活->解决->关闭)。二、LoadRunner性能测试1.分析性能需求:例如,在线书店需要支持100用户并发登录,50用户并发搜索,30用户并发下单。2.录制脚本:-使用VuGen录制用户登录、图书搜索、下单购买等操作的脚本。-对脚本进行增强:参数化(例如用户名、密码、搜索关键词)、添加事务(标记每个操作开始和结束)、添加检查点(验证操作是否成功)。3.设计场景:-在Controller中创建场景,设置虚拟用户数(按需求设置)。-配置负载生成器(LoadGenerators)。-设置调度策略(例如:逐步增加用户数,持续运行一段时间,逐步减少用户数)。4.执行性能测试:运行场景,监控系统资源(服务器CPU、内存、网络等)。5.结果分析:使用Analysis生成报告,分析性能指标(如响应时间、吞吐量、错误率等),找出性能瓶颈。三、结合禅道和LoadRunner1.在禅道中,将性能测试作为测试任务的一部分,编写性能测试用例(例如:检查100用户并发登录的响应时间小于2秒)。2.执行性能测试后,如果发现性能问题(如响应时间过长),在禅道中提交缺陷,类型为“性能缺陷”,并附上LoadRunner测试报告截图。3.开发修复后,再次执行性能测试进行验证,并在禅道中关闭缺陷。示例代码(LoadRunner脚本示例,以用户登录为例):```cAction(){//开始事务lr_start_transaction("login");web_url("bookstore","URL=http://example.com/bookstore/","TargetFrame=",LAST);web_submit_data("login","Action=http://example.com/bookstore/login","Method=POST","TargetFrame=",ITEMDATA,"Name=username","Value={username}",ENDITEM,"Name=password","Value={password}",ENDITEM,LAST);//检查是否登录成功web_reg_find("Text=Welcome,{username}","SaveCount=login_count",LAST);//如果检查点失败,则记录错误if(atoi(lr_eval_string("{login_count}"))==0){lr_error_message("Loginfailedforuser:%s",lr_eval_string("{username}"));lr_end_transaction("login",LR_FAIL);}else{lr_end_transaction("login",LR_PASS);}return0;}```注意:以上脚本中,{username}和{password}是从参数文件中读取的。通过这个示例,我们可以将禅道用于整个测试流程的管理,而LoadRunner用于性能测试部分,两者结合完成一个完整的测试项目。相关问题:1.禅道中如何管理性能测试用例?2.LoadRunner测试脚本如何参数化?3.性能测试结果分析的关键指标有哪些?4.如何将性能测试结果与禅道缺陷管理结合?</think>### 软件测试实战项目指南:禅道 + LoadRunner 整合示例 #### 项目背景:在线医疗挂号系统性能测试 假设需对某三甲医院的在线挂号系统进行测试,该系统需支撑每日10万次挂号请求,需验证系统在高并发场景下的稳定性[^4]。 --- ### 一、禅道项目管理流程(测试管理) 1. **需求管理** - 创建需求条目:`挂号接口并发测试-500用户/秒` - 关联需求文档:上传性能指标要求文档 ```mermaid graph LR A[创建产品] --> B[添加需求] B --> C[分解测试任务] ``` 2. **测试用例设计** | 用例ID | 模块 | 测试步骤 | 预期结果 | |--------|------------|---------------------------|-----------------------| | TC001 | 用户登录 | 1. 脚本模拟50用户并发登录 | 响应时间≤1.5s | | TC002 | 号源查询 | 2. 100用户同时查询科室号源 | 错误率<0.1% | 3. **缺陷跟踪流程** ```mermaid graph TB 发现缺陷 --> 提交禅道 --> 开发修复 --> 回归测试 --> 关闭缺陷 ``` 缺陷字段示例: - 标题:`高并发下支付接口超时30%` - 等级:致命 - 复现步骤:LoadRunner模拟300用户支付 --- ### 二、LoadRunner性能测试实战 #### 场景设计(Controller) 1. **负载模型** ```python # 虚拟用户增长模型 for i in range(0, 300): # 每30秒增加50用户 lr.ramp_up(50, 30) steady_state(600) # 持续10分钟 ``` 2. **监控指标配置** - 服务器资源:CPU利用率 ≤85% - 业务指标:事务成功率 ≥99.9% - 网络延迟:≤100ms #### 脚本开发(VuGen) ```c // 挂号事务脚本示例 Action(){ // 1. 用户登录 web_submit_data("login", "Action=https://hospital.com/login", "Method=POST", ITEMDATA, "Name=username", "Value={user}", ENDITEM, "Name=password", "Value=test123", ENDITEM, LAST); // 2. 查询号源 web_custom_request("query_department", "URL=https://hospital.com/dept?date={date}", "Method=GET", LAST); // 3. 提交挂号 lr_start_transaction("register"); web_submit_data("submit_reg", "Action=https://hospital.com/register", "Method=POST", ITEMDATA, "Name=deptId", "Value={deptId}", ENDITEM, "Name=doctorId", "Value={doctorId}", ENDITEM, LAST); lr_end_transaction("register", LR_AUTO); } ``` #### 关键参数化: 1. `{user}`:从CSV读取用户名池 2. `{date}`:使用日期函数动态生成 3. `{deptId}`:关联科室ID响应 --- ### 三、禅道与LoadRunner整合实践 1. **结果关联** - 将LoadRunner测试报告(HTML格式)作为附件关联到禅道测试用例 - 在缺陷描述中插入性能截图: ``` [LoadRunner监控图] 响应时间曲线:https://i.imgur.com/loadrunner.png ``` 2. **持续集成** ```mermaid sequenceDiagram Jenkins->>LoadRunner: 触发性能测试 LoadRunner-->>禅道: 自动提交缺陷 禅道->>邮件系统: 通知开发团队 ``` --- ### 四、常见问题解决方案 1. **参数化冲突** - 问题:多用户共享参数导致数据竞争 - 解决:在VuGen中设置`Select next row: Unique` 2. **禅道缺陷自动创建** - 使用LoadRunner的`lr.message`函数发送API请求到禅道: ```c lr_message("禅道API:{" "\"title\":\"性能超时\"," "\"steps\":\"并发300用户时响应超时\"}" ); ``` 3. **环境不一致** - 在禅道"测试环境"字段明确标注: ``` 性能测试环境配置: CPU: 8核 Intel Xeon 内存: 32GB 网络: 千兆内网 ``` > **最佳实践**:在性能测试计划阶段,通过禅道的"测试版本"功能关联LoadRunner脚本版本,确保可追溯性[^5]。 --- ### 工具资源推荐 1. **禅道官方文档**:https://www.zentao.net/book/ 2. **LoadRunner学习路径**: - 基础录制 → 参数化 → 场景设计 → 结果分析 3. **性能测试数据集**: - 开源医疗测试数据:https://github.com/medical-test-data --- ### 相关问题 1. 如何设计有效的LoadRunner参数化策略避免测试数据冲突? 2. 禅道中如何配置自动化缺陷工作流对接性能测试结果? 3. 性能测试中如何区分服务器瓶颈与网络瓶颈? 4. LoadRunner结果分析有哪些关键指标必须关注? 5. 医疗系统性能测试需特别注意哪些安全合规要求?[^4]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值