测试不将就

高质量软件养成之道

持续集成:偶现问题应对策略

在《持续集成:稳定性压倒一切》一文中,我介绍了影响持续集成(Continuous Integration, CI,由Pre-merge CI和Post-merge CI两阶段组成)稳定性的必现问题的应对方法。需要注意的是,持续集成中的稳定性问题,既可能是必现(Permanent)问题,也可能是偶现(Occasional)问题。 所谓必现问题,就是重复执行能够必然(100%)复现(Repro...

持续集成:稳定性压倒一切

在《持续集成的初心》一文中,我讲到持续集成存在的目的是验证开发者(Developer)的代码改动是否能够合入代码主干(Master)。持续集成能否实现这一目的,关键在于持续集成是否足够稳定。稳定性是持续集成第一位的内在要求。 什么是持续集成的稳定性?可以从两个角度理解。一方面,当没有代码改动时,持续集成是否在主干代码上能够稳定地成功?另一方面,当开发者提交了一个会破坏主干的代码改动时,持续...

持续集成:你不可不知的两阶段性质

在《持续集成的初心》一文中,我们讲到持续集成(Continuous Integration, CI)是由开发者提交代码改动所触发的,目的是验证代码改动是否能够合入(Merge)到主干(Master)的软件活动。 为了实现这一目的,持续集成一般包含两个阶段,那就是代码改动合入前的持续集成(Pre-merge CI)和代码改动合入后的持续集成(Post-merge CI)。 Pre-merg...

持续集成:不忘初心,砥砺前行

持续集成(Continuous Integration, CI)是软件工程的一个重要领域。在现代软件开发中,多个开发者(Developer)工作在同一个共享的代码仓库(Repository)上。每一次开发者往代码仓库主干(Master/Trunk)提交(Submit)或者合入(Merge)代码改动的过程,可以认为是一次集成。 持续集成,就是持续的代码合入过程。每一次集成,绝非是将开发者的代...

毁三观?如果CPU周期是1秒,那么重启电脑需要4000年!

计算机性能那些事

1 计算机时间尺度 计算机世界与我们人类直观世界有巨大的差异。这种差异表现在多方面,其中之一就是时间尺度。 在计算机世界,时间的常用单位是纳秒、微妙、毫秒等。而在直观世界,我们通常使用(或者能够切身感受到的)时间单位是秒、分、时等。 这两种客观存在的截然不同的时间尺度,对我们人类理解计算机的工作特点是不利的。为了更好描述这一实际情况,Brendan Gregg在《Systems Perf...

软件测试分级理论

软件测试是软件工程当中不可或缺的一个过程。在软件工程中,测试者充当“虚拟用户”对软件产品进行检验。只有经过严格测试的软件产品,才能发布给用户使用。 只要有软件的地方,就有软件测试。 软件测试是一个包罗万象的话题。这种“包罗万象”的具体表现之一就是软件测试的分类:多样化的观察角度,多样化的衡量标准,造就多样化的分类方法。软件测试的分类可谓是“百花齐放,百家争鸣”。 例如,...

在DevOps蓬勃发展的时代,软件测试还有没有价值?

敏捷还没远去,DevOps就已到来。 关于DevOps,存在多样化的定义。从字面理解,Dev是软件开发(Software Development),Ops是软件运维(Software Operation)。DevOps就是通过软件开发和软件运维紧密、高效地协作,以更好、更快、更频繁地交付软件,从而满足市场需求、收获商业成功。 DevOps引起了软件行业的普遍重视,各种各样关于DevOps...

Demo

contport Hello, Here is 5G19B4 Classical BTS OAM Regression Testing Report(5G19B4) Tested Jenkins job: http://mzoamci.eecloud.dynamic.nsn-net.net:8080/j...

The Google Testing Law (谷歌测试定律)

测试金字塔

什么是谷歌测试定律? 软件测试(Software Testing)是软件工程(Software Engineering)中不可或缺的一个过程。软件测试触发预定义的测试步骤、比较软件的实际输出结果和预期输出结果,以此来评价软件质量(Quality),判断软件的实现是否满足设计目标和用户需求。只有经过严格测试的软件,才能发布给用户使用。在实际中,根据测试阶段的不同,软件测试可以分为: ...

掀起TA的盖头来:闲聊软件测试自动化(四)

我们怎样实现期望的TA?

我们怎样实现期望的TA? 我们从技术、流程、组织和个人四个维度,探讨怎样去实现我们所期望的,简单、可靠、可维护和可读的TA。 技术 充分使用Mock。在软件测试中,Mock无处不在。所谓Mock,就是把被测对象所依赖的外部对象用模拟器(Simulator)替代,并用这些模拟器来测试被测对象。无论被测对象是一个函数,还是一个复杂的设备,模拟器都很实用,有时甚至是不可或缺的。以...