IT 论坛测试报告

一、引言

1、项目简介

本项目是一个B/S架构的论坛系统,依托线上平台为用户提供一个便于交流、讨论的场所。该系统使用前后端的设计模式,围绕用户和和帖子两个核心对象进行业务处理,实现了用户注册登录、帖子管理,用户个人中心,以及评论私信等功能。

下面这张图囊括了本项目的核心功能点:

2、测试目的

本次测试结合软件规格说明书和产品说明文档,针对项目的主流程中的核心功能进行测试,旨在验证上述论坛系统的核心功能模块是否符合需求。

二、测试计划

1、测试范围

本次测试主要集中在论坛系统的核心功能模块上,包括用户管理、帖子管理、站内信管理等,是因为这些核心功能模块是论坛系统的基础功能,对于用户的日常使用至关重要。

2、测试方法

本次测试将采用黑盒测试方法,重点验证用户界面操作与预期结果是否一致:

  1. 黑盒测试方法就像是模拟真实用户行为的一种方式,它关注系统是否符合用户的期望和需求。测试人员作为外部用户,不需要了解系统内部的细节,这使得测试结果更加客观可靠。
  2. 通过测试输入和输出的正确性、界面友好性、系统响应速度等方面来评估系统的质量,特别适用于论坛系统的核心功能。
  3. 同时,黑盒测试方法还能高效地设计多个测试用例来覆盖不同的功能和使用场景,以检验系统在各种情况下的稳定性和正确性。这样,我们可以在相对较短的时间内发现系统中的潜在问题和缺陷。

3、测试环境

浏览器:Chrome
操作系统:Windows
设备:PC

三、测试执行

1、测试用例设计

本次功能测试是根据核心功能点进行测试用例的设计,以下是分模块归纳出的测试功能点,在进行具体的测试时,可以根据这些测试功能点编写具体的测试用例:
在这里插入图片描述

2、自动化测试

本次测试使用到自动化测试,使用的自动化测试工具 Selenium3Junit5 共同完成测试用例的管理和执行。下面是自动化测试的实施详细步骤:

(1)导入自动化测试相关依赖
Selenium3+Junit5配置文件:Gitte 地址

(2)编写公共模块

  1. 编写创建驱动方法
  2. 编写保存现场截图方法

:创建启动以及现场截图功能会频繁进行复用,所以单独创建一个类进行存储。

(3)注册模块

  1. 创建驱动,并打开页面
  2. 测试页面是否正常打开
  3. 测试正常注册:多参数测试(根据给出的注册白名单,即不需要校验验证码)
  4. 测试异常注册:表单为空/无效用户名/密码错误/验证码错误的情况。
  5. 注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败。

(4)登录模块

  1. 创建驱动,并打开页面
  2. 测试页面是否正常打开
  3. 测试正常登录:多参数测试(根据给出的登录白名单,不需要校验验证码)
  4. 测试异常登录:表单为空/用户名/密码/验证码错误的情况
  5. 注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败。

(5)业务功能模块

  1. 创建驱动,并打开页面
  2. 测试导航页面是否正常打开
  3. 由于帖子管理模块、个人中心模块、站内信模块等业务模块都需要登录后在导航页面进行跳转测试,因此将业务功能模块统一进行测试。
  4. 对各个具体的业务功能点进行有效测试:可以采用多参数进行测试。
  5. 对各个具体的业务功能点进行无效测试:根据上面的测试用例图进行具体设计。
  6. 测试时要注意各个功能点之间的执行顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败。
  7. 注意添加等待,防止出现元素找不到(页面跳转后元素位渲染完毕)、元素状态未就绪(按钮不可点击)等问题。
  8. 注意根据实际页面调整滚动条,避免因为元素在视窗外导致操作失败。

3、代码编写

针对以上模块进行自动化代码的编写,编写自动化代码时,注意结合实际页面元素,和具体功能点具体分析,这里给出完整代码:点击访问 Gitee

4、测试结果

执行用例个数:50;通过测试用例个数:50。测试用例全部通过,暂未发现 bug:

自动化测试视频:

forum-success-test

四、测试总结

在本次测试中,我们针对IT论坛项目进行了50个全面的测试用例。通过对各个基本功能模块和关键业务逻辑的测试,我们对系统的稳定性和正确性进行了验证。经过测试,我们得出以下总结:

  1. 测试覆盖率全面: 通过设计并执行50个测试用例,我们尽可能地覆盖了项目的各个功能和业务场景,包括用户注册、登录、帖子发布、评论回复等关键功能。

  2. 无执行错误: 在所有测试用例中,没有发现任何执行错误或系统崩溃的情况。这表明系统在处理各种输入和操作时表现稳定,并且能够准确地处理用户请求和数据交互。

  3. 功能符合预期: 在测试过程中,我们验证了各项功能是否符合预期的行为和规范。例如,用户能够成功注册、登录,发布帖子和评论等。系统在各个环节都表现出正确的行为和响应。

五、测试复盘

1、测试小结

本次测试根据项目的核心业务功能来设计的测试用例,然后根据测试用例使用selenium4自动化测试工具和junit5单元测试框架结合来实现web自动化测试的。

在进行自动化代码编写时,采用分模块编写测试用例,同时将测试中常用的方法如截图、创建驱动抽象出一个公共的类实现复用,最后使用测试套件执行所有测试类。

2、本次测试难点

自动化写出来不难,但是自动化执行速度快、更好地发现问题并避免误报才是难题。在本次自动化测试中,主要遇到以下几个问题:

  1. 时刻注意测试用例执行的顺序。比如在上面的测试中,一定是先登录才能访问导航页面进行具体的业务操作,否则会因为无权限导致测试用例执行失败。

  2. 注意添加等待,防止在操作元素时出现元素找不到(页面跳转后元素未渲染完毕)、元素状态未就绪(按钮不可点击)等问题。这个问题也是在测试中遇到最多的问题,当我们跳转到一个页面后,由于页面元素可能还未加载,直接获取或操作,可能出现找不到元素,或元素功能未就绪的问题,此时我们可以在测试中合理的添加等待,如添加智能等待、强制等待等。

  3. 注意根据实际页面调整滚动条,避免因为元素在视窗外导致获取不到,从而操作失败。在上面的测试中,有些页面比如文章编辑页,再进行提交的时候,由于提交按钮在浏览器视窗外(即当前显示的页面中看不到提交按钮),直接获取并点击提交按钮就会报错,此时就需要将滚动条调整到下面,找到提交按钮元素再进行点击操作。

3、本次测试亮点

  1. 使用了JUnit5中提供的注解:避免生成过多的对象,造成资源和时间的浪费,提高了自动化的执行效率。

  2. 项目中使用单例模式,只创建一次驱动对象,避免每个用例重复创建驱动对象造成时间和资源的浪费。

  3. 合理运用Junit5中的参数化:保持用例的简洁,提高代码的可读性。

  4. 使用测试套件:通过套件一次执行所有要运行的测试用例。

  5. 在合适的位置使用了等待:提高了自动化的运行效率,提高了自动化的稳定性,减小误报的可能性。

  6. 使用了屏幕截图:方便问题的追溯以及问题的解决。

4、测试迭代建议

上面的基本功能测试只是测试了业务的主流程没有问题,例如注册功能,失败的用例为用户名已存在、提交表单为空,两次输入密码不一致。没有进行更精细化的测试用例设计,比如测试用户名长度限制、是否包含特殊字符,密码的格式要求等等……如果想要让测试更加全面的覆盖整个项目,我们可以进一步设计更加详细的测试用例,拓展测试范围,如增加界面测试、易用性测试、兼容测试、性能测试、安全测试等……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/179911.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

可编程交流回馈式负载箱在电源设备中的应用

可编程交流回馈式负载箱可以用于测试电源设备的输出能力,通过在负载箱中设置不同的负载条件,可以模拟不同的工作负载情况,从而测试电源设备在不同负载下的输出能力和稳定性。这对于电源设备的设计和生产非常重要,可以帮助制造商评…

设置定时自动请求测试_自动定时循环发送http_post请求---postman工作笔记001

其实就是创建接口文件夹的时候,有个monitor collection 用来监听接口执行情况,这里就可以设置 可以看到多久执行一次对吧,这里可以设置每几分钟执行一次,一共执行多少次等等 但是这里要说明一下,如果需要使用monitor功能,必须需要登录, 所以如果这里点击monitor collection…

微信开放平台Android平台应用签名怎么填写

winR 输入cmd 进到本地签名文件的目录下 输入 keytool -list -v -keystore <keystore文件路径> -alias <别名>请将 <keystore文件路径> 替换为您的密钥库文件&#xff08;通常是 .jks 或 .keystore 文件&#xff09;的路径&#xff0c;而 <别名> 则是…

【C语法学习】27 - 字符串转换为数字

文章目录 1 atoi()函数1.1 函数原型1.2 参数1.3 返回值1.4 转换机制1.5 示例1.5.1 示例1 1 atoi()函数 1.1 函数原型 atoi()&#xff1a;将str指向的字符串转换为整数&#xff0c;函数原型如下&#xff1a; int atoi(const char *str);1.2 参数 atoi()函数只有一个参数str&…

苹果手机内存满了怎么清理?这里有你想要的答案!

手机内存不足是一个比较普遍的现象。由于现在手机应用程序的功能越来越强大&#xff0c;所以占用的内存也越来越大。同时用户会在手机中存储大量的数据&#xff0c;如照片、视频、文档等&#xff0c;这些都会占用大量的手机空间。那么&#xff0c;苹果手机内存满了怎么清理&…

@JsonCreator和@JsonValue

文章目录 1、正常反序列化的过程2、JsonCreator3、JsonValue4、应用&#xff1a;枚举类中校验传参以及优化前后端数据交互5、补充&#xff1a;ConstructorProperties 1、正常反序列化的过程 反序列化时&#xff0c;默认会调用实体类的无参构造来实例化一个对象&#xff0c;然后…

类加载过程

Java类加载过程包括加载&#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09;、解析&#xff08;Resolution&#xff09;、初始化&#xff08;Initialization&#xff09;五个阶段。这些阶段是按照顺序逐步执…

5.3 Windows驱动开发:内核取应用层模块基址

在上一篇文章《内核取ntoskrnl模块基地址》中我们通过调用内核API函数获取到了内核进程ntoskrnl.exe的基址&#xff0c;当在某些场景中&#xff0c;我们不仅需要得到内核的基地址&#xff0c;也需要得到特定进程内某个模块的基地址&#xff0c;显然上篇文章中的方法是做不到的&…

【AI】行业消息精选和分析(11月23日)

今日动态 1、Sam Altman 重掌 CEO&#xff0c;OpenAI 权力斗争正式「落幕」 2、重磅好消息&#xff1a;语音 ChatGPT 现已向全用户开放 3、NVIDIA 与基因泰克合作&#xff0c;利用生成式 AI 加速药物发现 4、 英伟达Q3营收同比增长206%至181亿美元 黄仁勋&#xff1a;生成式AI时…

HarmonyOS ArkTS 应用添加弹窗(八)

概述 在我们日常使用应用的时候&#xff0c;可能会进行一些敏感的操作&#xff0c;比如删除联系人&#xff0c;这时候我们给应用添加弹窗来提示用户是否需要执行该操作&#xff0c;如下图所示&#xff1a; 弹窗是一种模态窗口&#xff0c;通常用来展示用户当前需要的或用户必须…

电商数据采集|电商API接口接入|从京东平台获取商品SKU 主图 价格 详情数据

在进行API开发过程中&#xff0c;数据异常常常令人头痛。我们的API开车软件经过精心设计和测试&#xff0c;能够准确识别并及时处理各类数据异常。拥有稳定的运行环境&#xff0c;保障了您的开发进程不受干扰&#xff0c;让您的工作更加顺畅高效。 京东获得JD商品详情 API 返…

如何判断交流回馈老化测试负载是否合格?

交流回馈老化测试负载是用于模拟实际工作环境中设备运行状态的测试工具&#xff0c;主要用于检测设备的耐久性和稳定性。 负载性能&#xff1a;需要检查负载的性能是否符合设计要求&#xff0c;这包括负载的功率、电流、电压等参数是否在规定的范围内&#xff0c;以及负载的工作…

信号功率放大器的工作原理和特点是什么

信号功率放大器是一种电子设备&#xff0c;用于将输入信号的功率进行放大&#xff0c;以达到所需的输出功率水平。它在各个领域中都有广泛的应用&#xff0c;包括音频放大器、射频放大器、激光功率放大器等。下面将详细介绍信号功率放大器的工作原理和特点。 工作原理&#xff…

什么是高防IP?如何进行防护?怎样隐藏源站?

高防IP是针对互联网服务器遭受大流量的DDoS攻击后导致服务不可用的情况下&#xff0c;推出的付费增值服务&#xff0c;是目前最常用的一种防御DDoS攻击的手段。用户在数据不转移的情况下&#xff0c;就可以通过配置高防IP&#xff0c;将攻击流量引流到高防IP&#xff0c;防护系…

redis-cluster集群

redis-cluster集群 redis3.0引入的分布式存储方案 集群由多个node节点组成&#xff0c;redis数据分布在这些节点之中 在集群之中分为主节点和从节点 集群模式当中&#xff0c;主从一一对应&#xff0c;数据写入和读取与主从模式一样&#xff0c;主负责写&#xff0c;从只能读…

echarts的横向柱状图文字省略,鼠标移入显示内容 vue3

效果图 文字省略 提示 如果是在x轴上的&#xff0c;就在x轴上添加triggerEvent: true,如果是y轴就在y轴添加&#xff0c;我是在y轴上添加的 并且自定义的方法&#xff08;我取名为extension&#xff09; // echarts 横向省略文字 鼠标移入显示内容 export const extension…

[MySQL-基础]SQL语句

目录 hello! 这里是欧_aita的频道。 今日语录: 只有放弃才是真正的失败。 祝福语&#xff1a;愿你的代码生活充满注释&#xff0c;逻辑清晰&#xff0c;debug之路畅通无阻。 大家可以在评论区畅所欲言&#xff0c;可以指出我的错误&#xff0c;在交流中共同进步。 欢迎关注我的…

基于 Modbus 的工业数据采集、控制(part 3)

Modbus 设备(利用 slave 模拟) Modbus 采集程序 client.c #include "client.h"modbus_t *ctx; key_t key_shm, key_msg; int shmid, msgid; struct shm *shm0; struct msgbuf msg0;void *collector(void *arg) {struct shm *p = (struct shm *)arg;while (1){sle…

目前比较好用的护眼台灯?央视公认好用的五款护眼台灯推荐

据国家卫健委最新数据&#xff0c;2020年我国儿童青少年总体近视率是52.7&#xff05;&#xff0c;幼儿园&#xff08;数据仅覆盖大班&#xff09;近视率达14.3&#xff05;&#xff0c;小学阶段35.6&#xff05;&#xff0c;初中阶段71.1&#xff05;&#xff0c;而高中阶段达…

运维 在Windows上搭建小型Git服务

文章目录 1、Git选型1.1、主要特性1.2、代码管理1.3、工单管理1.4、Pull/Merge requests1.5、第三方集成1.6、选型结论 2、环境搭建2.1、Gitea下载2.2、Gitea安装2.3、配置服务信息2.4、运行服务2.5、注册Gitea为服务2.6、正常使用 1、Git选型 1.1、主要特性 1.2、代码管理 1.…