个人博客项目自动化测试

努力经营当下,直至未来明朗!


今天搬砖不努力,明天地位不稳定!

前述

  1. 针对个人博客项目进行测试,个人博客主要由四个页面构成:登录页、列表页、详情页和编辑页,主要功能包括:登录、编辑并发布博客、查看详情、删除博客以及注销等功能。对于个人博客的测试主要就是针对主要功能进行测试,然后按照页面书写测试类。
  2. 个人博客地址:http://140.210.201.164:8080/blog_system/login.html
  3. 自动化测试一般步骤
    1)使用脑图编写web自动化测试用例
    2)创建自动化项目,根据用例来实现脚本

一、脑图

以页面书写测试类,然后对主要功能进行测试。
0


二、代码编写

  1. 根据脑图进行测试用例的编写:每个页面一个测试类,然后再各个测试类中进行测试用例的编写。
  2. 注意公共属性需要单独放一个类,方便进行代码复用。
  3. 使用测试套件便于运行以及修改。
  4. 创建启动以及现场截图就是会频繁进行复用,所以单独创建一个类进行存储。
  5. 注意添加隐式等待,为了确保页面正确加载显示。

1. 添加相关依赖pom.xml

<dependencies>
<!--        添加selenium依赖-->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.0.0</version>
        </dependency>

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

        <!--        添加junit5依赖-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.8.2</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

1)公共类AutoTestUtils

  1. 创建驱动、保存现场截图
  2. 注意:在保存现场截图的时候命名是按时间来进行文件夹的划分,然后图片的名称要体现出测试类的类名,方便进行问题的追溯。
  3. 注意文件名的动态获取,注意时间格式的设置。
  4. 注意:可以在创建驱动的时候修改默认的有头模式or无头模式

2)登录页面测试BlogLoginTest

① 创建驱动,并打开页面
② 测试页面是否正常打开
③ 测试正常登录:多参数测试
④ 测试异常登录:用户名/密码错误的情况(此处不测null)
⑤ 注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败
⑥ 注意清空内容后才能再次输入用户名以及密码

3)列表页测试BlogListTest

① 测试博客列表页是否可以正常打开
② 测试列表页的“查看全文”按钮是否可以正常跳转
③ 测试未登录的直接链接是否会跳转到登录页面,顺便测试了“注销”按钮
④ 同样注意执行顺序

4)编辑页测试BlogEditTest

① 测试编辑页是否可以正确打开
② 测试博客是否可以正常发布:元素齐全 or 部分元素
③ 测试“写博客”按钮是否可以正常使用
④ 执行顺序

5)详情页测试BlogDetailTest

① 测试详情页的正确打开:有blogId和没有blogId两种情况
② 测试“删除”按钮是否可用,注意比较的是时间,因为标题可能会存在为空的情况
③ 执行顺序
④ 一定要注意导航回到列表页的操作

6)驱动释放DriverQuiteTest

因为驱动的测试是要在最后一个测试类完成之后进行释放的,如果是使用@AfterAll注解,那么每次修改测试类的时候都会需要挪动驱动释放的位置,所以直接新建一个类作为驱动释放,此时只需要在测试套件中放到最后就行。

7)测试套件runSuite

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


3. 代码参考

BlogTest测试代码


三、代码测试

所有测试用例通过,如图所示:
0
但是会发现测试耗时有些长,说明性能还有优化的空间。


小结

1)一定要关注测试用例的执行顺序问题
2)对于页面的检查一定要到位,如检查元素是否存在确保页面的正确性
3)注意多参数测试的页面导航问题
4)发现:当多参数(多用户登录)时就会出现高并发的服务器错误情况,该情况需要关注,交给开发人员处理。
5)注意:一定要关注执行顺序!
6)因为列表页等的测试是需要在登录成功后才能抵达的,所以在进行登录页面测试的最后一步应该是登录成功的状态,这样子是为了确保列表页等能够正确进入测试。【并不是绝对,但是需要进行关注】
7)驱动关闭的位置要注意,只有最后一个用例结束之后才进行关闭。
8)为了把所有的用例的执行结果保存下来,方便后续查错或查看,也就是保存现场,此时就需要直接在公共类中进行该方法的定义。
9)注意屏幕截图保存的方式:动态时间戳并进行时间格式化,然后期望按照某种维度(天、周)以文件夹的方式进行保存。
10)@SelectClasses的参数是可以指定执行类的顺序的(注意是类的顺序,不是用例的顺序)
11)获取元素的时候建议获取固定的元素,如时间、标题等;内容不建议获取,因为是动态的。然后元素的路径是不可变的,所以可以使用xpath来进行元素的定位。
12)可以适当关注用例执行时间,如果时间过长就需要考虑是我们自己写的测试用例的问题还是程序真的有性能问题呢
13)为了避免遗漏or遗忘驱动释放的位置,可以单独写一个类来存放驱动释放,然后直接放到套件测试类的最后就行。(注意命名Test结尾)
14)测试用例并不是越多越好
15)可以使用无头模式来创建驱动


难点以及亮点

一、难点

主要就是在进行顺序划定以及导航方面存在遗漏或者错误的情况;另外对于页面登录过程中的内容清空也要格外注意,一定要进行清空;再者,可以进行隐式等待,确保页面加载完成,提高自动化的稳定性。

二、亮点

面试使用selenium4自动化测试工具和junit5单元测试框架结合,如何实现的,以及有什么亮点?
1)实现
① 是根据个人项目来设计的测试用例,然后根据测试用例使用selenium4自动化测试工具和junit5单元测试框架结合来实现web自动化测试的(功能、步骤、技术一定要明确)
② 对于代码中的每个包都要进行概要介绍(公共属性[复用]、测试用例[根据每个页面来进行设计的],然后使用测试套件将所有测试类进行加载)
2)亮点
① 使用了JUnit5中提供的注解:避免生成过多的对象,造成资源和时间的浪费,提高了自动化的执行效率
② 只创建一次驱动对象,避免每个用例重复创建驱动对象造成时间和资源的浪费。
③ 使用参数化:保持用例的简洁,提高代码的可读性
④ 使用测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例。
⑤ 使用了等待:提高了自动化的运行效率,提高了自动化的稳定性,减小误报的可能性。
⑥ 使用了屏幕截图:方便问题的追溯以及问题的解决。
⑦ 使用了无头模式:只注重结果,可以留出屏幕。
【自动化写出来不难,但是自动化执行速度快、更好地发现问题并避免误报才是难题。(一定要测试主要功能)】

猜你喜欢

转载自blog.csdn.net/weixin_54150521/article/details/129223866