个人博客系统项目测试报告

项目背景介绍

背景

  1. 个人博客系统采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据。前端主要有四个页面构成:注册页、登录页、(主页)列表页、个人列表页、详情页以及编辑页,以上模拟实现了最简单的个人博客系统。其结合后端实现了以下的主要功能:注册、登录、编辑博客、注销、删除博客、以及验证码等功能。
  2. 但是该项目用户头像不能自己设定,在进行前端页面的书写过程中已经将头像的图片写为静态了;用户信息中的分类数没有在后端中具体实现,直接在前端页面中写了1;用户信息中的github地址也是不能够上传的,点击跳转为无页面
  3. 该个人博客系统可以实现个人用户简单的博客记录,时间、标题、内容以及发布者等都可以进行详细地查看。
  4. 在没有登录的情况下,只有主页,详情页,登录页和注册后可以正常打开,其他页面均会被跳转到登录页

 功能

该个人博客系统主要实现了以下几个功能:注册、登录、注销、写博客以及删除博客等功能。

  • 注册功能:用户输入用户名、密码、确认密码,要求3个值均不能为空,密码和确认密码必须相同,用户名必须是不存在的。完成该要求后,点击“提交”,即可注册成功
  • 登录功能:输入已经注册过的账号和密码,以及验证码,登录成功后就会跳转到个人列表页面。在右上角存在主页和写博客和注册和我的4个按钮。但是在未登录情况下按下“写博客”和“我的”按钮只会跳转到登录页面。
  • 个人列表页面:登录后才可以访问,可以在该页面看到登陆者的所有博客列表,其包括博客标题、发布时间以及内容概要,还有“查看全文”“修改”“删除”按钮。在左侧可以看到登录用户的用户名、文章数、分类数等的模块。在右上角有主页、写博客和注销三个功能:主页即列表页,写博客即博客编辑页,注销即注销用户,回到登录页面。“删除”按钮点击后,会刷新当前页面
  • 详情页面:在(个人列表页面/主页)点击“查看全文”按钮就会跳转到详情页,此时就可以看到该篇博客的完整内容。在右上角有主页、写博客、登录3个功能
  • 写博客:在登录之后的任意界面点击“写博客”之后就会进入博客编辑页面,此时就可以进行博客的编写,点击“发布文章”后就可以成功发布文章,此时就会跳转到个人列表页

相关技术栈

SpringBoot SpringMVC MyBatis MySQL  HTML CSS JavaScript


 博客登录页:

博客注册页: 

个人博客列表页:

博客主页 :

博客详情页:

博客编辑页(修改页):

 手工测试

 测试计划

编写测试用例 
 执行测试用例(部分)

仅针对部分用例进行测试

 正常登录(输入正确的用户名、密码、验证码)

登录成功后,跳转到个人博客列表页

 写博客测试(登录状态下):

发布成功后,跳转到个人博客列表页,并出现在首行

 发布成功后,查看详情页

删除博客

 删除成功后,“hello”这篇博客就没了

注销:点击注销后,回到登录页

自动化测试 

测试环境 

测试环境

操作系统:

版本                        Windows 10 家庭中文版

版本号                     22H2

安装日期                  2021/‎7/‎6

操作系统内部版本    19045.4529

体验                          Windows Feature Experience Pack 1000.19058.1000.0


浏览器

Google 版本 127.0.6533.120(正式版本) (64 位)


Selenium:

版本:3.141.59

驱动版本 :127.0.6533.119   (64位)

编写测试用例 (UI自动化测试)

只测试了核心功能

代码编写 

  • 1、每个页面一个测试类,然后在各个测试类中进行测试用例的编写。
  • 2、有一个公共类,专门放公共属性
  • 3、使用测试套件便于运行
  • 4、创建驱动、关闭驱动以及现场截图放在公共类里
  • 5、添加隐式等待 ,确保页面正确加载显示
1、添加相关依赖
<dependencies>
        <!--        添加selenium依赖-->
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

        <!--        保存屏幕截图需要用到的包-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

        <!--        添加junit5依赖-->
<!--        @Test 、 @BeforeAll 等,这些注解需要这个依赖-->
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>

<!--        参数化需要这个依赖                        -->
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>

<!--   以下2个依赖是用来管理测试用例的,比如套件等      -->
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>

</dependencies>
2、新建包并在包下创建测试类以及公共类

以下是所建立的是common公共包和Tests测试包:

1)公共类InitAndEnd
  1. 创建驱动、驱动释放、保存现场截图
  2. 注意:在保存现场截图的时候命名是按时间来进行文件夹的划分,然后图片的名称要体现出测试类的类名,方便进行问题的追溯。
  3. 注意文件名的动态获取,注意时间格式的设置。
2)注册页测试registTest
  • ① 测试没有任意一个(用户名、密码、确认密码),不能成功注册
  • ② 测试密码和确认密码不一致时,也不能注册成功
  • ③ 注册时使用的账号密码均为随机生成的
  • ④ 测试用户名已存在的情况下,不能注册成功
  • ⑤测试正确输入后,能注册成功并跳转到登录页,并且用注册的账号密码能正确登录
  • ⑥忽略弹窗的代码前,要加上显式等待,以免弹窗还没加载出来导致报错
  • ⑦注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败
  • ⑧在测试前清空所有元素内容(非首个执行的测试用例),以免被前一次的测试用例干扰
3)登录页面测试 loginTest
  • ① 获取驱动,并打开页面
  • ② 测试页面是否正常打开
  • ③ 测试异常登录:(多参数测试LoginFail.csv)用户名/密码错误的情况(均有null的情况)
  • ④ 测试正常登录:多参数测试(LoginSuccess.csv)
  • ⑤ 注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败
  • ⑥ 验证码用的是固定通用验证码
  • ⑦注意浏览器打开后,要写上隐式等待,以免元素没能加载好就开始操作
  • ⑧忽略弹窗的代码前,要加上显式等待,以免弹窗还没加载出来导致报错
  • ⑨登录成功后,断言页面跳转到了个人列表页。要在断言前加显式等待,以免还没来得及跳转,就被断言,导致报错
4)个人博客列表页测试myBlogListTest

① 登录后,测试个人博客列表页是否可以正常打开
② 登陆后,测试该页面左侧的用户栏能正确显示
③ 登陆后,测试该页面右侧有数据,博客数不为0或者显示“该用户没发表任何文章”
④ 测试未登录的直接链接是否会跳转到登录页面,顺便测试了“注销”按钮

5)编辑页测试BlogEditTest

① 测试未登录,编辑页会被跳转到登录页
② 测试登录后,编辑页可以正常打开
③ 测试不输入内容,无法提交博客
④ 测试输入内容,点击“提交”按钮可以正常提交并跳转到个人列表页,刚发布的博客在列表首位

6)详情页测试BlogDetailTest

① 登录后,从个人列表页点击“查看全文”进入,测试详情页能正确打开
②未登录,从列表页(主页)点击文章详情进入,测试该页面能正常打开

7)列表页(主页)测试BlogListTest

① 测试列表页能正确打开:登录和没登录
② 测试从各页面的“主页”按钮,均能正确跳转过来 

8)测试套件runSuite

测试套件的运行,使用的是以测试类作为执行顺序的方式。

代码测试

所有测试用例都通过了

可以看到所有测试用例均通过

代码参考

起飞婷/我的项目

自动化测试亮点

  • 1.通过使用junit5中的注解,避免生成过多的测试对象,减少资源和时间上的浪费,提高了自动化执行的效率
  • 2.使用参数化,保持用例的整洁,提高代码的可读性。
  • 3.使用隐式等待,提高了自动化运行效率,提高了自动化的稳定性。
  • 4.使用了显式等待,避免跳转页面,处理弹窗等出错
  • 5.使用测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例。
  • 6.使用屏幕截图,方便问题的溯源以及解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值