0


书店系统---测试报告

一、项目介绍

  1. 1.本书店系统采用前后端分离技术,通过封装JDBC代码实现基础数据库操作,设计前后端交互接口,编写前后端代码。使用mysql存储用户编号,用户名,用户密码,用户手机号,用户地址,书籍分类,书名,书籍编号,图书价格,发布时间,作者,出版社,书籍简介等。
  2. 2.书店系统分为七个大模块:分别是书店首页,书店简介、精品推荐,最新出版,优惠促销,用户登录,用户注册。采用的是http协议,涉及到getpost等方法,请求头类型为Content-Type: text/html;charset=UTF-8
  3. 3.书店系统是一个线上图书售卖系统,操作步骤一般是先注册用户,再登录书店系统,登陆完毕后查看书店简介、书店首页,随后可查看精品推荐、最新出版、优惠促销等模块并在其中将中意的图书加入购物车,最后填写姓名、地址、电话等信息再提交订单。

二、测试目的和工具

2.1测试目的

  1. 本测试报告为书店系统项目的测试报告,目的在于总结测试阶段以及分析测试结果,描述系统是否符合需求。预期参考人员包括用户、测试人员、开发人员、项目管理者、其他质量管理人员。本次测试的目的在于确保系统功能测试、接口测试和自动化测试正常无误,满足系统需要。

2.2测试工具

  1. 本次测试过程中用到的工具有fiddlerpostman、开发者工具、JMeter等,其中fiddler用于抓包,详细的对HTTP 请求进行分析,Postman用于模拟客户端向服务器发送请求,开发者工具用于查找页面元素及查找bugJMeter用于接口测试及性能测试。

三、测试

3.1功能测试

3.1.1用Xmind画出思维导图

3.1.2设计测试用例

经过手动测试输入测试用例后发现,以上测试用例均通过。(由于功能测试用例过多,此处只展示了部分)

3.2接口测试

3.2.1使用postman进行接口测试

书店首页

用户注册

用户登录

书店简介

精品推荐

最新出版

优惠促销

3.2.2使用JMeter接口测试

(和postman接口测试差不多,都是断言判断响应状态码和所包含的字符串)

书店首页接口

书店简介接口

由于接口过多,其他的接口就不一一展示了,均正常通过。

3.3自动化测试

3.3.1自动化测试预览

20240813_163353

3.3.2测试环境

  1. 自动化测试环境
  2. 计算机型号:HP Pavilion Aero Laptop 13-be0xxx
  3. 操作系统:Windows10家庭版
  4. 数据库:MySQL5.7
  5. 测试工具:seleniumJUnit 5.9.1
  6. 浏览器:chrome

3.3.3自动化测试代码

首先打开书店首页,注册账号,再登录账号

  1. import org.junit.jupiter.api.*;
  2. import org.junit.jupiter.params.ParameterizedTest;
  3. import org.junit.jupiter.params.provider.CsvSource;
  4. import org.openqa.selenium.*;
  5. import static java.lang.Thread.sleep;
  6. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  7. public class Tests extends InitAndEndBrowser{
  8. @Order(1)//1.打开书店首页 2.注册账号 3.登录账号
  9. @ParameterizedTest
  10. @CsvSource({"'http://127.0.0.1:9000/book/index/index.action','http://127.0.0.1:9000/book/index/register.action','http://127.0.0.1:9000/book/index/login.action','112233','小颜','123456'"})
  11. void RegisterAndLogin(String url_index,String url_register,String url_login,String password,String username,String tel) throws InterruptedException {
  12. //打开书店首页
  13. webDriver.get(url_index);
  14. sleep(1000);
  15. //点击用户注册,断言判断,输入用户名,密码,电话,点击注册
  16. webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(7) > a")).click();
  17. sleep(1000);
  18. String url1=webDriver.getCurrentUrl();
  19. Assertions.assertEquals(url_register,url1);
  20. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(1) > input")).sendKeys(username);
  21. sleep(1000);
  22. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(2) > input")).sendKeys(password);
  23. sleep(1000);
  24. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(3) > input")).sendKeys(tel);
  25. sleep(1000);
  26. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(4) > input")).click();
  27. sleep(1000);
  28. //点击用户登录,输入用户名和密码,点击登录
  29. webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(6) > a")).click();
  30. sleep(1000);
  31. String url2=webDriver.getCurrentUrl();
  32. Assertions.assertEquals(url_login,url2);
  33. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(1) > input")).sendKeys(username);
  34. sleep(1000);
  35. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(2) > input")).sendKeys(password);
  36. sleep(1000);
  37. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(4) > input")).click();
  38. sleep(1000);
  39. String url3=webDriver.getCurrentUrl();
  40. Assertions.assertEquals(url_index,url3);
  41. sleep(1000);
  42. }

点击书店简介,再点击经典著作查看

  1. @Test
  2. @Order(2)//4.点击书店简介,点击经典著作
  3. void IntroduceAndClassic() throws InterruptedException {
  4. //点击书店简介,再点击经典著作,查看其中的书籍
  5. webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(2) > a")).click();
  6. sleep(1000);
  7. String url = webDriver.getCurrentUrl();
  8. Assertions.assertEquals("http://127.0.0.1:9000/book/index/about.action", url);
  9. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.right_content > div:nth-child(4) > ul > li:nth-child(1) > a")).click();
  10. sleep(1000);
  11. String url_category = webDriver.getCurrentUrl();
  12. Assertions.assertEquals("http://127.0.0.1:9000/book/index/category.action?category=1", url_category);
  13. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.new_products > div:nth-child(1) > div > a > img")).click();
  14. sleep(1000);
  15. String url_detail = webDriver.getCurrentUrl();
  16. Assertions.assertEquals("http://127.0.0.1:9000/book/index/detail.action?bookid=3", url_detail);
  17. sleep(1000);
  18. }

点击精品推荐,图书详情,选中书籍加入购物车

  1. @Test
  2. @Order(3)// 5.点击精品推荐,图书详情,加入购物车
  3. void DetailAndShoppingCart() throws InterruptedException {
  4. webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(3) > a")).click();
  5. sleep(1000);
  6. String url_special= webDriver.getCurrentUrl();
  7. Assertions.assertEquals("http://127.0.0.1:9000/book/index/special.action",url_special);
  8. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div:nth-child(2) > div.prod_det_box > div.box_center > a")).click();
  9. sleep(1000);
  10. String url_detail=webDriver.getCurrentUrl();
  11. Assertions.assertEquals("http://127.0.0.1:9000/book/index/detail.action?bookid=36",url_detail);
  12. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div.prod_det_box > div.box_center > div:nth-child(4) > a > img")).click();
  13. sleep(1000);
  14. }

点击最新出版,再点击翻页,查看下一页的最新出版的内容

  1. @Test
  2. @Order(4)//6.点击最新出版,点击翻页
  3. void NewPublish() throws InterruptedException {
  4. webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(4) > a")).click();
  5. sleep(1000);
  6. String new_url= webDriver.getCurrentUrl();
  7. sleep(1000);
  8. Assertions.assertEquals("http://127.0.0.1:9000/book/index/new.action",new_url);
  9. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.pagination > a")).click();
  10. sleep(1000);
  11. String pag_url=webDriver.getCurrentUrl();
  12. Assertions.assertEquals("http://127.0.0.1:9000/book/index/new.action?page=2",pag_url);
  13. sleep(1000);
  14. }

点击优惠促销,查看详情,选中书籍加入购物车

  1. @Test
  2. @Order(5)//7.点击优惠促销,查看详情,加入购物车
  3. void CheapSales() throws InterruptedException {
  4. webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(5) > a")).click();
  5. sleep(1000);
  6. String sale_url=webDriver.getCurrentUrl();
  7. Assertions.assertEquals("http://127.0.0.1:9000/book/index/sale.action",sale_url);
  8. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div:nth-child(2) > div.prod_det_box > div.box_center > a")).click();
  9. sleep(1000);
  10. String detail_url=webDriver.getCurrentUrl();
  11. Assertions.assertEquals("http://127.0.0.1:9000/book/index/detail.action?bookid=31",detail_url);
  12. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div.prod_det_box > div.box_center > div:nth-child(4) > a > img")).click();
  13. sleep(1000);
  14. }

点击查看购物车,修改购物车中的书籍数量,然后再输入姓名、电话、地址,点击提交订单,最后查看订单

  1. @Test
  2. @Order(6)// 8 点击查看购物车,输入姓名电话地址,再查看我的订单
  3. void CheckShoppingCart() throws InterruptedException {
  4. //webDriver.get("http://127.0.0.1:9000/book/index/cart.action");
  5. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.right_content > div.cart > a")).click();
  6. sleep(2000);
  7. String cart_url = webDriver.getCurrentUrl();
  8. Assertions.assertEquals("http://127.0.0.1:9000/book/index/cart.action", cart_url);
  9. //点击添加数量
  10. webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > table > tbody > tr.cart_title > td:nth-child(6) > a:nth-child(1)")).click();
  11. sleep(1000);
  12. webDriver.findElement(By.cssSelector("#form_save_order > table > tbody > tr > td:nth-child(1) > input[type=text]")).sendKeys("小颜");
  13. sleep(500);
  14. webDriver.findElement(By.cssSelector("#form_save_order > table > tbody > tr > td:nth-child(2) > input[type=text]")).sendKeys("123456");
  15. sleep(500);
  16. webDriver.findElement(By.cssSelector("#form_save_order > table > tbody > tr > td:nth-child(3) > input[type=text]")).sendKeys("江西xxxx");
  17. sleep(500);
  18. webDriver.findElement(By.cssSelector("#form_save_order > a")).click();
  19. sleep(1000);
  20. }

在输入框中输入书名,点击查找,至此验证完了所有功能,最后注销账号

  1. @Test
  2. @Order(7)//9.在输入框中输入书名,点击查找,查找完毕,所有的功能均尝试过了,最后注销
  3. void SearchAndLoginOut() throws InterruptedException {
  4. webDriver.findElement(By.cssSelector("#form_search > input[type=text]")).sendKeys("实战Java程序设计");
  5. sleep(1000);
  6. webDriver.findElement(By.cssSelector("#form_search > a")).click();
  7. sleep(1000);
  8. String url=webDriver.getCurrentUrl();
  9. Assertions.assertEquals("http://127.0.0.1:9000/book/index/search.action",url);
  10. webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(7) > a")).click();
  11. sleep(1000);
  12. }
  13. }

最后的运行结果如下

3.4性能测试

3.4.1弱压力测试

模拟20min内1000个用户访问服务器资源

3.4.2高并发测试

模拟100个用户访问服务器资源,要求平均响应时间在3000ms内,且错误率为0

3.4.3高频率测试

模拟2个用户以20QPS的频率访问服务器资源持续10s,要求平均响应时间在3000ms内,且错误率为0

3.4.4生成图形化报告

(以高频率测试为例)

四、测试结果

经测试,本次过程中没有出现bug,各项测试均合格。

五、总结

本次测试过程较为顺利,功能测试、接口测试、性能测试、自动化测试均满足预期要求,在性能测试方面还有待提升,JMeter的使用需要多了解熟悉,加油,继续学习!

标签: selenium postman junit

本文转载自: https://blog.csdn.net/m0_72776676/article/details/141104737
版权归原作者 m0_72776676 所有, 如有侵权,请联系我们删除。

“书店系统---测试报告”的评论:

还没有评论