文章分类 - 极客时间
摘要:在性能测试中,我们要关注的数据主要有以下几类,分别是参数化数据、监控数据和基础铺底数据。 我们今天先描述第一种参数化数据,在后面的文章中再描述其他数据。 首先我们需要了解,为什么要关注性能场景中的参数化数据呢?我以下面的两个例子说明一下。 在我的工作经历中,见过很多初级性能测试工程师不知道如何设置合
阅读全文
摘要:当前使用得最为广泛的应用层协议就是HTTP了。我想了好久,还是觉得应该把HTTP协议写一下。 因为做性能测试分析的人来说,HTTP协议可能是绕不过去的一个槛。在讲HTTP之前,我们得先知道一些基本的信息。 HTTP(HyperText Transfer Protocol,超文本传输协议),显然是规定
阅读全文
摘要:今天我们来做一个实例,看下在JMeter中,如何合理地设置参数化数据。 正式场景前的基准测试 在没有做业务混合场景之前,我们需要先做Benchmark测试,来确定一个登录业务能支持多少的业务量,这样就可以在业务混合场景中,根据场景中各业务的比例来确定登录的数据需要多少真实的数据。 我们继续用上一篇文
阅读全文
摘要:对每一个性能测试工具来说,关联和断言都是应该具备的基本功能。 但是有很多新手对关联的逻辑并不是十分理解,甚至有人觉得关联和参数化是一样的,因为它们用的都是动态的数据,并且关联过来的数据也可以用到参数化中,但不一样的点是,关联的数据后续脚本中会用到,参数化则不会。断言倒是比较容易理解,就是做判断。 那
阅读全文
摘要:对于一个性能测试工具来说,如果能实现以下几大功能,那么就基本上就满足了性能测试工具的功能。 录制或编写脚本功能 参数化功能 关联功能 场景功能 报告生成功能 但是除此以外,在工作的细节上还有更多要求,就要看工具的实施能力了。 有很多性能测试工程师希望工具能做得非常全面,又人性化,而纵观当前的性能工具
阅读全文
摘要:我还年轻的时候,经常听一些大会或者演讲。有些人说,思路逻辑非常重要。我那时就想,你肯定是瞎忽悠的,因为我怎么就没听懂你说的思路呢? 而现在轮到自己来写或者讲一些东西的时候,才发现他们说得很对,而我之所以不理解,也是有原因的。 性能分析思路和具体的实现之间,有一道鸿沟,那就是操作的能力。之前我为什么听
阅读全文
摘要:我在性能综述的那三篇文章中,描述了各种指标,比如TPS、RPS、QPS、HPS、CPM等。我也强调了,我们在实际工作的时候,应该对这些概念有统一的认识。 这样的话,在使用过程中,一个团队或企业从上到下都具有同样的概念意识,就可以避免出现沟通上的偏差。 我说一个故事。 我以前接触过一个咨询项目。在我接
阅读全文
摘要:做性能测试工作的人总是离不了性能测试工具,但当我们刚开始接触这类工具或者压测平台的时候,总是难免处在一种顾此失彼,焦虑又没想法的状态。 性能工程师的三大学习阶段 在我看来,对性能测试工程师本身来,多半会处在以下三个大的阶段。 性能工具学习期 JMeter和LoadRunner是我们常用的两个性能测试
阅读全文
摘要:在上一篇文章中,我们讲述了性能场景,下面就要说性能需求指标了。 通常我们都从两个层面定义性能场景的需求指标:业务指标和技术指标。 这两个层面需要有映射关系,技术指标不能脱离业务指标。一旦脱离,你会发现你能回答“一个系统在多少响应时间之下能支持多少TPS”这样的问题,但是回答不了“业务状态是什么”的问
阅读全文
摘要:我们在上一篇文章中讲了性能测试的概念,肯定会有人觉得,那些概念很重要,怎么能轻易抹杀呢?那么,在今天的文章中,我们就来扒一扒性能场景,看看概念与实际之间的差别。 前面我们说了性能要有场景,也说了性能场景要有基准性能场景、容量性能场景、稳定性性能场景、异常性能场景。在我有限的十几年性能生涯中,从来没有
阅读全文
摘要:在性能测试行业中,长久以来,都存在几个关键的概念误差。在我从业性能测试十几年的经历中,也看到过书籍或网上传播着各种性能测试的概念、方法论等,但是究其本质,再对应到具体的项目工作中,我发现这些概念以及方法论实在没有指导的价值,并且有些概念的产出,也没有确凿的证据来源。 所以在今天,专栏正式更新的第一天
阅读全文
摘要:你好,我是高楼,网名叫Zee。 很高兴能在这里和你聊性能测试。 在课程开始之前,我先介绍下我自己的从业经历。 从2005年毕业开始,除了第一年在做路由器方面的功能、性能测试之外,我后面的工作几乎都是围绕着性能测试分析展开的。 那时我还年轻,喜欢混迹于各大测试论坛,从而认识了很多行业内的高手,很多人也
阅读全文
摘要:不知不觉,一年就这样过去了。这个专栏也到了结束的时候。在结束的时候,我需要跟大家正式说声再见,同时也谢谢各位对本专栏的厚爱,并希望大家从我的专栏里有所收获。我也借最后这个结束语回顾一下整个过程。 老实说,在本专栏刚开始的时候,我对于这个专栏要写点什么是完全没有什么清晰的想法。一方面,我从来没有干过这
阅读全文
摘要:你好,我是陈皓,网名左耳朵耗子。 也许是人到了四十多了,才敢写这么大的命题。不过,我还是想把我的想法记录下来,算是对我思考的一个“快照”(snapshot),给未来的我看看。我想这篇文章要么被未来的我打脸,要么打未来我的脸。但不管怎么样,我觉得对自己来说都很有意义。 我在标题中提到的“三观”指的是世
阅读全文
摘要:你好,我是陈皓,网名左耳朵耗子。 这节课,我着重介绍一下Go编程中的Pipeline模式。对于Pipeline,用过Unix/Linux命令行的人都不会陌生,它是一种把各种命令拼接起来完成一个更强功能的技术方法。 现在的流式处理、函数式编程、应用网关对微服务进行简单的API编排,其实都是受Pipel
阅读全文
摘要:你好,我是陈皓,网名左耳朵耗子。 这节课,我们来重点讨论一下,Kubernetes 的 kubectl 命令中的使用到的一个编程模式:Visitor(其实,kubectl 主要使用到了两个,一个是Builder,另一个是Visitor)。 本来,Visitor 是面向对象设计模式中一个很重要的设计模
阅读全文
摘要:你好,我是陈皓,网名左耳朵耗子。 之前,我写过一篇文章《Python修饰器的函数式编程》,这种模式可以很轻松地把一些函数装配到另外一些函数上,让你的代码更加简单,也可以让一些“小功能型”的代码复用性更高,让代码中的函数可以像乐高玩具那样自由地拼装。 所以,一直以来,我都对修饰器(Decoration
阅读全文
摘要:你好,我是陈皓,网名左耳朵耗子。 这节课,我们来学习一下Go语言的代码生成的玩法。 Go语言的代码生成主要还是用来解决编程泛型的问题。泛型编程主要是解决这样一个问题:因为静态类型语言有类型,所以,相关的算法或是对数据处理的程序会因为类型不同而需要复制一份,这样会导致数据类型和算法功能耦合。 我之所以
阅读全文
摘要:你好,我是陈皓,网名左耳朵耗子。 这节课,我们来学习一下函数式编程中非常重要的Map、Reduce、Filter这三种操作。这三种操作可以让我们轻松灵活地进行一些数据处理,毕竟,我们的程序大多数情况下都在倒腾数据。尤其是对于一些需要统计的业务场景来说,Map、Reduce、Filter是非常通用的玩
阅读全文
摘要:你好,我是陈皓,网名左耳朵耗子。 控制反转(Inversion of Control,loC )是一种软件设计的方法,它的主要思想是把控制逻辑与业务逻辑分开,不要在业务逻辑里写控制逻辑,因为这样会让控制逻辑依赖于业务逻辑,而是反过来,让业务逻辑依赖控制逻辑。 我之前在《IoC/DIP其实是一种管理思
阅读全文