1、Sqlite
-
Sqlite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。
-
Sqlite是一个进程内的库,也就是内存型数据库,说明速度快。
-
Sqlite是一个零配置的数据库,意味着它与其他数据库不一样,不需要在系统中配置
-
Sqlite的特点:
- ①、不需要一个单独的服务器进程或者操作的系统(无服务器的)
-
②、Sqlite不需要配置,这意味着不需要安装或者管理
-
③、一个完整的Sqlite数据库是存储在一个单一的跨平台的磁盘文件
-
④、Sqlite非常小,轻量级,完全配置时小于400KB,省略可选功能配置时小于250KB
-
⑤、Sqlite是自给自足的,意味着不需要任何外部的依赖
-
⑥、Sqlite事务是完全兼容ACID的,允许从多个进程或者线程安全访问
-
⑦、Sqlite支持SQL92标准的大多数查询语言的功能
-
⑧、Sqlite使用ANSI-C编写的,并提供了简单和易于使用的API
-
⑨、Sqlite可以在Unix【linux, macos, android, ios】和Windows【win32,wince,winrt】中运行
2、Sqlite的安装
-
Windows的安装
请访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件。
您需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件。
创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。
添加 C:\sqlite 到 PATH 环境变量,最后在命令提示符下,使用 sqlite3 命令,将显示如下结果。
C:\>sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
-
Linux上的安装
- 几乎所有的linux操作系统都附带Sqlite
# 验证是否安装Sqlite
C:\>sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
# 如果没有,需要手动安装
请访问 SQLite 下载页面,从源代码区下载 sqlite-autoconf-*.tar.gz。
$ tar xvzf sqlite-autoconf-3071502.tar.gz
$ cd sqlite-autoconf-3071502
$ ./configure --prefix=/usr/local
$ make
$ make install
3、Sqlite在JMeter中配置
-
①、配置连接信息
- JDBC Connection Configuration
-
②、建表
- JDBC Request
-
③、运行线程组后,可以通过navicat连接进行数据库的查询
4、注册 ---> 登录
-
场景:
- 注册?我可能需要注册数十个测试账号,后续还需要使用这数十个账号来做登录的性能测试
-
使用参数化的方式?
- ①、通过mysql导出数据为txt文件或者csv文件,然后用jmeter做csv的参数化
-
②、通过jmeter的jdbc查询mysql的数据表,然后用一个 “保存响应到文件” 的元件来保存数据到txt文件,再使用csv参数化
- 但是个人觉得没有什么意义,跟第一种方式一样
-
③、通过查询mysql获取到账号,然后登录(密码是加密的,最好就用一个常量)
- 但是这种方式,需要不断的去查询mysql数据库,这样消耗性能,性能测试就不合适了
-
当然可以加一个仅一次控制器(但是这个针对多用户,也是要运行多次的)
-
当然也可以考虑将这个操作放到setup线程组里面,只执行一次
- 但是查询服务器的mysql,还是涉及性能消耗!
-
④、而使用sqlite的方式,会大大减少资源消耗
- csv是文件,需要不断的读取,涉及磁盘IO,消耗大量的资源
-
sqlite是轻量级的数据库,所以要好得多
-
属性的方式肯定 优于 文件的读取
5、Sqlite做参数化
-
1)插入数据到sqlite
- 思路:注册一个账号,就插入一条数据到sqlite
-
2)读取sqlite的数据,就是账号
- 思路:这个sqlite的数据就是本地的,比直接读取服务器的mysql数据库更好,不消耗那么多资源
- 只需要读取一次,放入jmeter的属性就可以,跨线程组使用
-
所以放到setup线程组里面去
- 思路:这个sqlite的数据就是本地的,比直接读取服务器的mysql数据库更好,不消耗那么多资源
-
3)使用读取到的sqlite的数据,就是账号
- 脚本读取上一步里面做好的jmeter的属性,就可以使用了
-
4)其余细节自己微调!