目录
1、项目背景
个人博客系统类似于CSDN的博客发表系统,首先需要进行用户注册,在网页实现对应页面的对应设计,实现的对应网页有:博客系统登录网页、博客系统博客列表页、博客系统博客详情页以及博客系统博客编辑页。
2、项目功能
该个人博客系统主要实现了以下功能:登录、注销、写博客、发布博客、查看博客详情、查询博客列表。
登录功能:用户输入正确的账号密码后,登录成功后就会跳转到列表页面。
博客列表页:在系统的该页面可以观察到以往发布所有博客的大致内容包括博客标题、博客发布时间、博客部分内容以及博客查询全文按钮。
博客详情页:在博客简介下方点击“查看全文”按钮就会跳转到当前博客详情页,此时就可以看到该篇博客的完整内容。右上角有主页和写博客功能。
个人信息页:个人信息在博客详情页对应展示,以卡片的样式在前端实现布局。
写博客:在登录之后的任意界面点击“写博客”之后就会进入博客编辑页面,此时就可以进行博客的编写,点击“发布文章”后就可以成功发布文章,此时就会跳转到博客列表页展示发表博客的标题、摘要和发布时间。
返回主页:在登录成功后无论在任何界面点击右上角的主页按钮,即可返回博客列表页。
注销:在登录成功后,在任何界面点击右上角的注销按钮,跳转回登录界面,用户重新登录进入界面。
3、系统测试
3.1 功能测试
3.1.1 功能测试设计测试用例
针对个人博客系统实现的功能模块设计对应功能的测试用例,设计对应脑图如下:
3.1.2 执行功能测试的操作
运行系统,打开对应界面实现对应功能的测试。
(1)登录功能测试
运行项目出现项目服务启动成功,选择对应的浏览器输入对应网址:http://localhost:8080/blog_system/login.html
出现登录界面进行登录功能模块测试
登录功能(登录成功):
登录失败:
(2)查询博客列表页信息,并查询博客详情信息(用户已经登陆成功):
(3)写博客功能(用户登录成功):
进入博客编辑页,并且完成博客内容编辑进行内容发表,在博客列表页可以查询信息同时可以实现查询博客的内容,跳转到博客列表详情页。
(4)注销功能:
点击右上角的注销按钮,退出功能模块,跳转至用户登录界面。
3.2 自动化测试
3.2.1 自动化测试设计测试用例
针对页面进行自动化功能测试,设计对应测试用例,对于自动化测试设计的脑图如下:
3.2.2 代码编写
(1)建立项目,并添加对应依赖
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- 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>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.9.1</version>
</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>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.9.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.9.1</version>
</dependency>
<!-- 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>
</dependencies>
(2)建立对应类,编写测试代码
登录页面测试方法LoginSuccess
功能:
- 获取驱动,并打开页面
- 测试页面是否正常打开
- 测试正常登陆:多参数测试
- 测试异常登录:用户名或密码错误,用户名或密码为空
注意:
测试的顺序可以采用Order注解指定,可能会因为执行的顺序不对导致测试失败
博客列表页测试方法BlogList、获取博客列表页信息方法BlogInfoChecked
- 获取驱动,并打开页面
- 测试页面是否正常打开
注意:
获取列表信息cssSelector和xpath利用开发者工具选取正确的标志,切勿因为错误位置导致测试失败
博客详情页测试方法BlogDetail
- 获取驱动,并打开页面
- 测试页面是否正常打开
博客编辑页测试方法EditBlog
- 获取驱动,并打开页面
- 测试页面是否正常打开
- 测试正常博客编写并提交:输入标题和正文,并点击提交按钮
- 测试异常编辑博客并提交:输入正文和标题为空,并点击提交按钮
注意:
页面跳转时需要等待,等页面完成自动跳转未找到错误即可
注意测试执行顺序,测试的顺序可以采用Order注解指定,可能会因为执行的顺序不对导致测试失败
驱动释放
在进行测试方法完成后要释放对应的驱动,因为该测试类继承InitAndEnd类,在该类中实现了驱动实体,并在BlogCases中使用,完成驱动的使用。在InitAndEnd类中利用BeforeAll和AfterAll注解实现实体类的实体化和释放。
(3) 测试结果
通过所有测试用例的设计,结果如图所示:
小结:
- 注意测试用例的执行顺序,以防不同的顺序使得执行得到错误的结果
- 设置隐式等待,提高自动化效率,提高自动化的稳定性
- 适当关注测试时间,用于检测系统性能是否存在问题
- 建立单例模式驱动,减少驱动频繁创建销毁带来的资源消耗
- 测试用例要保证尽量少且对系统测试的覆盖率高