[内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~

Python自动化测试全栈+性能测试全栈,挑战年薪40W+

后疫情时代,已经不对感染人群做分析了,那过去我们是如何追踪的?依靠链路追踪,通过数据分析,然后分块治之,精准定位。

测试也是如此,准确识别每一个被测逻辑的执行路径,准确定位过程,才能知己知彼,百战不殆。行业内有许多的测试手段,如静态代码分析、动态代码扫描、功能测试用例穷举、单测用例覆盖等等,本文不做赘述和分析。

本文浅谈一下代码的“行车记录仪”----日志,在测试技术中的应用。

一 、代码和日志相辅相成

码农界有传言“线上问题定位不到的时候,才知道该在哪里打日志”,代码的每一次运行都可能因为不同的干扰因素,使其“脱离正轨”,每一次执行都可能因为某些异常、判断条件而执行不同的代码段。

日志的链路追踪,代码的执行过程记录,在生产中尤为重要。日志不仅能够记录代码执行路径;也可以作为监控分析的数据来源;可以及时提示代码异常;也能够为基础监控建设提供可靠依据;更为测试工作提供更多的执行过程信息。

日志不止是开发者要关心的部分,测试同学对日志的记录情况,日志的书写规范和日志的必要性也要有独特的见解,如此,才能更好的为线上质量保驾护航。

二、日志辅助测试的案例化分析

那什么场景必须用到日志来做辅助测试呢?

黑盒的玩法设计    

什么是黑盒的玩法设计?我们来举个例子:当开发对一个抽奖的sdk设计了A、B、C、D四种精细化的算法,每一种算法都根据随机概率选择的选中一个奖品,最终输出该奖品结果。

可以看到,概率性这个概念就很模糊了,正如数学概率题一般,我们即使知道概率是多少,也不能完全准确预判出结果。那么这个选择的过程就尤为重要,到底命中了哪种算法?又以多少概率选中了结果?

类似于这样的,具备以下特征的,我暂且称为较黑盒的玩法:

1.无持久化过程:只有开始和结束,没有持久化的设计,过程迅速且黑盒。

2.无交互:处理的业务场景都几乎没有交互,只有数据被改变,后续逻辑才有交互。

3.速度快:处理速度快,一般在丛开始到结束,在ms级别。

4.风险高:逻辑如果有误,一般会导致数据错误,容易引发较严重的线上故障。数据修复成本高。

5.知依赖:依赖上下游信息,一般不可考证上下游信息准确度,数据和信息准确度及逻辑未知。

下面我们结合案例分析来看一下日志在测试中的重要作用:

以pk玩法,赛道划分及比赛逻辑的技术设计图为例,我们可以看到下图中逻辑的中转和出口相较于整个玩法逻辑的设计是较少的。大部分的中间状态和逻辑很难从功能角度观察到。

(蓝色表示逻辑出口,绿色部分为数据持久化部分)

测试工作最重要的是以事实为依据,所以,我们绝对不能仅通过对结果的预测和比较来判断代码的运行逻辑是否正常。

所以,针对上述案例,对于这种服务端逻辑较重,中间数据流转逻辑复杂,没有过多页面交互和数据落地的玩法,有效的通过日志手段的测试方式如下:

红色箭头为判断逻辑,判断逻辑需要有日志,可以查询到一次脚本中拉取到的数据和实际判断的逻辑信息。黄色部分为调用其他服务获取到的主播或者房间信息,外部调用链需要有接口请求信息和response信息。可以为问题排查和逻辑判断提供数据依据。红色方框部分为很重要的,服务端使用数据结构做数据处理的部分,这部分需要日志信息。防止数据结构使用不当等问题的发生。

日志判断的合理位置:

  • 1.有条件判断的地方 if,else,case,三目运算符等位置。

  • 2.有外部接口调用的位置,需要准确得到被调用方返回的数据信息。

  • 3.数据结构使用的位置,需要明确感知到数据结构处理前后逻辑和数据是否合理。

  • 4.循环调用的过程,需要明确能够看到执行路径和次数,防止循环提前退出或者发生处理异常的情况。

三、日志可带来的

风险识别和故障预警效用

日志在日常的项目是很有效的一种可以追溯用户行为的方式。不仅可以作为问题响应和发现的指示灯,也可以用作服务健康巡检的指标。除此之外,用来进行数据统计,用户行为分析,进行线上质量运营和后期优化也是一种不错的数据收集的手段。

线上日志多用来进行监控的建设,线上的质量分析,问题的追溯以及服务健康的指标制定。也是线上用户行为分析的一项有利的数据参考依据。甚至日志和监控数据还可用于生成过程中的海量样本仿真建设。在生产的过程中有着非常重要的作用。

四、日志不是万金油,不可滥用

既然日志的用处这么多,那是不是打日志越多越好呢?显然不是!

日志的增加需要考虑服务的压力和服务的框架设计,日志不是越多越好,在同步流程中,过多的日志会使代码执行速度变慢,会给服务带来无形的压力。能够清晰看到某一条执行路径即可,如果业务逻辑过于复杂,可以加一部分测试时使用的日志,或者使用日志等级降级策略即可。

日常生产的过程中,要着重关注以下几点:

1.唯一的id(uid、traceid等):日志也需要唯一的身份id,以一个唯一id,贯穿整个路径最好。查找日志的过程中,执行路径便会像一个叙事有条理的故事般,逻辑脉络清晰,过程娓娓道来。
2.数据信息简单:不可要求日志中加入统计类运算类日志,日志需要能够直白明确表达出代码执行状态即可。当下有什么数据,便打印什么数据。切忌对日志做逻辑处理。统计和逻辑类的数据操作要使用异步方式去完成。
3.日志等级划分意识:日志在日常的使用和规范中,需要明确划分等级,方便对问题日志进行监控和线上服务故障体系划分(以下做参考)。

日志等级划分:

  • 1.ERROR

    影响程序正常运行、程序出现请求中发生的异常情况。

    如:接口请求失败;第三方对接的异常;程序功能异常,抛出错误堆栈信息;p0级别业务功能异常等

  • 2.WARN

    有告警,但是不影响正常使用,但是出现频率需要严格关注。

    如:找不到对应逻辑配置,走兜底逻辑;容错情况发生;px级别业务逻辑异常返回发生;系统资源告急。

  • 3.INFO

    记录过程信息,对接第三方的源数据信息等,一般无需关注,可用作追踪问题,建设用户数据画像使用。

    如:调用第三方时的调用参数和调用结果;数据源获取到的信息;逻辑处理结果和过程信息;定时任务的开始执行与结束执行。

  • 4.DEBUG

    记录调试信息,可以对系统每个关键性的过程进行更精确地记录。

  • 5.TRACE

    更加详细的服务调用流信息,一般使用(一般请使用DEBUG级别替代)

经常有人说;“好的日志可以一定程度上反映线上服务的质量和问题处理效果”。上述说了很多和日志相关的细节,我们在测试的过程中也要结合过程和结果来衡量一个服务的质量,缺一不可。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

代码的“行车记录仪”,如何借助日志做测试?相关推荐

  1. 不对代码做测试就像“上完厕所不洗手”

    本文转载自InfoQ XML 之父 Tim Bray 在日前发表的一篇博文中,基于自身的多年软件开发经验,分享了关于软件测试的那些事."我非常确信,在我有生之年,对软件发展的最大贡献不是来自 ...

  2. 在阿里做测试已经5年了,回想起当初面试时候背的面试题

    目录 1.你的测试职业发展是什么? 2.你认为测试人员需要具备哪些素质 3.你为什么能够做测试这一行 4.测试的目的是什么? 5.测试分为哪几个阶段? 6.单元测试的测试对象.目的.测试依据.测试方法 ...

  3. idea2020shezhi代码检查级别_优秀的模糊测试代码是如何炼成的?

    所谓模糊测试,是指一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法,它经过了近 20 年的发展,早已在程序员圈中成为一种主流漏洞挖掘技术.基于此,开发者们该如何编写良好的模糊测试代 ...

  4. go 基准测试 找不到函数_基于Golang做测试

    本文在实习期间完成并完善,无任何公司机密,仅做语言交流学习之用. 持续更新. 1.Golang的单元测试 Go语言提供了丰富的单测功能.在Go中,我们通常认为函数是最小的可执行单元.本例中使用两个简单 ...

  5. 如何在复杂的分布式系统中做测试

    在2019欧洲测试大会上,Sarah Wells演讲指出:复杂分布式系统的复杂性并非存在于代码中,而是存在于服务或功能之间:测试就是寻求如何在发现问题与交付价值间达成平衡:测试人员通常具有对系统功能的 ...

  6. 为什么程序员做测试其实是有优势的?这是我听过最....的话

    圈里有这样一个关于测试的段子:每个程序员在修改代码时都希望有测试,但在写代码时,都不想写测试. 希望有测试,是因为测试可以给我们带来安全感.不想写测试,一方面,很多人会觉得麻烦,另一方面,也是更重要的 ...

  7. python做测试需要哪些技能_测试人员需要具备哪些基本技能

    测试人员需要具备哪些基本技能或者素质.这个问题在几年前常见于软件测试工程师笔试题上.对这个问题,我觉得应该有新的解读.现在我们日常工作中需要应对的是,测试和开发的交叉领域,测试和运维的交叉领域.而不再 ...

  8. “我转行做测试开发的这一年多,月薪5K变成了24K”,文科女生的自白

    我是如何开始做测试的? 本人就读于某普通院校,在大学期间就开始实习找工作,误打误撞进入一家做工业大数据的创业公司. 刚开始我并没有明确的职业发展方向,主要是做一些环境搭建的基础工作.但由于执行效率高, ...

  9. 刚做测试工作一年的时候,我是怎样的?

    刚落笔前,我想了好久,该如何诠释这段经历. 也许你现在也和我当时一样,但是,相信我,北京是个有实力说话的好地方,所以让努力擦亮自己,让自己的光显得格外抢眼. 时光仿佛又定格在我刚入京那一刻,一切是那么 ...

最新文章

  1. [BZOJ3329] Xorequ
  2. 为什么美国程序员工作比中国程序员工作轻松、加班少?
  3. linux内核编译与新内核启用
  4. NYOJ6——喷水装置(一)
  5. 单片机设置12分频c语言,AT89C51单片机,如何实现延迟一秒
  6. 主动土工围栏行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. 这里是强化学习入门,的入门 | 绝对新手友好
  8. 简单python脚本实例-Python简单实现阴阳师挂机脚本
  9. JPA EntityManager –HibernateEntityManager
  10. IOS 改变导航栏返回按钮的标题
  11. CSU 1120 病毒(DP)
  12. r语言入门与实践Linux,R 学习笔记《一》----R语言初学者指南
  13. python pygame 的下载方法
  14. 【积累】非常全面的开源数据集
  15. Cloud 2.0时代,华为云EI助力内蒙煤焦化产业走向智能
  16. Python函数定义的高级用法
  17. U盘可见空间只有200M的解决方法
  18. 3.NLP中文分词技术
  19. 明道云APaaS在酒店业中的应用场景例举
  20. com.android.provision基本介绍

热门文章

  1. mac微信小助手WeChatExtension安装教程
  2. 数字孪生-基于ThreeJS的3D可视化技术
  3. 运用PyTorch动手搭建一个共享单车预测器
  4. 四种情况会造成内存的泄漏:
  5. linux系统讯飞输入法,在Deepin Linux 15.11命令行中安装及卸载讯飞输入法的方法
  6. 头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统)——保姆级教程
  7. Android传感器---Environment Sensor
  8. pandas导出excel表格时报错:ValueError: No engine for filetype: ‘‘
  9. 服务器远程桌面连接限制ip,Windows7系统下限制远程桌面ip登陆的3个方法
  10. 两款网络分析工具Sniffer和Wireshark的比较