技术分享 | Bug定位方法

简介: 通常情况下 Bug 分为四个类型,分别是功能、性能、安全和专项质量。功能级别关注于业务流程是否正确。性能级别关注于业务流程是否顺畅。安全方面判断是否存在漏洞,是否符合安全标准与规范。专项质量通常关注于用户体验 UX、兼容性、稳定性和可靠性。

通常情况下 Bug 分为四个类型,分别是功能、性能、安全和专项质量。功能级别关注于业务流程是否正确。性能级别关注于业务流程是否顺畅。安全方面判断是否存在漏洞,是否符合安全标准与规范。专项质量通常关注于用户体验 UX、兼容性、稳定性和可靠性。

为什么需要掌握bug定位

软件测试人员的首要任务就是发现 Bug ,发现之后提交 Bug 给开发人员进行修复。掌握 Bug 定位可以在提交 Bug 时追加更多有用信息,方便研发更快解决问题。通过分析 Bug 的形成原因,更有效率的进行溯源并建立特征进行批量追踪。

bug表现层

  • 条件:测试数据;
  • 过程:测试步骤;
  • 结果:测试结果。

技术架构层次

软件从技术架构层次分析一般分为三层,即视图层 View、控制层 Controller 和模型层 Model。而 web 和 app 在具体的层次关注的技术方向也是不同的,具体如下:

  • 视图层 View:
  • web:UI HTML CSS;
  • app:activity view;
  • 控制层 Controller
  • web:chrome、devtool;
  • app:dalvik art objectc-runtime;
  • 模型层 Model:
  • 模型的传递方式:http tcp rpc 串口;
  • 模型的形式:json xml binary;
  • 模型定义:schema。

MVC三层分析法

Bug 的定位往往也会依照软件技术架构层次采用 MVC 三层分析方法,分析 View 层、Controller 层和 Model 层的运行平台、应用调试机制和链路。

View 层常见的问题是 UI(User Interface)用户界面和 UE(User Experience)用户体验。目前常采用人工测试和自动化测试,通过人工校验为主自动化校验为辅的方式检验界面交互的准确性以及用户体验感受。此外利用 UI 的 Diff 对比分析界面变化,定位更深层次的问题。

Controller 层通过平台自主提供的日志(log)以及应用程序本身提供的应用调试日志(debug trace hook profile)分析代码层次的逻辑问题。

Model 层根据运行平台的 log、app 调试机制以及链路来具体分析问题。

web bug 分析方法

界面展示主要依赖于 html、css、js,可以使用 chrome 开发者工具的 elements 和 style 两个板块来分析,elenments 可以展示具体控件,控件格式通过 style 来确定,由此来判断是否是样式、布局或输出方面的问题。

界面展示是 javascript 根据操作流程对代码进行修改的结果,底层逻辑的错误在 console 板块会展示出详细的出错信息。而 source 模块可以对错误进行定位通过 debug 分析问题的上下文,找到代码问题的根源所在。

基于运行平台的 log,例如 chrome 的 network 模块分析请求方式和数据的具体情况。链路分析使用代理工具 proxy,常用的有 fiddler、charles 和 mitmproxy 以及网络层的嗅探,常用的有 tcpdump 和 wireshark。

app bug 分析方法

app 的 UI 界面交互和 UX/UE 用户体验目前常用的是人工校验的方式,以自动化作为辅助工具以及 UI Diff 的方式分析,尝试发现界面中存在的问题,其中人工测试能够发现未知特征的 bug,自动化测试可以断言常用功能是否正常,通过 UI Diff 可以发现界面结构细节的问题。

通过 logcat 分析 app runtime 日志。

根据平台本身提供的 log 或者运行平台的调试工具,利用应用的日志分析以及建立追踪模式分析链路的问题,通过代理抓包 charles、fiddler、mitmproxy 或者嗅探抓包,wireshark、tcpdump 的方式分析链路。

安卓提供的工具,对 app 交互发生的网络请求进行中间过程的分析。

当工具本身不可调试时,可以使用代理工具分析。

通过 tcpdump 抓包,导入 wireshark 进行分析。

性能 bug 分析方法

H5的性能问题通常对网页加载的过程进行分析,通过 w3c 定义的 performance api 对每个阶段发生的问题进行统计,需要各个浏览器支持对性能方面的分析。

分析应用运行时代码的具体时间。

总结

定位 Bug 首先要明确 Bug 问题的现象和复现步骤,通过分层分析关键过程的数据与问题特征,积累 Bug 特征与问题根源特征,丰富测试经验,提高 Bug 发现的能力。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
1月前
|
人工智能 搜索推荐 专有云
构建会思考的测试Agent:从自动化到自主智能的演进
本文介绍面向企业级软件测试的“质量数字人系统”,融合大语言模型(LLM)、多Agent协同架构与Skill Engine技能框架,实现从自动化测试到自主智能测试的跨越。核心能力包括:声明式技能引擎、双层自主意识(规则+目标驱动)、多渠道人机交互、智能任务推荐与预测试,以及以人设、知识库、履职规范、自主意识、技能集五位一体的数字人闭环体系。
构建会思考的测试Agent:从自动化到自主智能的演进
|
7月前
|
人工智能 数据可视化 测试技术
Coze教程 | 第3章:核心功能 - 智能体(Agent)创建与角色设计
Coze平台的智能体(Agent)是由大语言模型驱动,具备身份、知识、技能和交互能力的AI实体。它通过插件、知识库和工作流扩展功能,适用于客户服务、数据查询、测试辅助等多种场景。智能体支持单Agent自主对话或结构化流程执行,也可多Agent协作处理复杂任务。创建时需选择合适模型并配置参数,通过系统提示词定义角色、技能与限制,并结合知识库、插件和工作流提升专业性与实用性,最终实现高效自然的人机交互。
|
存储 人工智能 编解码
adobe全家桶2023百度网盘分享
最新Adobe2023全集桶 正式版,更强大的内容,更完善的功能,更全面的软件,给你带来全新不一样的体验。今天我为各位小伙伴们找到了Adobe全家桶的下载资源,不用再瞎找了,这篇文章就够了。含PS、PR、DW、LR、AE、ID、AI、XD、AU、RU等等。(收集不易,感谢支持) !
4751 2
|
11月前
|
Java
IDEA修改JDK版本
在IDEA中修改项目JDK版本的方法如下:1. 右键点击项目;2. 选择“Open Module Settings”,如图所示;3. 在弹出窗口中配置自定义的JDK路径。通过以上步骤,可轻松更改项目所使用的JDK版本,满足不同开发环境的需求。
3415 65
|
运维 安全 网络安全
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
561 0
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
|
敏捷开发 编解码 安全
测试面试题集锦(一)| 软件测试常见必考问题与流程篇(附答案)
本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的、网络搜集(完善)、工作日常讨论等,分为以下十个部分,供大家参考。如有错误的地方,欢迎指正。有更多的面试题或面试中遇到的坑,也欢迎补充分享。希望大家都能找到满意的工作,共勉之!
测试面试题集锦(一)| 软件测试常见必考问题与流程篇(附答案)
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
1391 2
|
Shell
SHELL下如何去掉字串里的空格(或指定字符)
SHELL下如何去掉字串里的空格(或指定字符)
1207 0
|
自然语言处理 安全 算法
【Qt 基础 】深入理解Qt:qApp的全面掌握与实践
【Qt 基础 】深入理解Qt:qApp的全面掌握与实践
1085 1
Qt之使用图片填充QLabel
Qt之使用图片填充QLabel
1249 1

热门文章

最新文章

下一篇
开通oss服务