软件测试成长秘籍:我的 [DSR海关报关系统、外贸系统] 实战经验分享,专题测试

news2024/10/22 13:45:43

如何成为一名优秀的软件测试?完成功能测试既能达到发版?成为项目负责人需要考虑哪些方面的测试?

2023年6月份从普通院校毕业开始软件测试生涯,从小白到项目负责人,薪资从5k到10k的变化,需要不断学习和总结经验。

以下是我就从事一年的软件测试总结一份除了功能测试之外,测试人员需要专题测试的内容,包括异步加载、防抖与节流、弱网、后端拦截缺失、权限问题、请求、响应时机错误、组件问题、高并发、大数据处理、上锁与解锁、react疯狂请求等。

一、异步加载(结合弱网多次测试复现)

1.数据不一致

(1)界面显示与实际数据不同步

由于异步加载的延迟,可能会出现界面上显示的数据与实际数据不一致的情况。

例如,用户在界面上看到的是旧的数据,而实际上新数据已经在后台加载完成,但还未更新到界面上,尤其是在需要实时数据的场景下,如金融交易软件、实时监控系统等。

(2)重复加载数据

如果异步加载的逻辑没有处理好,可能会导致重复加载数据的问题。

例如,在用户快速操作或网络不稳定的情况下,可能会触发多次异步加载请求,导致数据被重复加载和处理。

2.加载失败处理

(1)无反馈或错误提示不明确

异步加载失败时,如果没有适当的反馈机制,用户可能不知道发生了什么问题。

例如,页面上一直显示加载图标,但没有任何提示说明加载失败的原因。

或者错误提示不明确,用户无法理解问题所在,也不知道如何解决。

例如,只显示 “加载失败”,而没有具体的错误信息和解决方法。

(2)无法重试或恢复

如果异步加载失败后,没有提供重试或恢复的机制,用户可能无法继续操作。

例如,在加载数据失败后,用户无法重新尝试加载,或者无法手动刷新页面以获取最新数据,可以结合弱网进行复现这类情况。

二、防抖与节流

节流: n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效;

防抖: n 秒后在执行该事件,若在 n 秒内被重复触发,则重新计时;

1.防抖

(1)响应延迟过度

由于防抖会在触发事件后等待一段时间,如果这段等待时间设置过长,可能会导致用户操作的响应明显延迟,影响用户体验。

例如,在一个搜索框中,用户输入字符后需要等待较长时间才能看到搜索结果,可能会让用户觉得系统反应迟钝。

(2)丢失关键事件

如果在防抖等待期间发生了一些关键事件,但由于防抖机制的存在,这些事件可能被忽略。

比如在一个实时数据监测系统中,防抖可能导致一些重要的短暂数据变化被错过。

2.节流

(1)缺少节流,多次请求

节流目的是为了限制统一操作多次请求,导致服务器负担过重。同时对于请求过慢的过程,更加需要节流操作来限制用户过度点击操作(也可以前端进行限制)

例子,在提交表单的数据比较多时,可能会导致响应比较慢,客户认为没有点击成功,重复多次点击,最后提示报错。

(2)数据更新不及时

节流会限制函数在一定时间内的执行次数,如果时间间隔设置不当,可能会导致数据更新不及时。

例如在一个动画效果中,节流可能会使动画的帧率降低,导致画面不流畅。

(3)遗漏重要操作

在节流的时间间隔内,如果发生了多个重要操作,可能只有其中一个被执行,其他操作被忽略。

比如在一个游戏中,玩家的连续操作可能因为节流而被部分忽略,影响游戏体验。

(4)并发问题

当多个事件同时触发节流时,可能会出现并发问题,导致数据不一致或错误的操作。

例如在一个多用户的在线系统中,多个用户同时触发了一个节流的操作,可能会导致系统状态的混乱。

三、弱网

1.数据传输、功能错误、异常处理

(1)数据传输不完整或错误

网络信号弱可能导致数据在传输过程中丢失部分数据包,使得接收端接收到的数据不完整。例如,在上传文件时,可能会出现文件损坏或部分内容丢失的情况。

数据错误也可能发生,例如在下载软件更新时,可能会因为网络问题导致下载的文件出现错误,安装后软件无法正常运行。

(2)功能响应缓慢或超时

在弱网条件下,请求和响应的时间会大大延长。这可能导致用户操作后长时间没有反馈,影响用户体验。例如,点击按钮后,页面加载时间过长,甚至出现超时错误。

对于一些实时性要求较高的功能,如在线游戏、视频通话等,弱网可能会导致卡顿、延迟,甚至功能无法正常使用。

(3)操作失败或异常中断

弱网可能导致正在进行的操作突然失败或中断。例如,在填写表单并提交时,如果网络中断,提交可能会失败,而且用户可能会丢失已经输入的数据。

对于一些需要连续网络连接的操作,如在线支付、文件上传等,网络不稳定可能会导致操作异常中断,需要重新进行操作。

2.用户体验

(1)界面显示异常

弱网可能导致界面加载不完整或显示错误。例如,图片无法加载、文字显示不全等。

界面响应缓慢也会影响用户体验,例如下拉刷新时,界面长时间停留在刷新状态,没有任何反馈。

(2)错误提示不明确

在弱网情况下,应用程序应该提供明确的错误提示,让用户知道问题所在并采取相应的措施。如果错误提示不明确或不准确,用户可能会感到困惑和不满。

四、后端拦截缺失(使用接口测试)

1.数据完整性和一致性问题

(1)非法输入数据

没有拦截机制可能导致用户输入不合法的数据,从而破坏数据库的完整性和一致性。

例如,输入不符合数据格式要求的日期、数字等,或者输入过长或过短的字符串。比如,一个注册功能如果没有对用户输入的邮箱地址进行验证,可能会导致用户输入错误格式的邮箱地址,后续在发送邮件验证等操作时会出现问题,修改密码等操作也会存在这类问题。

(2)重复数据提交

如果后端没有拦截重复提交的请求,可能会导致数据重复插入数据库,造成数据混乱。

例如,在表单提交时,如果用户多次点击提交按钮或者网络延迟导致请求重复发送,没有拦截的话会导致相同的数据被多次插。

2.安全漏洞相关bug

(1)SQL 注入攻击

没有拦截可能导致恶意用户通过输入特定的 SQL 语句来操纵数据库。

例如,在用户输入的查询参数中插入恶意的 SQL 代码,从而获取或修改数据库中的敏感信息,比如,一个搜索功能如果没有对用户输入进行过滤,攻击者可以输入 “' OR 1=1 --” 这样的字符串,可能导致返回数据库中的所有记录。

(2)跨站脚本攻击(XSS)

后端没有拦截可能使得恶意用户在输入内容中插入脚本代码,当其他用户查看包含这些内容的页面时,脚本会在他们的浏览器中执行。这可能导致用户信息泄露、会话劫持等问题。

例如,在评论区如果没有对用户输入的内容进行过滤,攻击者可以输入 “<script>alert('XSS')</script>”,当其他用户查看该评论时,浏览器会弹出警告框。

(3)命令注入攻击

恶意用户可能通过输入特定的命令字符串,让后端服务器执行危险的系统命令。如果没有拦截,可能会导致服务器被攻击、数据被破坏等严重后果。

比如,在一个文件上传功能中,如果没有对文件名进行严格检查,攻击者可以上传一个包含恶意命令的文件,服务器在处理这个文件时可能会执行这些命令。

五、权限问题

1.权限验证漏洞(接口测试)

(1)接口绕过权限验证

攻击者可以通过某种方式绕过权限验证机制,访问受限制的资源或执行未经授权的操作。

例如,通过修改 URL 参数、利用系统漏洞或使用特殊的工具和技术,使用普通权限的cookie访问高级权限接口是否后端做了权限配置拦截。

(2)权限继承冲突

当多个用户或角色之间存在复杂的权限继承关系时,可能会出现权限冲突。

例如,一个用户同时属于两个不同的角色,这两个角色对某个资源的权限设置不同,导致用户在访问该资源时出现权限混乱。

(3)权限干扰

如果某个请求需要获取其他模块的数据,如字典数据,禁用字典权限后,再请求后可能会导致强制退出。

六、请求、响应时机错误

1.请求时机错误

(1)请求过早或过晚

很多开发图方便可能把所有的get操作同时发生,这样如果后端有数据更新或者页面刷新时,这些接口都被覆盖或者已经和原来数据不一致导致bug出现。

例如,get请求都是在点击填写表单按钮请求,刷新页面,表单使用下拉框就不会有get的数据。

1.响应时机错误

(1)等待时间过长

用户通常对请求的响应时间有一定的期望,如果响应时间过长,用户可能会感到不耐烦。这可能会降低用户对系统的满意度,甚至导致用户流失。

例如,在一个移动应用中,如果加载页面的时间过长,用户可能会切换到其他应用。

(2)错误提示不明确

如果请求和响应时间导致的错误没有明确的提示信息,用户可能会感到困惑。他们不知道问题出在哪里,也不知道如何解决。

例如,当一个请求超时后,只显示一个通用的错误信息,用户可能无法确定是网络问题还是系统故障。

七、组件问题

1.兼容性问题

(1)不同平台兼容性问题

组件在不同的操作系统、浏览器或设备上可能表现不一致。

例如,一个在 Windows 系统上运行良好的组件,在 Mac 系统上可能出现布局错乱或功能异常。或者一个在 Chrome 浏览器中正常工作的组件,在 Firefox 浏览器中可能出现兼容性问题。

(2)版本兼容性问题

当组件的版本发生变化时,可能会与其他组件或整个系统产生兼容性问题。

例如,一个库的新版本可能改变了某些函数的参数或返回值,导致依赖该库的组件出现错误。或者一个组件的升级可能导致与旧版本的系统不兼容,需要进行大量的适配工作。

2.特殊组件问题

(1)组件边框大小问题

某些组件的边框是随着数据多少而改变的大小的,那么如果说数据响应比较慢,则组件无法判断,会提前给出边框,导致后面的数据超出边框。

例如,小编之前遇到遇到正式环境出现类似bug,测试环境没有出现,开发和测试定位好久都无法定位成功,最后是通过弱网测试发现复现增高才定位到bug原因,最后固定组件大小解决问题。

八、边界值

1.数值边界问题

(1)精度损失

在处理浮点数时,接近边界值的数值可能会导致精度损失。由于浮点数的精度有限,当数值非常接近其边界值时,可能会出现舍入误差或精度降低的情况。

例如,在以往的商城测试中,订单里面有单价和总价格,如果是先算商品价格再加起来计算总价格则会丢失精度过大,这是比较常用的做法,但是不适用于高精度的系统;如果先加所有商品后舍弃后面位数则精度更准确,对于高精度的系统有很多帮助,但是可能客户自己计算和系统算出有出入。不管使用那种方案都会有精度损失,按照实质的场景采取最佳方案即可。

(2)溢出错误

当数值接近其数据类型的上限或下限时,可能会发生溢出错误。

例如,一个无符号整数类型的变量,如果被赋予一个超过其最大值的值,可能会导致溢出,结果可能是错误的或不可预测的,比如在一个计数器应用中,如果计数器达到了其最大值,继续增加可能会导致溢出,使得计数器的值变为一个非常小的负数

九、高并发、大数据处理(接口测试、文件导入)

1.数据不一致问题

(1)数据丢失或不一致

在高并发或大数据环境下,数据的写入操作可能会因为冲突或其他原因而失败,导致数据丢失或不一致。

例如,两个用户同时修改同一数据,后提交的用户可能会覆盖前一个用户的修改,导致数据丢失或不一致。

2.性能问题

(1)响应时间过长

在高并发情况下,系统可能会因为处理大量请求而导致响应时间过长。这可能会影响用户体验,甚至导致用户放弃使用系统。

例如,在一个电商网站的促销活动中,大量用户同时访问网站,导致页面加载时间延长,购物车结算速度变慢。

(2)系统奔溃

如果系统无法承受高并发的压力,可能会出现崩溃的情况。这可能是由于资源耗尽、数据库连接超时、内存泄漏等原因引起的。

比如,一个在线游戏在大量玩家同时登录时,服务器可能会因为负载过高而崩溃,导致玩家无法正常游戏。

(3)数据库性能减低

大数据量和高并发访问可能会对数据库造成巨大压力,导致数据库性能下降。例如,查询速度变慢、写入操作延迟、索引失效等。

十、上锁与解锁

1.上锁时机不对或滥用上锁

(1)上锁时机不对

上锁实质上是限制操作,比如说后端请求限制提示不能操作,或者是前端没有这个权限隐藏功能或者点击提示不能操作,这使得系统更加安全,同时,还能提高易用性。上锁一般是放在“入口”,但很多产品没有考虑到这个问题进去某个页面才上锁导致页面请求出现数据不全或者强制退出。

(2)滥用上锁

上锁一般用于购买商品、使用购物券,再支付这个过程要将商品或者购物券减一,但是有些产品设计上锁不删除操作,就会导致同一个页面的商品、购物券被上锁后其他用户点击无法购买。有两个方案可以避免,第一上锁的商品或者购物车隐藏、第二将同一面额购物券合并一块,只要是点击就在数量减一,减少多人卡一个购物券。

十一、react使用useEffect出现疯狂请求

1.接口循环请求

一个模糊搜索接口循环请求接口,20分钟请求了1万次这个接口,导致页面卡顿,系统奔溃。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA二手交易发布闲置好物回收系统小程序源码

&#x1f389;二手交易新风尚&#xff01;发布闲置好物&#xff0c;回收系统助你环保又赚钱✨ &#x1f3e0;闲置物品大变身&#xff0c;开启绿色生活新篇章&#x1f33f; 嘿宝贝们&#xff01;是不是家里总有一些东西&#xff0c;明明还很新却因为种种原因被束之高阁&#x…

PROFINET开发或EtherNet/IP开发嵌入式板有用于工业称重秤

这是一个真实案例&#xff0c;不过客户选择不透露其品牌名称。稳联技术的嵌入式解决方案助力工业称重设备制造商连接至任意工业网络。多网络连接使得称重设备能够轻松接入不同的控制系统&#xff0c;进而加快产品的上市时间。 我们找到了稳联技术的解决方案。他们成熟的技术与专…

使用Shell脚本对Java应用等服务进行启停控制(支持批量)

通过shell脚本对Java服务启停进行控制。支持单个服务和多个服务的 start、stop、status、restart。支持自定义启动命令。&#xff08;不限于Java服务&#xff0c;适用于各类通过命令行启动的服务&#xff09; 脚本名称为 runjar.sh , 底部提供源码。通过三部分进行说明&#xf…

【Dv2Admin】Django配置线上ws反向代理

在 Web 应用程序的部署过程中,安全性、稳定性和实时通信是开发者们普遍关注的重点。Django 是一个非常流行的 Web 框架,常与 Nginx 配合使用,以便实现反向代理、负载均衡以及 SSL 加密等功能。除此之外,实时功能(如 WebSocket)也是现代应用中经常使用的技术。 在项目中实…

用户一键注册登录(一)- 对接短信平台

1. 流程图 2. 详细设计 2.1 用户表结构设计 CREATE TABLE users (id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,mobile varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 手机号,nickname varchar(16) CHARACT…

回忆Web编程的岁月变迁

目录 引子 记忆的片断 CGI / ISAPI 何为 CGI / ISAPI ? 一个小插曲 ASP与我的ASP Builder ASP编程技术 何为 Windows DNA &#xff1f; 什么是 COM ? ASP.NET 什么是 ActiveX ? IntraBuilder与我的InterBuilder 结尾 引子 凌晨三点醒了&#xff0c;大多的时候是…

数据结构(JAVA)JDK17语法新增特性

目录 yield关键字var关键字空指针异常密封类接口中的私有方法instanceof其他 yield关键字 yield关键字用于case的代码块中返回值。 正常switch语句 public static void main(String[] args) {int result 0;String str "a";switch (str) {case "a" :resu…

根据发生异常的汇编指令以及函数调用堆栈,从内存的角度出发,估计出问题的可能原因,确定排查方向,快速定位C++软件问题

目录 1、前言 2、初步分析dump文件 3、加载更多模块的pdb文件&#xff0c;可能能看到更多行的函数调用堆栈 4、从内存的角度去看&#xff0c;估计是访问了野指针导致的&#xff0c;沿着这个怀疑的方向快速地定位了问题 5、最后 C软件异常排查从入门到精通系列教程&#xf…

【安当产品应用案例100集】024-BYOE及BYOK在IaaS场景中的应用

在云计算环境中&#xff0c;尤其是涉及到敏感数据时&#xff0c;企业用户可能会选择自带加密工具或密钥&#xff08;即BYOE或BYOK&#xff09;&#xff0c;以确保数据在传输和存储过程中的安全性。这种方式可以防止云服务提供商访问或泄露加密数据&#xff0c;增强数据保护。 …

离散数学 第二讲 特殊集合和集合间关系 笔记 [电子科大]王丽杰

1.2 特殊集合与集合间关系 空集 不含任何元素的集合叫做空集(empty set)&#xff0c;记作∅. 空集可以符号化为 ∅ { x ∣ x ≠ x } ∅ \{ x|x ≠ x\} ∅{x∣xx} . 空集是绝对唯一的。 全集 针对一个具体范围&#xff0c;我们考虑的所有对象的集合叫做全集(universal se…

基于springboot招聘信息管理系统设计与实现(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

视频美颜平台是如何搭建的?基于直播美颜SDK源码的开发技术详解

今天&#xff0c;笔者将详细讲解如何基于直播美颜SDK源码搭建视频美颜平台的技术路径。 一、理解视频美颜技术 视频美颜技术主要通过图像处理算法对视频流进行实时处理&#xff0c;包括肤色优化、瑕疵修复、面部特征增强等。实现这一目标需要高效的图像处理算法和稳定的实时渲…

5个最流行的图像嵌入模型对比

最近需要研究图像相似性搜索。我想知道基于架构训练方法的嵌入之间是否存在差异。但是&#xff0c;很少有博客比较几种模型之间的嵌入。因此&#xff0c;在这篇博客中&#xff0c;我将使用 Flickr 数据集 [6] 比较 EfficientNet [1]、ViT [2]、DINO-v2 [3]、CLIP [4] 和 BLIP-2…

Matlab软件进行金融时间序列数据的描述性统计代码

1、数据S&P500的收盘价格&#xff0c;return100*log(pt/pt-1) 方法1&#xff1a;用python代码 import numpy as np import pandas as pddef calculate_log_returns(prices):"""计算价格序列的对数收益率。参数:prices (numpy.array): 价格序列。返回:log_…

Mongodb基础用法【总结】

关系型数据库和非关系型数据库的区别 关系型数据库 1.在关系型数据库中&#xff0c;数据都是存储在表中的&#xff0c;对存储的内容有严格的要求 2.因为我们在创建表的时候久已经规定了表中的字段 存储的数据类型 是否为空 唯一标识等规则 3.由于操作的都是结构化的数据&#…

家政小程序搭建,数字化市场发展下的意义

家政服务行业作为当下社会生活中不可或缺的行业&#xff0c;需求量在逐渐增加&#xff0c;行业发展也趋向多样化。 随着数字化的浪潮&#xff0c;家政行业逐渐向数字化、智能化升级发展&#xff0c;推动行业高质量发展&#xff0c;迎合现代化发展趋势&#xff0c;这一转型为行…

83.【C语言】数据结构之顺序表的尾部插入和删除

目录 3.操作顺序表 2."伪"插入顺序表的元素 分析尾部插入函数SLPushBack 代码示例 SeqList.h main.c free(指针)出错的几种可能的原因 3."伪"删除顺序表元素 2.分析尾部删除函数SLPopBack 代码示例 错误检查 两种解决办法 1.判断size是否为负…

004-按照指定功能模块名称分组

按照指定功能模块名称分组 一、说明1.现在有一个需求&#xff1a;2.具体做法 二、代码案例三、效果展示 一、说明 1.现在有一个需求&#xff1a; 需要把一个功能模块的几个功能点放在同一个文档目录下&#xff0c;这几个功能点分布在不同的 Controller 2.具体做法 需要把他…

如何将markdown文件转换为pdf

最近笔者在用vscode写markdown&#xff0c;但是提交时往往需要交pdf。所以就涉及到如何将markdown转化为pdf格式。 首先&#xff0c;需要在vscode上安装插件 markdown Preview Enhanced 之后在vscode的右上角即可看到下述图标&#xff0c;点击&#xff0c;vscode右半面就会显示…

C++数据结构-图的存储及邻接矩阵的代码实现

1. 什么是图 图论&#xff08;graph theory&#xff09; 是数学的一个分支&#xff0c;它以 图 为研究的对象。 图论本身是应用数学的一部分&#xff0c;历史上图论曾经被很多数学家各自独立建立过。关于图论的最早文字记载最早出现在欧拉 1736 年的论著中&#xff0c;也就是…