摘要:
最近一直在反思自动化测试和人工代码评审的优劣,还有手工测试的优劣自动化测试: 1、单元测试,对于正常流程的验证是很有好处的, 2、对于出错处理情况和多线程,很难模拟,而且要花很大力气; 3、调用单元时,不正确的使用单元功能,当出错时,代码流程错误;这种也比较难触发和模拟 因为是要Mock,而不是fake,他的行为要和被依赖的对象行为一致;当使用第三方接口时,这种难度很高人工测试: 2、人工代码评审,较之全面,但是评审能检查出来的问题有多少,和进行评审人的能力有很大关系;而且也会很辛苦 3、手工测试是推翻一些程序的假设,和寻找程序的局限性,是非常有力的,而且对于gui什么的也很... 阅读全文
摘要:
1、当最绝望的时候来临,你还是有选择的机会,你可以选择变得浮躁,也可以选择想办法改变现状。我们可以选择互相鼓励尝试走出困境,也可以选择一起抱怨摧毁旁人的希望让大家一起毁灭。 2、看到自己的同学或者其他熟人干得风生水起,就有些心不定了。就像长跑比赛,一开始大家都疯狂跑出去就你一个人慢吞吞的,就算你不想拿名次心里也会觉得别扭。但如果总是被外界环境或者别人的意思所左右的话,你会疲于奔命的。如果你想好了你想要的,就要心定,安心做好自己身边的事情。你就是每天打牌,只要能打成个高手,未必不能在这个社会安身立命,做什么并没有太大关系,关键是做好什么。 3、现在的情形有点像蛇蜕皮,或者说凤凰涅磐,本身都是.. 阅读全文
摘要:
测试十戒律:1、你应该使用大量输入,来反复锤炼被测的应用程序 *大规模的随机测试(自动化),而且有助于理解输入和输出的关系2、你应当贪图你的邻居的应用程序3、你应当亲自寻找睿智的预言家 *对应的输入是否有对应的输出,也就是测试基准是否清楚的了解特定输入和环境条件组合的情况; *尝试让测试基准自动化,也许做不到,但是这样思考你可以选择做更有效率的工作4、你不应该崇拜无法重现的失效 *尽最大努力注意并记住(或记录下)对软件采取的动作次序,同时记住应用程序的响应 *考虑使用调试器之类能追踪动作和软件状态的工具 *警惕为它白白花去了一整天的时间5、你应该尊重你的模型和自动化测试 *测试模... 阅读全文
摘要:
一些有意义的条目: 1、考虑自动化是否能发现有价值的缺陷,是否经得起时间的考验,是否值得付出维护费用 2、决定需要测试什么和何时测试 *对于每一个被发现的缺陷,明确的讨论它应该在什么时候被发现 3、决定如何测试 *是否有一种特殊的路径引导人员找到这个缺陷 *这种功能或特许最好用哪种给定的方法来测试 *知道当前已经进行了哪些测试,以及我们目前和将要进行的测试如何才能增加总体测试效果 *发现软件问题,需要实际用户在实际的环境中,用实际的数据,去做实际的工作 *简单重复的工作实现测试自动化 4、测试中最困难的部分是:决定测什么,决定测试的完整性,确认用户... 阅读全文
摘要:
转载:《探索式软件测试 》 当软件测试的热点渐渐转向测试自动化,当越来越多的测试人员谈论白盒测试、测试编程、测试脚本时,测试专家James A. Whittaker旗帜鲜明地捍卫手工测试(manual testing),探讨如何用探索式测试(exploratory testing)来应对严峻的现实挑战。 作者以“漫游”为隐喻,提出了以漫游测试(touring testing)为核心的探索式测试方法。第3章“局部探索式测试法”介绍了如何测试软件的局部:一个组件或模块。第4章“全局探索式测试法”介绍了如何测试软件的功用(capacity):以测试意图为核心,将应用程序的多个特性和功能组合起来进行测 阅读全文
摘要:
什么需要测试: *条件部分、循环部分、操作部分、多态性 *为了测试,需要的设置代码要精简,和避免重复;运行时间不宜过长;不宜很容易被打断 另外测试驱动开发的观点和常见的设计观点是相冲突的,一般提倡的是“编码为今天,设计为明天”,而测试驱动开发则是“设计为今天,编码为明天” 因此测试驱动开发认为测试更应该注重实效,他是一种让开发充满自信的编写代码的目的,也是一种对你所写代码的文档说明。因而如果我们对实现充分了解,不用测试也能拥有自信的话,那就不用编写测试。测试开发的呆子哲学: 存在一个假定:清晰的代码是通向成功的唯一道路。认为测试驱动开发不是一种测试技术,而是一种分析技术、设计技术,更... 阅读全文
摘要:
测试驱动开发常用模式:1、命令:表示把计算作为一个对象而不是消息来调用(用于编写测试) 例如: interface Runnable public abstract void run(); //命令2、值对象(value object):通过创建其值,一经创建便永远不改变的对象来避免别名问题(用于编写测试) 别名的例子: 假设有一个Rectangle对象,根据rectangle计算出它的面积;后来有人向我要rectangle,我就把它给了他们; 但是几分钟后,这个rectangle对象已经在不知情的情况下改变了,以前我计算出来的面积却过时了。 作者倾向的解决方案... 阅读全文
摘要:
Mock object(模拟对象):mock的特点: 1、提供和被模拟对象相同的接口 2、会检查每个调用的上下文以下几种情况可以考虑创建Mock 1、当被模拟的对象提供不确定的结果时(例如:当前时间或当前温度) 2、很难创建或重现的状态(例如:网络错误) 3、很慢(例如:数据库,需要在测试前初始化) 4、还不存在或者也许会改变的行为 5、为了测试想提过一些额外的信息和方法时 当测试一个依赖于昂贵且复杂的资源的对象时,可尝试创建一个这些资源的模拟版本。 mock对象鼓励你仔细思考各个对象的可见性,减少设计中的耦合,也给项目增加风险:模拟对象需要和现实对象的行为一样,因而是需要对... 阅读全文
摘要:
一般情况下的测试框架的测试清单: 1、调用测试方法 2、调用测试方法之前先调用setUp方法 3、调用测试方法之后调用tearDown方法 4、即使测试方法失败也同样调用tearDown方法 5、运行组合测试 6、报告集成结果测试驱动开发的特点: 1、希望测试程序能尽可能快的运行,从而方便经常运行 2、尽量在小范围内进行测试,而不是针对整个应用进行测试;防止测试之间容易被中断和影响; *希望测试互相之间互不干扰,并且测试是不依赖于顺序的作者提倡的一种做法是: 1、先把你所知道需要实现的每种操作的范例都记录在清单上 2、对于目前还不存在的操作,将其空版本记录到清单上 3、列... 阅读全文
摘要:
clean code that works,测试驱动开发所追求的目标 1、在你写任何代码之前,先写一个会失败的自动测试程序 2、消除重复设计,优化设计结构测试驱动开发的流程: 1、写一个小的测试 2、运行所有测试,运行失败 3、适当修改 4、运行测试且成功 5、重构,消除重复设计,优化设计结构 我觉得测试驱动开发的实质,根本就不是为了保证质量的,他有点像是一边写,一边测的概念;不是那种一开始确定好所有的需求,就把所有的测试用例写完的那种; *是要写哪部分,就先写哪部分功能的用例; *而且用例的目的就不是为了测试bug,有点像是对功能的说明文档,确认他完成的功能是什么。他还讲究性价... 阅读全文