`

好测试,坏测试

阅读更多

好测试,坏测试

 

 

单元测试,正如其它实践一样,有收益也有代价。你怎么知道你的测试集是物有所值的呢?

单元测试,就像任何实践一样,可能被滥用。我写过一篇关于这个话题的文章。

事实上写出好的测试和写出好的生产代码一样难,需要精心练习和深思熟虑。然而我太多次看到测试代码被当作二等公民。这种情况往往意味着我们没有从测试中得到应有的益处,到头来测试集更像个累赘而非资产。

好的测试集:

  1. 带来信心
  2. 能抓到bug
  3. 易于打理
  4. 描述系统
  5. 结实
  6. 自己没有bug
  7. 在运行

信心

当修改代码后,运行了测试就足以放心提交代码么?直接上线呢?
我的经验是单元测试是不够的,我们需要一些全栈测试,BDD以及集成测试来增加信心。

需要注意的是对于同一个功能点如果有两个测试给你信心,那么有一个测试是多余的。

另外,如果你真的对测试集很有信心,但是你发布的产品中bug仍然持续增加,你的信心可能放错了地方。

抓到bug

如果你有个永远不会红灯的测试,它毫无价值因为它不会抓住任何bug,而这是测试存在的主要原因。

易于打理

如果你在重构代码的时候花了大量的时间修改测试或者重写测试,你的测试集就没有值回票价。如果你使用了大量的mock对象的话,我发现更是如此。很多情况下最终得到的是过分规格化的软件。

描述系统

测试用例应该告诉我们系统做了什么,最好还能告诉我们为什么做这些事。
只有很少的测试应该用来告诉我们它是怎么做的,而且我们知道如果进行大的重构时会扔掉这些测试。

本身没有bug

知道测试确实在测它的目标代码,也就是说测试本身没有bug的最好办法,就是在改了生产代码后,看着测试从红灯变为绿灯。

这就是为什么应该在写生产代码之前写测试。

另外考虑使用变异测试来找到测试集的盲点。

结实

如果你的测试集里有个反复无常的测试,莫名其妙的失败。它将危害整个测试集因为大家将不再把测试失败当回事。
删掉这种测试。

被人运行

也许这听起来有点傻,但是我确实看到过也写过很多测试却没人去跑。包括:

  • 被注释掉的或打上@Ignored标签的测试。
  • 非常慢的测试。
  • 需要一些手工步骤的测试,比如安装数据库,应用程序容器或者消息中间件。
  • 无法从IDE运行或者调试的测试。

总而言之,好的测试集将会支撑我们对系统进行演进。
测试应该支持改变,而非阻碍改变。

毕竟,正如Dave Thomas 和 Andy Hunt 所言,我们总是在改变现有系统。

所有的编程都是维护性的工作,因为我们极少写全新的代码。
只有在你刚刚敲进去那10分钟里代码是全新的。

 

 
 
 
更多软件测试相关信息: www.51test.space
欢迎关注公众号 
分享到:
评论

相关推荐

    u盘坏块测试工具

    标题中的“u盘坏块测试工具”是指一种专门用于检测USB闪存盘(通常被称为U盘)健康状况的软件。这种工具的主要目的是检测U盘中是否存在坏块,因为坏块是存储设备常见的问题,可能会影响到数据的完整性和可靠性。坏块...

    最好的显示器好坏测试工具

    2. 色彩准确性:好的显示器应该能够准确地显示各种颜色,这对设计、摄影等专业工作尤其重要。 3. 视角:从不同角度观察屏幕,看是否有色彩失真或亮度下降。 4. 响应时间:响应时间越短,动态画面显示越流畅,无拖影...

    如何用万用表测试cmos管好坏

    如果CMOS管是好的,那么这个数值应该接近于无穷大。 3. **测试S(源极)回到原位**:将黑表笔从S极移开,此时再次测量D和S之间的电阻值。正常情况下,D和S之间的电阻值应该仍然很大,表明内部没有短路现象。 4. **...

    如何测试9针串口线的好坏

    ### 如何测试9针串口线的好坏 在日常维护工作中,经常需要对9针串口线进行测试,以确保其正常工作。本篇文章将详细介绍如何简单有效地测试9针串口线的好坏,并通过实际电压值来判断串口线是否完好无损。 #### 一、...

    测试硬盘的软件 可以测试硬盘是否有坏道

    其中,"HDTune.exe" 是一个著名的硬盘检测工具,它具有多种功能,包括硬盘性能测试、健康检查和坏道扫描等。 1. **硬盘坏道的理解**:坏道是指硬盘磁盘表面的物理损伤或者逻辑错误,它们会影响硬盘读取和写入数据的...

    场效应晶体管好坏测试仪

    当一个好的MOSFET接入电路时,其良好的导通和截止特性会使得非稳态多谐振荡器正常工作,进而驱动LED闪烁。而如果MOSFET有故障,例如栅极绝缘层损坏、漏电流过大或者阈值电压异常,那么LED就不会闪烁,从而直观地判断...

    带FN+的键盘测试工具 机械键盘 测试按键

    “机械键盘”通常指的是使用独立机械开关的键盘,相比传统的薄膜键盘,机械键盘具有更好的手感、更长的使用寿命和更高的可定制性。因此,这款测试工具特别适合机械键盘用户,他们可能对键盘的每一个细节都有较高的...

    测试专一测试硬盘好坏

    专一测试硬盘好坏

    测试显示器性能好坏DisplayX

    DisplayX是一款专业的显示器性能测试工具,它可以帮助用户深入了解和评估显示器的各项关键性能指标。通过运行DisplayX,你可以全面检查显示器的色彩准确性、响应速度、分辨率、刷新率以及是否存在坏点等问题,确保你...

    专业硬盘坏道测试

    "专业硬盘坏道测试"是为了确保硬盘的健康状态,及时发现并处理这些问题。本测试通常包括对硬盘的全面诊断,查找可能存在的逻辑错误和物理损坏区域。"移动硬盘坏道测试"则专门针对便携式硬盘,这类硬盘更易受到摔落、...

    测试规程-测试工作指南

    本文档介绍了测试工作指南的重要性和实施细节,涵盖了测试工作的各个方面,包括应用程序测试、功能测试、环境测试、压力测试、恢复测试、性能测试和安全测试等。以下是测试工作指南的详细知识点: 一、应用程序测试...

    网吧耳机好坏测试

    可以快速简单测试耳机左右声道故障和麦克录音质量,及麦克采集声音灵敏度等故障,一般应用于网吧,维修等耳麦测试量比较大的场合………… 被程序为易语言编写,可能会有某些杀毒软件因病毒库比较旧(或一些国外的...

    芯片测试中的cp、ft、wat

    FT是指packaged chip level的Final Test,即对封装好的芯片进行测试的过程。FT测试的目的是为了确保封装后的芯片具有良好的质量和可靠性。FT测试的项目较少,但都是关键项目,条件严格。FT测试的目的是为了检查封装...

    navida显卡显存 测试软件

    标题中的“navida显卡显存测试软件”指的是NVIDIA品牌的显卡显存性能测试工具。NVIDIA是一家全球领先的图形处理技术...通过正确的使用和理解测试结果,用户可以更好地了解自己的显卡性能,从而做出升级决策或优化设置。

    常见的软件测试题目--纸杯测试、电梯测试

    软件测试题目--纸杯测试、电梯测试 软件测试是一种评价软件产品质量的方法,它可以检查软件产品是否满足用户的需求和期望。常见的软件测试题目包括纸杯测试和电梯测试,这两种测试方法可以帮助测试人员检测软件产品...

    USB-TTL测试工具

    USB-TTL测试工具是一种常用的硬件调试设备,尤其在嵌入式系统开发和物联网(IoT)项目中,它能够帮助开发者通过USB接口与目标设备进行串行通信。USB-TTL转换器通常包含一个微控制器,如CH340或PL2303,这些微控制器...

    LTP并口测试工具

    在使用LTP并口测试工具时,用户通常不需要具备高级的硬件知识,只需将测试工具连接到电脑的LPT端口,运行程序如"**LPT测试.EXE**",然后按照提示操作即可。这个可执行文件可能是提供图形化界面的测试程序,用户只需...

    flv测试工具与测试文件

    在互联网上,测试FLV文件和使用相应的工具是确保视频质量和流畅播放的关键环节。以下是对FLV测试工具和测试过程的详细阐述。 一、FLV文件格式 FLV格式由Adobe Systems开发,用于在Flash Player中播放视频内容。它...

    软件工程测试报告模板

    测试内容详细说明了将要执行的测试类型,如功能测试、运行时间测试、数据库操作与安全测试和错误测试。这些测试类别旨在验证软件的功能正确性、性能效率、数据安全和异常处理能力。 2.2.1 功能测试 功能测试是确保...

Global site tag (gtag.js) - Google Analytics