<<重构>>里介绍的坏味道, 都是直接去嗅代码. 不过既然我们采用TDD, 那么代码的一切坏味道, 都会反应在测试上, 比如一个函数的测试用例组合太多, 可能意味着函数职责过多. 这在物理上称为对偶性, 即不同的表达方式, 反应的是同一件事. 两个非常不同的理论精确的描述了同样的现象. 分别让一对夫妻给你讲他们的故事,他们的说法会不同,但每个重要事件都能相互得到印证。和他们谈话多了,你就能指出两人说的故事有什么不同和联系。例如,丈夫觉得妻子过于自信,这正好印证了妻子抱怨丈夫太懦弱。我们可以说,两个人的话是互为对偶的。换句话讲, 我们可以通过观察测试而不是直接去看代码, 来发现代码的坏味道.
以上是题外话, 现在进入正题
今天在面向对象训练营的培训中, 发现了一种新的坏味道. 事情是这样的: 学员在完成按空位绝对数量多少停车的时候, 使用了继承, SmartBoy继承自Boy. 停车是不同的, override; 而取车是一样的, 代码都在基类里. 而在写测试的时候, 我发现他们分成了两派. 一派没有对SmartBoy的取车进行测试, 而另一派做了测试. 组织他们讨论, 两派的理由都有道理: 前者说取车代码只有一份, 前面Boy的测试已经测过了, 因此SmartBoy可以不测; 而后者说从功能上SmartBoy和Boy完全是独立的, 测试用例应该从功能分解下来, 因此应该测. 而你只是内部实现使用了继承, 要是我现在不测, 哪一天你不用继承了, 岂不是有破坏现有功能的风险?
我认为两者都有道理. 且不说可否从单元测试和功能测试的角度来解释(况且前面我们已经说了Unit Level Fucntional Test),单是这种争论的存在我们就可以思考: 是什么让我们陷入了可测可不测, 进退两难的境地?
几秒钟之后我想清楚了, 这是一种坏味道, 原因是这里有重复. 这里虽然没有重复的代码, 但是有重复的概念. SmartBoy根本就不是一个独立的概念. 同样的Boy加不同的选车位的策略才是更基本的概念. 重构到策略模式至少是一种可以消除争论的一种方案, 因为此时取车只有一份了, 无论从代码上还是概念上. 因此前面Boy的测试已经测过了, 我们根本不需要再写一遍
推而广之, 我们可以重新发现一种已知的坏味道: 实现继承. 而可有可无的测试和实现继承在坏味道方面是对偶的.
分享到:
相关推荐
11. 开发人员(必须有)和测试人员(可有可无):记录测试用例的开发人员和测试人员信息。 12. 测试执行日期:记录测试用例的执行日期。 测试用例模板的应用 测试用例模板可以应用于各种类型的软件测试,如功能...
2. **提供专业培训和持续学习的机会**:测试人员需要不断更新知识,适应新技术和测试工具的发展。企业应提供相应的培训资源,鼓励团队成员提升专业技能。 3. **明确角色与职责**:测试团队应有清晰的组织架构,每个...
11. 开发人员(必须有)和测试人员(可有可无) 12. 测试执行日期 二、黑盒测试用例实例 下面是一个黑盒测试用例实例,以一个 B/S 结构的登录功能点位被测对象,假设用户使用的浏览器为 IE6.0 SP4。该测试用例包括...
软件测试中存在一些常见的误区,例如认为软件测试只是简单地运行测试用例,或者认为软件测试只是一个可有可无的步骤等。这些误区会导致软件测试不充分,影响软件产品的质量和可靠性。 测试工程师素质 测试工程师...
测试不是可有可无的过程,而是软件质量保障的重要环节。它能暴露软件的问题,但不能保证完全没有问题。测试的挑战在于如何有效地进行测试,以及何时可以认为测试足够充分。80-20原则表明,大部分错误往往集中在少数...
很多人认为软件测试工作技术要求不高,是可有可无的,甚至有人觉得软件测试只是运行一下程序,看看结果是否正确。实际上,软件测试需要掌握各种测试技术,并具备丰富的编程经验和对BUG的敏感性。测试管理问题同样...
测试不应被视为可有可无,而应视为软件生命周期的一部分,从需求分析阶段开始就应该考虑测试策略。每个开发人员都应自我测试,但这并不能替代独立测试团队的工作,因为独立测试能够提供更客观的质量评估。 软件测试...
可有可无的反义词及造句参考.doc
测试通常被视为可有可无的环节,局限于最基本的单元测试、集成测试和功能测试,忽视了更深层次的系统测试、压力测试、兼容性测试等。这导致软件质量问题频发,影响用户体验和企业声誉。 其次,软件测试的标准化和...
软件测试的地位还不高,在很多公司还是一种可有可无的东西,大多只停留在软件单元测试、集成测试和功能测试上;软件测试从业人员的数量同实际需求有不小差距,国内软件企业中开发人员与测试人员数量一般为5∶1,国外...
测试不应被视为可有可无的附加步骤,而是应该融入整个软件开发生命周期中。 软件测试的生命周期通常包括计划、设计、实现、执行、评估和报告等阶段。在这个过程中,测试人员需要制定测试策略,设计测试用例,执行...
3. 注释的重要性:程序中的注释是可有可无的。 软件测试: 1. 测试的重要性:在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会减少。 2. 好测试的定义:好测试是用少量测试用例...
缺陷分析:本程序在测试阶段的缺陷就是没有做提示的功能,这个功能在我们认为是可有可无的,由于这款游戏在微软的版本中,确实是有这个提示的功能,但是这个功能提示出来的牌并不是很合理,仅仅是对当前的这一步选择...
测试工作并非可有可无,而是需要规范化、计划性地进行,涉及时间和资源的合理分配,以及开发与测试团队之间的密切协作。 软件测试的内容和技术包括功能测试、性能测试、安全测试、兼容性测试、回归测试等,每种测试...
1:首先下载一起游侠、360保险箱和电源修改...名称:可有可无 数值:你自己要修改的代码 范围:不要你填,会自动出现。 类型:选择“四字节” 地址:你所要修改的16进制代码。 9:关掉“一起游侠”。进游戏邪恶吧。
测试不是可有可无的过程,而是软件生命周期中的必要组成部分。尽早引入测试,合理分配时间和资源,有助于降低项目的成本和风险。开发和测试是相互依赖的,良好的沟通和协作能够提高整体效率。遵循软件开发生命周期...
可有可无.doc
软件测试中压力测试实例在经历了长期的不为人知和可有可无后,软件测试工程师目前已变的炙手可热。地位变迁的背后推手,是市场竞争的日益激烈和软件企业以及用户成熟度的不断提高。作为一个软件测试的专家,清华大学...
1. **软件测试的重要性**:在软件工程中,测试并非可有可无,而是至关重要且具有挑战性的。测试工程师不仅需要找出bug,还需要对编码人员的工作负责。测试人员通过积累经验和创新思维来识别问题,而高级测试工程师...
缺点:可有可无的功能 2.远程图片保存到本站功能,这个功能仅开放给总版主权限使用,在发贴的右上方可看到[保存图片]选项 仅对jpg/gif两种网上图片进行保存,方便版主发贴转载其它网站的图文 3....