性能测试工具操作数据库(七)-Loadrunner与SQL Server

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
性能测试 PTS,5000VUM额度
简介: Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作,主要用到的是lr_db_connect和lr_db_executeSQLStatement两个函数,具体的用法这里不做解释,请自行查看loadrunner的帮助说明。
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/68486247

Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作,主要用到的是lr_db_connect和lr_db_executeSQLStatement两个函数,具体的用法这里不做解释,请自行查看loadrunner的帮助说明。

1、脚本协议:选择web service

在函数lr_db_connect的帮助说明中有句“Important: This function is available only from within Web Services scripts.”。这句话决定了,我们在协议选择的时候只能选择Web Services协议。

2、脚本

Action()
{
	int NumRows=0; 
	double times=0;
	int i=1;
	//建立连接,ConnectionType=SQL
	lr_db_connect("StepName=DatabaseConnection",
		"ConnectionString=Data Source=172.16.1.215;Initial Catalog=LayIM;Persist Security Info=True;User ID=sa;Password=sa",
		"ConnectionName=MyCon",
		"ConnectionType=SQL",
		LAST );
	/*建立连接,ConnectionType=OLEDB
    lr_db_connect("StepName=Connect", 
		"ConnectionString=Provider=SQLOLEDB;Data Source=.;Initial Catalog=my_test;User Id=sa;Password=123456",
		"ConnectionName=MyCon",
		"ConnectionType=OLEDB", //ConnectionType=SQL时,ConnectionString不可以带有Provider;ConnectionType=OLEDB时,必须带Provider
		LAST);
    */
	//执行SQL
	lr_start_transaction("SQL查询");
	NumRows = lr_db_executeSQLStatement("StepName=PerformQuery",
		"ConnectionName=MyCon",
		// 数据库语句
		"SQLStatement=SELECT * FROM layim_user ORDER BY id DESC ",
		"DatasetName=MyDataSet",
		LAST );
	times=lr_get_transaction_duration("SQL查询");
	lr_end_transaction("SQL查询", LR_AUTO);

	lr_output_message("The query returned %d rows.", NumRows);
	lr_output_message("SQL查询语句执行时间 %f ", times);
 
	//打印查询结果
	
	/*lr_db_dataset_action("StepName=PrintDataset",
	    "DatasetName=MyDataSet",
	    "Action=PRINT",
	    LAST );*/
 
	//获取当前第一条记录
	lr_db_getvalue("StepName=GetValue",
		"DatasetName=MyDataSet",
		"Column=nickname",
		"Row=current",
		"OutParam=MyOutputParam",
		LAST );
 
	// 输出当前查询记录
	lr_output_message("The value is: %s", lr_eval_string("{MyOutputParam}") );

	while (i<=10) {//输出10条记录
		lr_db_getvalue("StepName=GetValue",
					   "DatasetName=MyDataSet", 
					   "Column=nickname",
					   "Row=next", 
					   "OutParam=MyOutputParam",
					   LAST);
		lr_output_message("The value %d is: %s", i, lr_eval_string("{MyOutputParam}") ); 
		i=i+1;
	}
	lr_output_message("The query returned %d rows.", NumRows); 
	
	//释放结果
    /*lr_db_dataset_action("StepName=RemoveDataset",
        "DatasetName=MyDataSet",
        "Action=REMOVE",
        LAST);*/

	lr_start_transaction("SQL插入");
	NumRows = lr_db_executeSQLStatement("StepName=Insert",
		"ConnectionName=MyCon",
		// Insert语句,本例中第一列id是自增主键
		"SQLStatement=Insert into layim_user values ('test','123456','test888888','','/test/test',getdate(),'111111',0) ",
		"DatasetName=MyDataSet",
		LAST );
	times=lr_get_transaction_duration("SQL插入");
	lr_end_transaction("SQL插入", LR_AUTO);

    lr_output_message("The insert date %d rows.", NumRows);
	lr_output_message("SQL插入语句执行时间 %f ", times);
 
	//关闭链接
	lr_db_disconnect("stepname=Disconnect","connectionname=MyCon",LAST);
 
	return 0;
}

3、补充说明:

(1)ConnectionString:本文给了ConnectionType为sql和OLEDB的例子,具体数据源的连接可参见:https://www.connectionstrings.com/sql-server/

(2)ConnectionType=OLEDB时ConnectionString后面必须指定Provider属性,ConnectionType=SQL又绝对不可以指定Provider属性。不知道为什么这么要求。

(3)lr_db_connect中的ConnectionName可以随意指定,但是lr_db_executeSQLStatement中的ConnectionName必须和其保持一致。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
8天前
|
JavaScript 前端开发 数据库
测试开发之路--Flask 之旅 (三):数据库
本文介绍了在 Flask 应用中实现权限管理的过程,包括使用 Flask-SQLAlchemy、Flask-MySQLdb、Flask-Security 和 Flask-Login 等扩展模块进行数据库配置与用户权限设置。首先创建数据库并定义用户、环境和角色模型,接着通过 Flask-Security 初始化用户和角色,并展示了如何便捷地管理权限。后续将深入探讨权限控制的具体应用。
26 4
测试开发之路--Flask 之旅 (三):数据库
|
1天前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
11 4
|
8天前
|
关系型数据库 MySQL 测试技术
《性能测试》读书笔记_数据库优化
《性能测试》读书笔记_数据库优化
20 7
|
4天前
|
SQL 监控 关系型数据库
MySQL数据库中如何检查一条SQL语句是否被回滚
检查MySQL中的SQL语句是否被回滚需要综合使用日志分析、事务状态监控和事务控制语句。理解和应用这些工具和命令,可以有效地管理和验证数据库事务的执行情况,确保数据的一致性和系统的稳定性。此外,熟悉事务的ACID属性和正确设置事务隔离级别对于预防数据问题和解决事务冲突同样重要。
17 2
|
18天前
|
监控 安全 Linux
如何利用Kali Linux进行网站渗透测试:最常用工具详解
如何利用Kali Linux进行网站渗透测试:最常用工具详解
53 6
|
18天前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
28 2
|
16天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
35 0
|
20天前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
34 0
|
20天前
|
SQL 数据处理 数据库
|
20天前
|
Java 数据库连接 数据库
告别繁琐 SQL!Hibernate 入门指南带你轻松玩转 ORM,解锁高效数据库操作新姿势
【8月更文挑战第31天】Hibernate 是一款流行的 Java 持久层框架,简化了对象关系映射(ORM)过程,使开发者能以面向对象的方式进行数据持久化操作而无需直接编写 SQL 语句。本文提供 Hibernate 入门指南,介绍核心概念及示例代码,涵盖依赖引入、配置文件设置、实体类定义、工具类构建及基本 CRUD 操作。通过学习,你将掌握使用 Hibernate 简化数据持久化的技巧,为实际项目应用打下基础。
40 0