0


书店系统---测试报告

一、项目介绍

    1.本书店系统采用前后端分离技术,通过封装JDBC代码实现基础数据库操作,设计前后端交互接口,编写前后端代码。使用mysql存储用户编号,用户名,用户密码,用户手机号,用户地址,书籍分类,书名,书籍编号,图书价格,发布时间,作者,出版社,书籍简介等。

    2.书店系统分为七个大模块:分别是书店首页,书店简介、精品推荐,最新出版,优惠促销,用户登录,用户注册。采用的是http协议,涉及到get、post等方法,请求头类型为Content-Type: text/html;charset=UTF-8。

    3.书店系统是一个线上图书售卖系统,操作步骤一般是先注册用户,再登录书店系统,登陆完毕后查看书店简介、书店首页,随后可查看精品推荐、最新出版、优惠促销等模块并在其中将中意的图书加入购物车,最后填写姓名、地址、电话等信息再提交订单。

二、测试目的和工具

2.1测试目的

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

2.2测试工具

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

三、测试

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测试环境

    自动化测试环境

    计算机型号:HP Pavilion Aero Laptop 13-be0xxx

    操作系统:Windows10家庭版

    数据库:MySQL5.7

    测试工具:selenium、JUnit 5.9.1

    浏览器:chrome

3.3.3自动化测试代码

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

import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.*;
import static java.lang.Thread.sleep;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Tests extends InitAndEndBrowser{
    @Order(1)//1.打开书店首页 2.注册账号 3.登录账号
    @ParameterizedTest
    @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'"})
    void RegisterAndLogin(String url_index,String url_register,String url_login,String password,String username,String tel) throws InterruptedException {
        //打开书店首页
        webDriver.get(url_index);
        sleep(1000);
        //点击用户注册,断言判断,输入用户名,密码,电话,点击注册
        webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(7) > a")).click();
        sleep(1000);
        String url1=webDriver.getCurrentUrl();
        Assertions.assertEquals(url_register,url1);
        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);
        sleep(1000);
        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);
        sleep(1000);
        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);
        sleep(1000);
        webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(4) > input")).click();
        sleep(1000);
        //点击用户登录,输入用户名和密码,点击登录
        webDriver.findElement(By.cssSelector("#menu > ul > li:nth-child(6) > a")).click();
        sleep(1000);
        String url2=webDriver.getCurrentUrl();
        Assertions.assertEquals(url_login,url2);
        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);
        sleep(1000);
        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);
        sleep(1000);
        webDriver.findElement(By.cssSelector("#wrap > div.center_content > div.left_content > div.feat_prod_box_details > div > form > div:nth-child(4) > input")).click();
        sleep(1000);
        String url3=webDriver.getCurrentUrl();
        Assertions.assertEquals(url_index,url3);
        sleep(1000);
    }

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

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

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

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

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

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

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

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

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

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

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

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

最后的运行结果如下

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 所有, 如有侵权,请联系我们删除。

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

还没有评论