`

[转]测试要考虑成本、粒度 和角度问题

    博客分类:
  • Java
阅读更多
作者:sharedata
来源:http://www.matrix.org.cn/blog/X-Brave/


测试是需要成本的,也需要考虑当时当地的实际情况的,这就是一方面我非常强调测试,但也可能在特定的情况下完全没有传统意义的测试的原因。
另一方面,对测试的理解和实践是因人而异的(或者说存在某种进阶,这种进阶由软件实践的经验和能力相对决定),根据进阶不同,对其理解和实践就会不同。在这里,包括单元测试究竟是不是设计以及在细致区分单元测试和测试用例都可以有不同的理解和实践。这些理解和实践没有绝对的对与错,而只是在粒度和看问题的角度上有所不同,或者说软件实践经验的不同。

但,尽管存在不同的理解和实践,我们却可以把分歧统一在一个前提下:那就是一切为了更好的软件实践。从这个基本点出发,测试可以被看作传统意义的测试,也可以看作是设计的一部分或者是辅助设计,根据测试粒度的不同产生的其他的分歧也不再是问题,甚至是更具挑战性的理解和实践:测试可以看作测试,传统意义的代码本身也可以看作测试(从这里也可以引申为设计和代码实践的随意性或者也可以说是一种非常自然的更高级的软件实践)。在我的软件实践里,我更喜欢这种实践模式,当然,这是有前提的,他必须和具体软件项目、人员、时间和其他辅助资源相适应,而不是一种必然选择。显然,在很多软件环境下,我会采用适当保守的做法来保证我的队伍可以轻松而且可靠地完成工作,这就是软件赋予我们的灵活性。

实际上,讲到这里,怎么做可能是更好的实践已经有了答案,尽管这个答案不是明确意义的对错或者第1条第2条的方式给出的。我也试图谈论更多来更清晰这些回答,当然这些具体看法根据个体实践经验不同会存在不同的理解,这都是正常的。记住,这里没有绝对性质的对错,凡是能够更好的辅助完成软件实践就是成功的。

我们时常提到测试驱动开发,但实际上真正符合的不多,通常所称的“测试驱动开发”只是有了单元测试而根本没有驱动的意味。很多问题由此产生,在很多时候我们谈论的差不多是两个不同的概念。正常的情况下,测试是可以作为主要设计手段的,至少是极好的辅助设计手段,根据粒度和规模的不同,就体现为不同的具体实践,包括传统意义的单元测试来测试单个的对象或者更大规模的对象群,这都是正确的实践。在这里,也可能存在测试转化问题,也就是开始作为设计的实践到后期的更趋向传统的测试,这是更具体的实践。

测试成本的要素包含很多方面,是否写了测试代码只是其中一个重要部分,是否采用JUint以及Mock对象更加不是对其评价的决定性因素。对测试的更好评价应该是额外代码、测试可重复性、测试范围和边界值识别等综合构成(测试对设计的作用是更高级的判断)。

对于涉及到数据库持久方面的测试、涉及到UI(浏览器或者富客户端)交互的测试以及多对象多方法过程的测试(也可体现为UI交互,这里是指独立性质的)等,以及上面说到的一些问题(不再重复),是我们现实测试实践要面临的问题。对这些问题的解决,就会更多的涉及到项目具体情况的选择和具体项目和团队的情况来作最佳判断,这就是成本的意义。我在这里还想提醒在关注这些具体的项目因素的同时,还要注意下面的问题:
对象的所有者和使用者问题;
不要单纯意义上理解测试,有些测试可以采用单元测试之外的手段完成;
项目在不同进展阶段测试的便捷性(也可体现为大分层概念)。

测试,是一个理解和实践都可能差异很大的软件实践,它包含了具体的代码实践,也是需要和项目管理和设计相适应的方法论,当然,也是体现实用哲学的软件思想。

在方便的时候,我很乐意详细阐述我在测试上的实践经验和教训(如讲座),也可以就我正在实践和思考的更具挑战性的思考和实践进行探讨。
分享到:
评论

相关推荐

    基于不同质地土壤粒度测试方法的评定

    激光粒度仪通过测定颗粒散射光的角度和强度,来推算颗粒的大小。这种方法能够较为准确地给出土壤粒度的分布情况,并且可以快速完成大量样本的分析。 本研究中,研究人员选取了粉质亚砂土和粉质亚粘土两种不同质地的...

    软件测试面试题整理.pdf

    两者联系在于,它们都是为了确保软件的质量,只是测试的角度和深度不同。黑盒测试更多关注软件的外部行为,而白盒测试深入软件内部,两者结合使用,可以更全面地评估软件的质量。 ### 单元测试、集成测试、系统测试...

    软件测试考试复习题(含答案).pdf

    单元测试、集成测试和系统测试各有其重点和方法,而静态测试和动态测试则提供了不同的角度来检查软件质量。软件缺陷管理、文档检查、兼容性测试和本地化是保证软件质量的重要环节。此外,代码评审和团队协作也是确保...

    敏捷测试的必由之路分层测试.pdf

    敏捷测试的必由之路在于实施分层测试,这...总的来说,分层测试是敏捷测试的关键,它强调了质量的全员参与,通过多层次、多角度的测试手段,确保在敏捷开发流程中快速发现并解决问题,从而提高软件的整体质量和可靠性。

    软件测试与维护基础147页完整版教学课件汇总全书电子教案.pptx

    测试活动的质量控制涉及测试用例的编写时机、选择测试方法、内容完整性、粒度控制、组织方式、审查和有效性验证。同时,测试环境的配置包括软件、硬件、网络、数据准备和测试工具的协调。 总结来说,本教程全面地...

    理论.doc

    应覆盖用户需求,考虑各种场景,保持用例粒度一致,要素齐全,详细清晰,便于执行和评审。 16. **编写测试用例的原因**: 有助于量化工作,多角度验证,方便他人快速理解和执行。 17. **用例状态**: 通过、...

    dds和dataguard技术综合对比

    此外,DDS支持基于表和用户的粒度复制,用户可以根据需要选择复制的数据,避免不必要的带宽和资源浪费。DDS还支持一对多和多对一的复制模式,适应了企业多样化的数据库和应用需求。 在效率方面,DDS作为独立于...

    Powder_calibration_report.pdf

    - Edinburgh Elasto-Plastic Adhesion模型:该模型考虑了颗粒的弹性和塑性行为,以及粘附力,适用于模拟粉末的压缩和流动。 - JKR凝聚力接触模型:基于Johannson-Kendall-Roberts理论,它描述了颗粒间由于表面吸附...

    腾云之道案例分享智慧的企业篇.pptx

    业务需求的多样化、技术的更新换代以及IT运维问题日益突出,使得系统和网络操作成本上升,数据量爆炸式增长,部署新应用和服务变得越发困难。同时,确保公司资产和客户信息安全、满足法律和政府的强制要求,如版权...

    反击式破碎机_零件图_机械工程图_机械三维3D设计图打包下载.rar

    此外,3D模型也可以用于虚拟装配测试,提前发现并解决可能的装配问题。 综上所述,本压缩包中的资料对于学习和研究反击式破碎机的结构、工作原理、设计改进具有极大的帮助。无论是从事破碎机设计的工程师,还是设备...

    在大型遗留系统基础上运作重构项目

    频繁的版本更新和技术债务积累导致了以下问题: - **测试缺失**:系统缺乏充分的自动化测试覆盖,增加了代码变更的风险。 - **代码质量低下**:存在大量的“copy & paste”现象,代码重复率高,维护成本增加。 - **...

    国产数据库有关的热点问题解读.docx

    通过对国产数据库热点问题的深入探讨,我们了解到在选择和使用国产数据库时,需要全面考虑业务需求、技术可行性、成本效益等多个方面。同时,随着技术的发展,国产数据库在未来有望在多个领域发挥更大的作用。

    采用SOA 构建和集成行业应用系统

    1. **复杂冗余和难以重用的程序**:早期系统设计时未充分考虑未来的需求变化,导致程序结构复杂、难以理解和维护。此外,不同系统间的紧密关联使得一个系统的变更可能会影响其他系统的正常运行。 2. **众多的接口**...

    物流系统建模方法概述.pptx

    例如,在物流系统中,可能会使用推理法来建立生产优化的数学模型,比如考虑资源限制、生产成本和利润,以确定最佳的产品生产组合。在这种情况下,可能需要解决一个线性规划问题,以最大化整体利润。 总之,物流系统...

    pentagon stepper Arduino Simulation_proteus_5PHASESTEPPER_

    与传统的两相或四相步进电机相比,五相步进电机具有更高的扭矩和更平滑的运行特性,因为它们有五个独立的电磁绕组,可以实现更细粒度的步进角度。 **Arduino** Arduino是一种开源电子平台,基于易于使用的硬件和...

    矸石入选比例变化对煤泥水水质硬度的影响

    本文还从节能减排的角度考虑,提出在生产过程中应控制矸石的入选量。这是因为过多的矸石会增加洗选过程中的能耗和废水排放量,不利于环保。因此,通过优化矸石的入选比例,可以实现洗选效率的提高和能源消耗的降低,...

    行业文档-设计装置-斜式研磨轮.zip

    设计斜式研磨轮时,需要考虑多个因素:磨料的粒度决定了研磨的精度和表面粗糙度;轮子的硬度影响其耐久性和切削能力;而轮子的结构(如开槽或无槽)则影响磨削效率和冷却效果。此外,速度和进给量的控制也是确保良好...

Global site tag (gtag.js) - Google Analytics