问题最近几年虽然微服务十分火热,但是仍然有不少人不喜欢微服务,甚至抵制它。其中最主要的原因就是其成本高,难度大。就困难而言,主要是遇到了一些不易解决的问题,其中包括以下三个与测试数据和测试环境有关的问题:问题一:测试环境被多个团队共同使用在大规模的微服务系统中,某些核心服务很多时候都是会被多个团队在共同调用,并且它可能也有多个依赖服务。而当一个服务的某个测试环境被多个团队(服务)共同使用的时候,主要会存在以下两个困难点。1、同一测试数据可能会被不同的团队修改。有些团队通过创建多套测试环境来解决这个问题,但是这样的成本很高。对于很多技术强大的互联网公司,可以通过 Docker 等技术手段来...

概述很多测试人员对于性能测试实践的机会不多,所以很难获得相关的实践经验,也很难系统的总结出性能测试相关的知识。为了方便大家能快速的系统的从整体上了解性能测试,我总结了性能测试洞见101系列文章,今天就让我们来聊聊服务器端系统性能测试。特点首先,总体上来讲,服务器端系统性能测试具有以下三个特点:需求比较困难技术相对简单 过程十分繁琐性能需求的获取一般都是十分困难的,因为很少有人能明确地提出性能需求,要么是新系统,不知道生产环境的性能需求是多少;要么就是不懂技术,无法提出正确合理的性能需求等。对于无法获得性能需求的项目,通常只能通过压力测试后并找到系统的性能极限,反过来把实际的性能指标给客户...

性能测试之并发模型对比(JMeter,Locust和Gatling篇)起因最近不少公众号和在线课程都在讨论性能测试和性能工程,但是鲜有涉及开源性能测试工具的比较与选择。几年前我就写过一篇介绍Gatling的文章《一代服务器性能测试工具Gatling》,里面简单的比较了JMeter和Gatling自身性能和开发形式。现在最为常用的三款开源免费性能测试工具/框架就是JMeter,Locust和Gatling。为了帮助大家更好地理解和选择它们,我将从并发模型角度来介绍并比较它们。并发说到并发,我们首先想到的就是服务端系统的并发模型,现在常见的并发模型有多线程模型,事件循环模型,Actor模型和...

最近随着敏捷测试在中国测试届风起云涌,其中包括不少公开课以及各种文章和在线分享,越来越多的人开始关注敏捷测试和敏捷开发。不过仍然有不少人对敏捷测试和敏捷开发提出了质疑,其中最典型的就是:敏捷测试和敏捷开发只适合小型项目玩一下,不适合大项目,因为一般大型项目质量要求非常高,敏捷做不到高质量敏捷开发没有完备的文档,难以维护,质量难以维系敏捷测试没有完整的测试用例,很难进行全回归测试,无法保证质量理论上同样的团队在单位时间内获得的质量,瀑布要比敏捷高。但是这里有几个前提常常被人忽略,那就是软件需求必须一开始就能确定并且能分析和设计得十分清楚,其次开发过程中不能有大的变动,最后不需要频繁发布。如...

起因在前两篇《TDD之让我们再聊聊TDD》 和《 TDD之让我们再聊聊TDD(续)》 中我们聊了很多TDD理论和实践相关的疑惑,其中包括TDD的分类,选择以及其实施步骤。最近TDD相关的培训和讨论也越来越多,还提出了很多独特的观点,比如:软件没有做好就是因为TDD没有做好TDD没有做好所以软件也做不好学好TDD靠多多练习就可以了,不用学习其理论知识开发应该自己理解业务,并提炼测试(需求)点来实施TDD开发只要做好TDD,就不需要其他人测试了等等对于这些观点我有不同的看法,比如我在第一篇讨论中就提到,TDD不是银弹,所以软件没有做好的原因是很多的,也不是靠TDD做好了就一定能做好。其次学习...

我的同事肖然在 《ThoughtWorks的敏捷开发》一文中介绍了ThoughtWorks敏捷开发的全貌,并在其中简单介绍了ThoughtWorks是怎么做质量内建和敏捷测试的。我作为一名加入ThoughtWorks已经7年的QA,想更为详细的介绍一下这些内容,希望能帮助业界中仍对于敏捷测试有疑虑和困惑的团队建立起自己的敏捷测试体系和实践,从而帮助团队更好的实施敏捷软件开发。在目前的软件开发领域,敏捷依然没有被广为采用,很多人诟病其:开发速度其实并不比传统的开发方式快软件质量得不到保证无法应用于大规模软件开发文档少导致开发出来的软件难以维护……其实大多都是在不了解敏捷开发中质量内建与敏捷...

前言软件安全一直被视为一项神秘而又高级的领域,其中的软件安全开发和安全测试更是很多普通的开发者和测试人员难以企及的工作。但是对于常规的安全开发和安全测试,普通的开发人员和测试人员是可以担任的。而且通过这些常规的安全开发和安全测试,可以预防绝大部分中低级安全漏洞。为什么要做威胁建模软件的安全漏洞主要来自业务需求,业务流程,软件架构,代码开发和第三方依赖包等,并不是仅仅来自某一个单一方面。并且由于某一类角色基本上很难对于业务需求,软件架构,代码细节以及各种基础设施等都很熟悉,因此对于软件系统的全方位的安全漏洞,如果仅仅希望由某几个安全测试人员通过安全测试去发现是非常困难的。所以需要有一种体系...

介绍在黑客攻击软件系统出现之前,软件行业没有安全测试这个概念。但是在兴趣和金钱等利益的驱使下,一部分人开始通过各种技术手段对软件进行攻击,从而获得非法信息,并从中获利,然后这部分人被称之为黑帽(注:黑帽用来比喻进行网络入侵、使用计算机病毒等阴谋诡计的恶意攻击者,他可能是拥有黑客水平的一些专业人士,也可以是只会用一些攻击工具和脚本的一些孩子。而黑客这个词本身是指十分热心钻研计算机技术,水平高超,在一般的程序员眼里差不多是无所不能的资深专家,所以这里不用黑客来描述坏人)。为了阻止黑帽者对软件系统的攻击,反制措施一般有两种。第一种就是在软件系统前面加设一层护盾,对于WEB服务器可以是WAF(W...

最近十到二十年,软件业迎来了一个超高速发展期,其中软件测试相对于软件开发进展稍微缓慢一点,不过也出现了不少新的思想、技术以及趋势。基于现阶段在客户现场、业界大会、与专家的讨论以及从网上看到的相关内容,我尝试在本篇文章中总结出几个测试新趋势:AI+测试利用AI(深度学习等)系统来辅助测试工作绝对是最近几年最为热门的一个测试趋势,其中包括测试用例,测试数据和测试代码的自动生成、大规模测试结果分析、自动化探索性测试、缺陷定位等,美国已经有多个公司推出了商用的AI测试工具。在朱少民老师的公众号“软件质量报道”中就有一篇名为《未来已来,人工智能测试势不可挡:介绍9款AI测试工具》的文章,里面介绍了...

性能测试对于大部分测试人员都是一个神秘地带,因为在很多公司,性能测试都是由一个性能测试团队来做,所以普通测试人员没有机会接触到真实的性能测试,因而很难学习到很多新的测试实践知识。市面上现在有非常多关于性能测试的书籍,其中不少书籍都能够系统地介绍性能测试。今天我想通过另一种方式来介绍性能测试,那就是通过提出一些关于性能测试的问题,然后针对问题进行思考。希望通过不一样的方式让读者以另外一种视角来思考和学习性能测试实践。1、如何在敏捷开发中做性能测试?敏捷开发,由于其持续集成、快速反馈等特点,需要性能测试工具支持轻量化、集成CI服务器、全代码化等特性,所以传统的性能测试工具比如JMeter和L...