软件测试人员发现更多程序bug
软件测试人员发现更多程序bug
1. 理解需求和业务,需求评审时候发现bug
熟悉了产品的业务流程、才能迅速找出软件中存在的一些重要的缺陷,发现的软件缺陷才是有价值的。否则即使你能找到一些软件缺陷,那也是纯软件的缺陷,价值不大。阅读需求文档的时候,在需求评审阶段,识别和处理潜在的bug。常见的问题包括:
需求不明确或模糊:
需求文档中的描述不够清晰,导致理解上的歧义。需求缺少必要的细节,使得开发无法准确实现功能。
用户体验问题:
需求没有考虑到用户的易用性,可能导致用户体验不佳。需求与业务目标或用户期望不一致。需求的交互设计不符合用户习惯,需要调整。
安全性问题:
数据泄露风险:需求没有考虑数据保护措施,可能导致用户数据泄露,数据库存放明文密码,导出用户信息。
权限控制不当:需求的权限控制不合理,可能导致未授权访问。
性能问题:
需求没有考虑性能优化,可能导致系统响应缓慢,用户、设备数量超过10万,授权和登录功能、同步到其他设备。导入和导出没有限制数量。
可维护性问题:
需求的实现方式不利于未来的扩展和维护,每一个功能需要有日志记录,限制单个日志空间占用大小,增加新组件注册。云平台系统需要支持磁盘扩容。
一旦发现这些问题,应立即记录并向测试经理反馈,团队成员共同分析bug的原因和影响,确定是否需要修改需求。及时提出问题,可以有效减少后期开发中的返工和修改成本。
2. 写测试用例多思考发现更多bug
测试用例的全面性和有效性,写出能够发现更多bug的测试用例。
理解需求和设计
详细阅读需求文档:理解软件的功能需求、业务逻辑和非功能需求(如性能、安全等)。输入内容限制格式长度,新增和修改功能没有限制名字不能重复。查询功能精确查询和模糊查询,多条件查询。
参与需求讨论:参与需求讨论,确保对需求的理解没有偏差。明确哪些功能是本次测试的重点,用户最常用的业务流程,确保这些路径被充分测试。
设计测试用例
正常流程:设计覆盖所有正常业务流程的测试用例。
异常流程:考虑各种可能的错误情况和异常输入,设计相应的测试用例。模拟真实的使用场景,包括用户可能遇到的意外情况。
边界条件:针对每个输入,设计边界值测试用例,包括最小值、最大值、刚超过最小值、刚低于最大值等。
等价类划分:将输入数据划分为有效和无效的等价类,从每个类中选取代表性的值进行测试。验证系统如何处理非法或无效的输入。
边界值分析:专注于输入域的边界,因为这些地方最容易出错。
安全性测试:考虑潜在的安全漏洞,设计测试用例来检查输入验证、权限控制、数据加密等方面,导入功能需要限制文本格式和大小。
性能测试:设计测试用例来评估系统在高负载下的表现。
查看历史bug:参考以前发现的bug,提供更多参考思路。
用例评审和优化
用例评审:让同事审查你的测试用例,他们可能会发现你遗漏的测试点。
持续改进:根据发现的bug和新的需求,参考维护的文档,不断更新和优化测试用例。
3. 测试时候发现bug
测试每一个功能都需要考虑:外观、功能、性能、安全、易用性和兼容性。每天花一点时间查看其他人提交的bug,拓展自己的测试思路,多问一下维护组的同事,重点测试用户反馈的一些问题。集中测试的时候要使用二八原则。
外观
布局问题:元素错位、间距不一致、格式不统一、对齐问题、翻页功能和浏览器滚动条等。颜色搭配不合理、字体不统一或不清晰、中英文切换查看显示字体。
图片和图标问题:图片格式不同加载失败、不同显示屏图标分辨率低或显示错误。
功能
预期的功能未实现或部分实现。功能实现与需求不符,导致操作结果错误。业务正向和逆向流程,不同入口使用业务流程,导致业务流程错误。
新增功能:名称重复、所有字段填写后保存后丢失或错误,页面内容显示错误,字母大小写没有校验,多次点击保存按钮保存了多次,关键信息没有tooltips。
修改功能:没有限制输入字符类型和长度、没有区分大小写字母、时间先后没有校验、修改操作完后记录结果错误,修改名称和已存在资源相同名称保存成功,修改操作日志记录错误,修改内容没有同步到已注册的其他组件。
删除功能:删除失败、删除自定义内容失败、删除前没有提示信息、批量删除失败、物理删除用户数据、删除操作日志记录错误,删除内容没有同步到已注册的其他组件。
查询功能:无查询功能、没有限制输入字符长度、查询结果不准确、内置数据无查询结果、100万条数据查询加载慢、不支持关键词查询。
导入功能:导入数据失败、没有限制输入字符类型和长度、导入数据后位置乱序、导出默认数据后再导入失败、没有限制导入文件格式、没有限制导入文件大小和数据量(建议excel单个sheet限制10000行)、导入提示信息错误、导入数据后没有记录到日志或记录错误。
接口功能:缺少接口、接口没有限制每个字段长度和字符类型、缺少字段、接口文档错误(符号不正确、错别字、缺少字段)、接口返回结果错误与接口文档描述不一致。
网络功能:ipv4(回环127.0.0.1、回环域名localhost)、ipv6(回环::1、回环域名localhost)、纯ipv6环境功能正常、纯域名环境功能正常、使用已经被占用的IP、网口聚合、dchp自动获取地址能正常访问、DNS解析失败、nat地址、各组件配置nat、配置多网卡多个ip地址(一个地址通、一个地址网络不通)、各组件配置多个IP、禁用组件网卡功能继续使用,提示信息准确、高可用配置主备、主备切换、浮动IP地址注册组件切换主备、多个IP地址日志外发使用的IP地址、设备网络带宽瓶颈
性能
响应时间慢:登录系统响应时间长,数据量达到100万条加载慢,影响用户体验。
资源消耗大:系统资源(如内存、CPU)使用率高,可能导致系统崩溃。系统在高并发情况下性能下降,无法满足用户需求。
安全
1.SQL注入:攻击者通过在输入框中输入恶意SQL代码,尝试获取或修改数据库中的数据。
2.重放攻击漏洞:攻击者截获合法用户的请求,然后将该请求重复发送给服务器。
3.XSS(跨站脚本攻击):攻击者通过在网页中插入恶意脚本,当其他用户浏览该网页时,这些脚本会被执行,从而窃取用户信息或进行其他恶意操作。
4.文件上传漏洞:攻击者通过上传恶意文件,尝试执行远程代码或获取服务器权限,上传功能没有校验文件格式和内容。
5.弱密码策略:默认或过于简单的密码可能导致攻击者轻易破解账户。
6.未加密的数据传输:在数据传输过程中未进行加密处理,可能导致数据泄露或被篡改。
7.未经授权的访问控制:未对敏感资源进行严格的访问控制,可能导致攻击者越权访问。登录系统后台使用命令或者脚本越权。
8.缺乏安全更新和补丁:未及时修复已知的安全漏洞,可能导致攻击者利用这些漏洞进行攻击。使用中间件版本低存在漏洞,百度一下中间件的漏洞然后提bug。
易用性
导航困难:菜单结构复杂,用户难以找到所需功能。交互设计不符合用户习惯,需要调整,比如有的功能需要进入后台才能配置,页面需要有配置的选项。
帮助信息不足:缺少必要的帮助文档或提示信息,使用户难以理解如何使用软件,增加tooltips功能。
兼容性
跨浏览器问题:在不同浏览器上表现不一致,某些功能无法正常使用。
跨平台问题:在不同操作系统(国产操作系统)或设备上表现不一致,某些功能无法正常使用。
拓展思路:
参考其他人提交的bug,可以从不同的角度拓展思路,发现更多潜在的bug。也可以参考其他项目中的bug报告,了解常见的bug类型和解决方案;也可以借鉴其他测试人员的经验,学习他们的测试方法和技巧。
自由测试是一种非正式的测试方法,测试人员可以根据直觉和经验进行测试,不受预定义测试用例的限制。这种方法可以帮助发现一些容易被忽视的bug,但也可能因为缺乏系统性而导致漏测。在进行自由测试时,建议结合正式的测试用例一起使用,以获得更全面的测试覆盖。
根据二八原则(帕累托原则),80%的问题往往集中在20%的模块中。统计bug分布时,可以重点关注那些出现bug较多的模块。通过对这些模块的深入测试,可以发现更多bug,有效提高系统的整体质量。
4. 回归bug的时候发现更多bug
在回归测试时发现更多bug是一个常见且重要的现象。在修复一个bug时,可能会对其他功能模块产生连锁反应,导致新的bug出现。一个模块的修复可能会影响到另一个模块的正常使用。
测试覆盖不全面:在初次测试中,可能由于测试用例设计不充分或者测试时间和环境的限制,未能覆盖所有可能的场景。在回归测试中,通过更全面的测试用例,可能会发现之前未检测到的bug。
需求变更:在软件开发过程中,需求可能会发生变化。这些变更如果没有及时反映到测试用例中,可能会导致新的bug在回归测试中被发现。
环境变化:测试环境和生产环境可能存在差异。在回归测试中,如果使用了更接近生产环境的配置,可能会暴露出之前未发现的环境相关bug。
人为因素:开发人员在修复bug时可能会因为疏忽或误解需求而引入新的bug。
确保之前发现的bug已经修复,并且修复没有引入新的问题。多思考类似的功能有没有同样的问题。
5. 软件发布后,用户使用中的bug
软件发布后,用户在实际使用过程中遇到的各种问题,用户在使用过程中发现的bug是一个不可避免的现象。以下是一些常见的用户使用中发现的bug类型及其描述:
功能问题:某些预期的功能与用户期望不符。
性能问题:应用响应缓慢,加载时间长,在高并发情况下,系统崩溃或服务不可用。
兼容性问题:在不同操作系统、浏览器或设备上表现不一致。
安全性问题:数据泄露或未授权访问,系统容易受到SQL注入、XSS攻击等。
稳定性问题:长期使用,应用崩溃或频繁出错,内存泄漏导致系统资源耗尽。
国际化和本地化问题:多语言支持不完整或翻译错误,日期、货币格式未根据地区正确显示,系统初始化后语言正确。
用户体验问题:界面不友好,操作复杂,缺乏必要的帮助信息或提示。
采取以下措施:
问题分析和定位:对用户报告的问题进行详细分析,重现问题场景,定位问题根源。
记录和跟踪:将用户反馈的bug记录在案,并跟踪其处理状态。这有助于后续的问题管理和质量改进。
测试和验证:在问题修复后,进行充分的测试以确保问题已经解决,并且没有引入新的问题。
持续改进:通过分析用户反馈的bug,不断改进软件测试用例和方法,减少未来类似问题的发生。
相关文章:
软件测试人员发现更多程序bug
软件测试人员发现更多程序bug 1. 理解需求和业务,需求评审时候发现bug 熟悉了产品的业务流程、才能迅速找出软件中存在的一些重要的缺陷,发现的软件缺陷才是有价值的。否则即使你能找到一些软件缺陷,那也是纯软件的缺陷,价值不大…...
Nagle 算法:优化 TCP 网络中小数据包的传输
1. 前言 在网络通信中,TCP(传输控制协议)是最常用的协议之一,广泛应用于各种网络应用,如网页浏览、文件传输和在线游戏等。然而,随着互联网的普及,小数据包的频繁传输成为一个不容忽视的问题。…...
C#入门教程
目录 1.if分支语句 2.面向对象 3.static简单说明 1.if分支语句 我们的这个C#里面的if语句以及这个if-else语句和C语言里面没有区别,就是打这个输出上面的方式不一样,c#里面使用的是这个console.writeline这个指令,其他的这个判断逻辑都是一…...
【MySQL报错】---Data truncated for column ‘age‘ at row...
目录 一、前言二、问题分析三、解决办法 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进哦~ 博客主页链接点这里–>:权权的博客主页链接 二、问题分析 问题一修改表结构 XXX 为 not n…...
Go基础学习08-并发安全型类型-通道(chan)深入研究
文章目录 chan基础使用和理解通道模型:单通道、双通道双向通道单向通道单向通道的作用 缓冲通道和非缓冲通道数据发送和接收过程缓冲通道非缓冲通道 通道基本特性通道何时触发panicChannel和Select结合使用Select语句和通道的关系Select语句的分支选择规则有那些Sel…...
some 蓝桥杯题
12.反异或01串 - 蓝桥云课 (lanqiao.cn) #include "bits/stdc.h" #define int long long using namespace std; char c[10000000]; char s[10000000]; int cnt,Ans,mr,mid; int maxi; int p[10000000],pre[10000000]; signed main() {ios::sync_with_stdio(0);cin.t…...
[linux 驱动]input输入子系统详解与实战
目录 1 描述 2 结构体 2.1 input_class 2.2 input_dev 2.4 input_event 2.4 input_dev_type 3 input接口 3.1 input_allocate_device 3.2 input_free_device 3.3 input_register_device 3.4 input_unregister_device 3.5 input_event 3.6 input_sync 3.7 input_se…...
2023_Spark_实验十:Centos_Spark Local模式部署
参考这篇博客:【Centos8_配置单节点伪分布式Spark环境】_centos8伪分布式环境搭建-CSDN博客...
pyecharts-快速入门
pyecharts文档:渲染图表 - pyecharts - A Python Echarts Plotting Library built with love. pyecharts-gallery文档:中文简介 - Document (pyecharts.org) 一、快速入门案例 from pyecharts.charts import Barbar Bar() bar.add_xaxis(["衬衫…...
vue3打包疯狂报错
打包的时候报错很多Cannot find name ‘xxx‘ 。 但是npm run dev 是运行正常的。 解决方法:package.json中的vue-tsc --noEmit 删掉就可以了。 例如: 这是原来的 {"scripts": {"dev": "vite","build": &quo…...
STM32 软件触发ADC采集
0.91寸OLED屏幕大小的音频频谱,炫酷! STM32另一个很少人知道的的功能——时钟监测 晶振与软件的关系(深度理解) STM32单片机一种另类的IO初始化方法 ADC是一个十分重要的功能,几乎任何一款单片机都会包含这个功能&a…...
Android SystemUI组件(08)睡眠灭屏 锁屏处理流程
该系列文章总纲链接:专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明: 说明:本章节持续迭代之前章节的思维导图,主要关注左侧上方锁屏分析部分 睡眠灭屏 即可。 Power按键的处理逻辑最终是由PhoneWindowManager来完…...
C# 表达式与运算符
本课要点: 1、表达式的基本概念 2、常用的几种运算符 3、运算符的优先级 4、常见问题 一 表达式 表达式是由运算符和操作数组成的。、-、*和/等都是运算符,操作数包括文本、常量、变量和表达式等。 二 算术运算符 2.1 算术运算符的使用 三 常见错误 …...
SpringBoot--最大连接数和最大并发数
原文网址:SpringBoot--最大连接数和最大并发数-CSDN博客 简介 本文介绍SpringBoot的最大连接数和最大并发数。 配置 SpringBoot默认使用tomcat处理请求。tomcat可以指定连接数、线程数等配置。 server:tomcat:# 请求处理线程都在使用中时,新连接请求…...
CF687D Dividing Kingdom II 题解
Description 给定一个 n n n 个点、 m m m 条边的图,有 q q q 次询问,每次询问一个 [ l , r ] [l,r] [l,r] 的区间,求将 n n n 个点分为两个部分后,编号在 [ l , r ] [l,r] [l,r] 内的边中,两端点属于同一部分的…...
高空抛物AI检测算法:精准防控,技术革新守护城市安全
近年来,随着城市化进程的加速,高楼大厦如雨后春笋般涌现,但随之而来的高空抛物问题却成为城市管理的一大难题。高空抛物不仅严重威胁行人的安全,还可能引发法律纠纷和社会问题。为了有效预防和减少高空抛物事件的发生,…...
html+css+js实现Collapse 折叠面板
实现效果: HTML部分 <div class"collapse"><ul><li><div class"header"><h4>一致性 Consistency</h4><span class"iconfont icon-jiantou"></span></div><div class"…...
RM服务器研究(一)
客户端默认端口是10100: MultiPort.dll BOOL sub_10001070() { UINT v0; // esi BOOL result; // eax CHAR KeyName; // [espCh] [ebp-10Ch] DWORD flOldProtect; // [esp10h] [ebp-108h] CHAR Buffer; // [esp14h] [ebp-104h] char v5; // [esp15h] [e…...
云岚到家xxl job 配置
调度中心: 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码; 主要职责为执行器管理、任务管理、监控运维、日志管理等 任务执行器: 负责接收调度请求并执行任务逻辑; 主要职责是执行任…...
国内动态短效sk5
HTTP爬虫代理,软件测试, 动态转发IP方案,全高匿名,私密IP,固定网关将您每次请求的HTTP重定向到不同的后端IP,支持API;指路小熊IP https://www.xiaoxiongip.com?fromqkJWgD可测...
【路径规划】路径平滑算法,A星算法拐点的圆弧化处理
摘要 A算法广泛应用于路径规划中,但其生成的路径通常在拐点处呈现不平滑的折线。为了提升路径的平滑性,本文提出了一种基于圆弧的平滑处理方法,用于对A算法产生的路径拐点进行优化。通过在MATLAB中进行仿真验证,该方法能够有效减…...
【寻找one piece的算法之路】——双指针算法!他与她是否会相遇呢?
💐个人主页:初晴~ 📚相关专栏:寻找one piece的刷题之路 什么是双指针算法 双指针算法是一种常用的编程技巧,尤其在处理数组和字符串问题时非常有效。这种方法的核心思想是使用两个指针来遍历数据结构,这两…...
UFS 3.1架构简介
整个UFS协议栈可以分为三层:应用层(UFS Application Layer(UAP)),传输层(UFS Transport Layer(UTP)),链路层(UIC InterConnect Layer(UIC))。应用层发出SCSI命令(UFS没有自己的命令使用的是简化的SCSI命令),在传输层将SCSI分装为UPIU,再经过链路层将命令发送给Devices。下…...
注册安全分析报告:科研诚信查询平台无验证方式导致安全隐患
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...
04.useTitle
在 React 应用中,动态更新页面标题是提升用户体验的一个重要方面。它可以让用户更清楚地知道当前页面的内容或状态,特别是在单页应用(SPA)中。useTitle 钩子提供了一种简单而有效的方式来管理文档标题。以下是如何实现和使用这个自定义钩子: const useTitle = title =>…...
ROS2中的srv、action、发布订阅三种方式
ROS2中的srv、action、发布订阅三种方式 以下是ROS2中srv、action、发布订阅三种方式的差异和使用场景的表格形式呈现: 特性/方式srv(服务)action(动作)发布订阅(Publish-Subscribe)通信模式请…...
HarmonyOS/OpenHarmony 自定义弹窗页面级层级控制解决方案
关键词:CuntomDialog自定义弹窗、SubWindow子窗口、页面级、弹窗层级控制、鸿蒙、弹窗展示层级异常 问题存在API版本:API10 - API12(该问题已反馈,期望后续官方能增加页面级控制能力) 在正常的鸿蒙app开发过程中&…...
C/C++进阶(一)--内存管理
更多精彩内容..... 🎉❤️播主の主页✨😘 Stark、-CSDN博客 本文所在专栏: 学习专栏C语言_Stark、的博客-CSDN博客 其它专栏: 数据结构与算法_Stark、的博客-CSDN博客 项目实战C系列_Stark、的博客-CSDN博客 座右铭&a…...
docker-compose 快速部署clickhouse集群
在本教程中,我们将学习如何使用 Docker Compose 部署一个带有三节点的 ClickHouse 集群,并使用 ZooKeeper 作为分布式协调服务。 前提条件 注意事项: 镜像版本号注意保持一致 [zookeeper:3.7, clickhouse/clickhouse-server:22.5.4]config…...
闯关训练三:Git 基础知识
任务1: 破冰活动:自我介绍 点击Fork目标项目,创建一个新的Fork 获取仓库链接 在连接好开发机的vscode终端中逐行执行以下代码: git clone https://github.com/KelvinIII/Tutorial.git # 修改为自己frok的仓库 cd Tutorial/ git branch -a g…...
有哪些做网站的品牌/百度收录技巧
现在大家应该都知道mysql版本中已经不支持直接的递归查询了,但是我们可以通过递归到迭代转化的思路是实现树的递归查询,接下来我们就一起去看看SQL实现MYSQL递归查询的方法。创建表格CREATE TABLE treenodes (id int , -- 节点IDnodename varchar (60), …...
做网站广告联盟赚钱/网站策划书怎么写
可能放在旧考纲前也就是21年之前,难度还没有那么大; 但是现在采用了新考纲,也通过22年的6月和7月首次采用新考纲的两次考试来看,目前PMP考试是有一定的难度的。 你可能会问什么是新考纲?有何变化?难在哪里…...
做招聘网站都需要什么手续/广州seo网站
一、import import在引入文件路径时,引入一个依赖包,不需要相对路径。如:import app from ‘app’;,但引入一个自己写的js文件,是需要相对路径的。如:import app from ‘./app.js’;。 引入第三方插件 i…...
唐山企业网站模板建站/关键词是什么
最近我读了一本好书:克里斯安德森所著的《免费》,让我受益颇多,印象最深的就是其推崇的“物以稀为贵”的概念。首先,所谓的“物以稀为贵”,应该很容易理解,稀缺是所有事物的一个极端,而与之对应…...
wordpress 加速会/seo线下培训机构
之前给大家讲述了文本处理三剑客前两种,grep和sed。但是这周学习了第三种awk,感觉awk比前两个功能还要强大,相比sed也是以行进行处理,但是awk能以每一行的间隔符进行处理,用起来会更加方便。因此决定这周给大家详细介绍…...
pw网站更换域名/seo对网店推广的作用有哪些
四、队列的使用(基于内存 和 基于数据库) 2018年10月23日 10:34:13 齐大圣2012 阅读数:169 转载自:https://blog.csdn.net/yang5726685/article/details/54234569 今天跟大家来看看如何在项目中使用队列。首先我们要知道使用队…...