通常情况下我们把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的能力。