jmeter教程(十八):性能测试项目构建

为了更好的讲解性能测试,我们编写一个简单的web应用。当然,不会写得太复杂,使用我新近写的一个框架来实现,将会变得很容易,同时,也顺便测试一下我这个框架的性能。

那么,首先是环境的准备,先创建两个虚拟机,一个用来做web服务器,一个用来做数据库服务器。至于创建虚拟机,安装centos、tomcat、mysql等,在我之前的博客中都有介绍。相关安装包在我的网盘里也都有,链接:https://pan.baidu.com/s/1MX4t_kT3iNHmtIsO67YqXQ,提取码:nn1k

这里,我两台虚拟机已经安装好了,两台虚拟机都是2核4G的配置。然后就是用eclipse构建一个web项目,这个在我之前的博客中也有讲。

这里,我已经创建了一个web项目,项目名就叫demo,然后,导入相关的jar包,在网盘的jar文件夹下,都有,下载后,复制到lib目录下即可。需要的jar包一共有7个,mysql开头的是jdbc驱动包,这是连接mysql必须要有的包。c3p0开头的是数据库连接池的包,dom4j开头的是读xml文件需要用到的包。三个jackson开头的包是java对象和json之间转换要用到的包,还有一个Shengshi.jar,这个就是我自己写的框架了。

再打开web.xml,添加拦截器。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>demo</display-name>
  
	<filter>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<filter-name>king</filter-name>
		<filter-class>king.base.KingFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>king</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

在src下新建包king.demo,包下两个类Goods、Member。这两个类的属性,与数据库中两张表goods和member相对应。src目录下新建两个文件c3p0-config.xml和db.xml,前面是c3p0的配置文件,内容如下:

192.168.52.131,是我虚拟机数据库服务器的地址,demo是我在数据库中建的一个库,里面有两张表goods和member

扫描二维码关注公众号,回复: 8497140 查看本文章

连接池初始连接为5,最大连接数为20。db.xml,这个配置文件,就是我的框架要用到的配置文件

<rootElement>

	<sql id="goods" entry="king.demo.Goods">
		<prefix>SELECT * FROM goods</prefix>
		<condition>
			<exp>id=?</exp>
			<data>id</data>
		</condition>
		<condition>
			<exp>name LIKE CONCAT('%', ?, '%')</exp>
			<data>name</data>
		</condition>
		<condition>
			<exp>stock>?</exp>
			<data>stock</data>
		</condition>
	</sql>

	<sql id="member" entry="king.demo.Member">
		<prefix>SELECT * FROM member</prefix>
		<condition>
			<exp>id=?</exp>
			<data>id</data>
		</condition>
		<paging>
			<pageName>page</pageName>
			<pageCountName>pageCount</pageCountName>
		</paging>
	</sql>

</rootElement>

在这里面,一个sql标签对应一条sql语句,通过id来标识,访问的时候在url里加上不同的id可以访问不同的sql语句,sql语句查询出来的数据,要封装到一个对象里面,怎么创建对象,通过指定一个类名来创建,entry指定的就是这个类名。prefix用来指定sql语句的前面部分,就是where前面的部分,不建议用SELECT *,我这里是偷懒了一下。如果用SELECT *,数据库改了,比如加了一个字段,你的程序就挂了,所以尽量不要用*,即使你全表的字段都要,也请一个一个的写,不要用*。后面的condition就是查询的条件,一个condition就是一个条件,对应前端页面一个输入条件的查询。在我的这个框架中所有的查询均使用预编译的形式查询,一个查询条件,对应sql语句的表达式是什么,通过exp标签指定,前端提交数据用的键是什么,通过data标签指定。paging标签里是指定分页相关键名的。pageName是页码的键,pageCountname是单页数据条数的键,如果这两个值为page和pageCount,可以不填,默认就是这个。

好了,这样,一个简单的web项目就搭建好了。然后运行项目

一开始web.xml配置拦截器不知道哪个地方写错了,折腾了半天就是启动不了项目,把工作目录重新清空,重新弄过了,一切配置都还原了。。。主要是一直在init-param那里有一个报错,那只是与约束文件不相符,并不影响项目的运行,影响了排查问题。好了,现在用浏览器访问一下:localhost:8080/demo/findList/goods

路径说明:demo是项目名,findList是我定义的一个前缀名,goods就是在db.xml中定义的sql标签的id,这样查出来的就是商品表的数据了。还可以加查询条件,如:localhost:8080/demo/findList/goods?id=2

如果访问localhost:8080/demo/findList/member,那么就会响应member表的数据

如果id写错了,在sql标签里找不到,程序就会报个错,比如localhost:8080/demo/findList/aaa

当然,如果前面没有findList,那就跟我的框架没啥关系了,我可是不会理的哟。好了,折腾了半天,项目弄好了,把项目打成war包,上传到web服务器上,也就是虚拟机了。这个在之前的博文中也讲过怎么弄,这里就不细讲了。下一篇博文就测试一下这个框架的性能。

欢迎加入测试群:91425817,一起讨论测试的那此事。

发布了47 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/kingzhsh/article/details/88365567
今日推荐