写点什么

软件测试 | Bug 的定位方法

  • 2023-02-09
    北京
  • 本文字数:2086 字

    阅读完需:约 7 分钟

通常情况下我们把 Bug 分为 4 个类型,分被是功能、性能、安全和专项质量。功能类型关注于系统业务流程是否正确,心梗类型关注与系统业务流程是否顺畅;安全类型判断系统是否存在漏洞,是否符合安全标准与规范;专项质量通常关注与系统的用户体验(UX)、兼容性、稳定性和可靠性。

1.掌握 Bug 定位的重要性

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

2.Bug 表现层

(1)条件:测试数据

(2)过程:测试步骤

(3)结果:测试结果

3.技术架构层次

我们把软件从技术架构层次上分为 3 层,即视图层(View)、控制层(Controller)和模型层(Model)。由于 Web 和 App 在具体的层次上,因此我们关注的技术方向是不同的,具体如下。


视图层(View),网页开发(HTML、CSS 样式等),移动应用 App(Activity 页面、View 组件等)。


控制层(Controller),网页开发的工具(Chrome Devtool),移动应用使用的工具。


模型层(Model),模型的传递方式(HTTP、TCP、RPC 串口),模型的形式(JSON XML binary)。

4.MVC 三层分析法

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

5.View 层常用分析方法

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

6.Controller 层常用分析方法

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

7.Model 层常用分析方法

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

8.Web Bug 分析方法

(1)Web UI View 层 Bug 分析方法


界面展示主要是依赖于 HTML、CSS、JS(JavaScript),可以使用 Chrome 开发者工具的 elements 和 style 两个板块来分析界面,elements 可以展示具体空间,空间格式通过 style 来确定,有次来判断是否是样式、布局或输出方面的问题。如同 1-43 所示为 style 板块的内容。


(2)Web Controller 层分析方法


程序员用 JavaScript 根据操作流程对代码进行修改的结果,如图 1-44 所示,底层逻辑的错误在 Console 板块会展示出详细的出错信息。而用 source 模块可以对错误进行定位,并通过 Debug 分析问题存在的上下文,找到代码问题的根源所在。



(3)Web Model 层分析方法—分析数据传递方式与结构


Medel 层分析方法是基于运行平台的 log,例如 Chrome 的 network 模块分析请求方式和数据的具体情况。链路分析使用代理工具,常用的有 Fiddler、Charles 和 Mitmproxy 以及网络层的嗅探(常用的工具有 Tcpdump 和 Wireshark)。Chrome 的 network 模块如图 1-45



9.App Bug 分析方法

(1)App View 层 Bug 分析


App 的 UI 界面交互和 UX/UE 用户体验目前常用的是人工校验的方式,以自动化作为辅助手段,用 UI Diff 的方式分析,尝试发现界面中存在的问题,其中人工测试能够发现未知特征的 Bug,自动化测试可以断言常用功能是否整成,通过 UI Diff 可以发现界面结构细节的问题。如图 1-46 和图 1-47 所示是两个存在 Bug 的 App 界面。




(2)App Controller 层分析


通过 logcat 分析 App runtime 日志。如图 1-48 和图 1-49 所示是两个 logcat 的内容。




(3)App Model 层分析方式


根据平台本身提供的 log 或者运行平台的调试工作,利用应用的日志,通过朱总模式分析链路问题。通过追踪模式分析链路问题,可以使用代理工具(如 Charles、Fiddler、Mitmproxy、嗅探)进行抓包分析,也可以使用 Wireshark、Tcpdump 工具分析链路,从而找到 Bug 相应的日志,定位到问题,辅助开发人员尽快解决代码中的问题。


(4)Android Profile 网络分析


Android 提供的工具对 App 交互的网络请求进行中间过程的分析。如图 1-50 所示是 Android ProFile 的分析内容。


(5)使用代理工具分析


当工具本身不可调试时,可以使用代理工具分析。如图 1-51 所示是 Charles 代理工具。



(6)网络层协议分析


通过 Tcpdump 对程序进行抓包,并导入 Wireshark 进行分析。如图 1-52 和 1-53 所示是 Tcpdump 抓包和 Wireshark 分析内容。




10.性能 Bug 分析方法

(1)H5 性能分析方法


H5 的性能分析方法通常对网页加载的过程进行分析,通过 W3C 定义的 PerformanceAPI 对程序每个阶段发生的问题进行统计,需要各个浏览器支持对性能方面的分析。如图 1-54 所示是 performanceAPI 所涉及的阶段。



(2)利用 Chrome 分析 Web 性能


图 1-55 所示是使用 Chrome 开发者工具分析出的有关 Web 性能的内容。



(3)分析性能瓶颈,使用 Profile 进行代码剖析


图 1-56 所示是使用 Profile 进行代码分析的结果。



(4)代码覆盖率分析方法


图 1-57 和图 1-58 所示是使用 JaCoCo 得到的代码覆盖率的结果。


11.总结


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



搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核


用户头像

社区:ceshiren.com 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | Bug的定位方法_测试_测吧(北京)科技有限公司_InfoQ写作社区