摘要:
在上篇文章《让用户帮你做测试》中我提到了“生产引流测试”的方法,这种方法的本质就是把生产系统发生的一切复制到测试系统上来。这种测试方法适合有大量用户的系统,如电商网站、电信计费系统、大型控制系统(如机场调度系统)等。这么做有两个好处:1.能够让系统在真正上线以前就能够真正经受实践检验。多年来的测试实践告诉我们,测试永远是抽样活动,即使经过很大强度的充分测试,很多大型系统上线后仍然马上会产生这样那样的问题,有时候这些问题往往是致命的。2.不会象灰度发布那样拿部分用户当小白鼠,引发部分客户不满;其实要实现灰度发布在一定程度上会增加系统架构复杂性,不是哪个公司都能玩得转。当然生产引流测试必须满足一个 阅读全文
摘要:
我们知道,只要有软件就会有bug。一者,再严格的测试也只是抽样活动,总会有bug被遗留下来。再者,做软件也是一种商业行为,对质量的投入要看ROI。基于以上两种原因,软件或者系统发布时总会或多或少带点bug。对于这些bug,我们要看它的影响程度是什么样的。对于生命周期比较长的系统,这些bug只要产生了影响都是要修改的。在我上篇文章《测试的最高境界是什么?》中给出了软件不同周期中缺陷修复所需要的成本的一张示意图,要知道,bug的检测也是需要成本的,并且检测成本也会随着时间向后推移水涨船高。对于开发者来说,已发布版本的bug如何检测才能成本低且有效呢?显然已发布的软件会直面用户,从用户身上打主意是. 阅读全文
摘要:
今天参加了单位组织的测试架构师培训。外部的咨询老师问了我一个问题:做测试最高境界是什么?我当时给出的仓促回答是:“帮助你所在的组织改善树立正确的质量观念;帮助所在建立起有效预防和发现bug的流程体系与技术栈。” 限于时间,这个问题没有展开深入探讨,却让我总是忍不住去想它。做测试最高的境界是什么呢?仔细思索后,发现我这个答案还挺不错的。 最高境界代表着极致,极致就是在已经达到非常好的时候还在不断的追寻:我还能做得更好么?如果持续这样做,在某个时候,一定会产生质的飞跃,让你跳出原有的框框得到柳暗花明的答案。这样的例子比比皆是:在人们找到钨丝代替爱迪生的竹炭纤维作为白炽灯的灯丝以后,后续的... 阅读全文
摘要:
今天和一个弟弟吃饭,他明年年初即将计算机研究生毕业。谈论到怎么找工作,觉得自己会的不多,心里非常发虚。虽然我当年找工作也走了很多弯路,思路并不是很清晰。但是工作了这么多年,对企业需要什么样子的人还是有一定了解的。于是跟他说了我的思路(其实这些都是我当年的没有做到或者做好的,也是自己的教训),下面跟大家分享一下,对与不对,请大家拍砖和补充:企业需要什么样的人?用一句话来说,企业的本质就是盈利。企业最喜欢能够给它带来价值的人,这是第一条准则,也是最重要的原则。其它要求的特性都是以这个为基准的。作为IT的应届生,如何能够给企业带来价值呢?基本答案是:能干活,有潜力。如果你被认为马上能非常好的投入工作 阅读全文
摘要:
Bug描述: 某大型系统的一个提供基础数据服务的子系统A进行了一次升级。升级的内容为:优化了失败重传功能,在优化的同时,开发人员发现传输数据的时间戳精度只是精确到了秒,于是顺手把精度改成了1/100秒。在程序上线数小时后,使用A数据的B系统发现少量数据缺失现象,同时监控系统提示产生Error。进过追踪日志,发现丢失的数据在插入内存数据库时失败。进一步分析原因,原来B系统在读取A提供的数据时,用到了时间戳。时间戳的长度变更引起了B系统对其解析的错误,因此入库失败。比较有效的改进点:1.提供基础服务的A系统应该对它提供的服务方推送变更通知,进行兼容性测试。2.提供基础服务的A应该尽量保证暴露数.. 阅读全文
摘要:
通常情况下,一个系统的开发过程基本上遵循下面的这张图(不考虑需求变更,一次需求变更也可以由下面的图来描述)。系统的实现过程就是一个把愿景/上下文转化为可用系统的一个过程。从愿景转化为系统需求再转化为架构,转化为组件需求,乃至组件的设计及实现,每一步都遵从一个What到How的转变。而上述这些What到How的转变又有一个共同之处,对于给定的问题,存在多个不同的答案,你每选择一个答案,下一个引出的问题就会更少,相应的答案也会更加精简。这样我们也就得到了下图,可以把图中的三角形看成解空间,越到后面的阶段,解空间越狭窄。一个从What转化为How的过程就是一个精化的过程,下面的双高峰模型给出了这一过 阅读全文
摘要:
几年前在单元测试时使用mockito和junit(使用hamcrest提供的比较方法)的时候,就用到过这样类似的语法:mockito:when(mock.someMethod("some arg")) .thenThrow(new RuntimeException()) .thenReturn("foo");junit:assertThat(responseString, either(containsString("color")).or(containsString("colour")));如果按照自然语言来理 阅读全文
摘要:
这是我见到的一个搜集代码覆盖率工具最全的网站:http://c2.com/cgi/wiki?CodeCoverageToolsfor Java:EMMA @http://emma.sourceforge.net/-OpenSource, instrumentingClassLoaderas well as offline instrumentor, ANT, fractional line coverage, block coverageHansel @http://hansel.sourceforge.net/-OpenSource, instruments classes inClassL 阅读全文
摘要:
上周末参加了Ministar北京的测试聚会。腾讯的MIG专项测试组的组长给大家介绍了他们最近开发出来的手机测试工具GT。下面是GT的官方说明: GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug&Test Environment)。利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等等;更重要的是,您可以在任意真实场所、任何时候做如上的系列事情,这就是“A. 阅读全文
摘要:
如果看完了第一篇文章,你的答案是Yes。我们可以继续讨论如何做系统集成测试啦。了解你的被测系统(why?)一如既往的,你会想到在一个测试之前,你需要做测试计划,你需要做测试策略、方案。但在这之前你首先要了解你的被测系统。这里讲的被测系统不仅仅指的软、硬件系统自身。你还需要理解系统所处的上下文环境这包括:所有干系人,项目周期,相关文档(过程文档,技术文档),部署,相关技术,商务合同,历史信息,业务知识,法务、文化相关的东西。获取的信息越多,越有助于我们做出正确的判断。上述信息都相当重要,有时候会影响到系统集成测试的成败,甚至项目的成败。下面举2个例子:1.某电信项目的总包商对某个分包商拿到的子系 阅读全文