《有效的单元测试》一2.3 如果测试了错误的东西就不好了
2023-09-11 14:19:11 时间
本节书摘来自华章出版社《有效的单元测试》一书中的第2章,第2.3节,作者 (芬)Lasse Koskela,更多章节内容可以访问云栖社区“华章计算机”公众号查看
在阅读和调试代码以找出不良系统行为的原因时,我却最终不止一次地回到了开始的地方。在找bug的过程中,尤其容易忽略的一个烦人细节是测试的内容。在挖掘代码时,我要做的头一件事情往往是运行所有测试,让它告诉我哪些正常,哪些不正常。有时我太过相信测试的名称。有时那些测试其实完全是在测试不同的东西。
这与良好的结构有关——如果测试的名字错误地表达了要测试的内容,那就像是跟着错误的路标驾驶。你应该能够信任你的测试。
几年前我为某个产品审计代码,该代码开发了已经超过十年。那是个巨大的代码库,我从结构中可以分辨出某些部分明显比其他部分要新。区分新旧代码的一个线索是自动化测试的存在。但我很快发现,我无法从测试的名字来分辨出要验证的内容,再仔细看,发现测试根本没有在验证它承诺的内容。它不是Java代码,但我把它翻译成了Java的例子:
看到这段代码你立刻能注意到测试的命名不够理想。但再仔细看看,无论“mask”对于“Bmap”意味着什么,测试也仅仅是检查了某些参数是否为有效的组合。如果输入正确的情况下实际行为却仍然有误,那么参数能否通过验证也就变得无关紧要了。
关于测试正确的事物这件事其实有很多话要说,但用正确的方式测试正确的事物也很关键。从可维护性角度尤其重要的是,你的测试应该检查预期行为而非具体实现。下一章会涉及这个话题,现在先按下不表。
Python3入门笔记八之错误、调试和测试 错误处理机制try...except...finally... 这个的使用和 java 的 try-catch-finally 差不多,只是多了个else来表示没有异常的时候,注意捕获的异常的类 要从子类到父类
如何做好测试开发?| 破解测试人技术成长常见的 3 种错误思维! 本文为第四范式质量部工程效能负责人,霍格沃兹测试X学社特邀嘉宾山治老师关于测试开发工程师技能成长的精彩分享。进阶学习文末加群。
相关文章
- 《CMake实践》第三部分的示例代码的错误
- 打开c++ 项目遇到的错误
- 运行RF测试案例,显示unable to open socket to "localhost:56505" error: [Errno 10061] 错误,且关闭RF卡死的解决办法
- SAP Fiori应用里出现http request错误的原因分析
- 如何处理Fiori错误消息 - User Parameter is not maintained
- Android【报错】xxx cannot be resolved to a type 错误解决方法
- 【错误记录】Android Studio 中生成测试覆盖率报告出错 ( ExampleInstrumentedTest > useAppContext[Pixel 2 - 9] FAILED )
- 维护供应商错误
- linux 重定向 标准错误与标准输出到同一文件
- Linux C 编译错误总结
- C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析
- nohup 输出到指定文件 Linux nohup 实现命令后台运行并输出或记录到指定日志文件 设置日志结果文件名称 重定向到某个文件 标准误 标准错误输出定向
- 运行bee run之后出现的错误以及解决方法Failed to build the application:
- scrapy-yield scrapy.Request()不执行、失效、Filtered offsite request to错误 [转]
- Kernel:glibc: pthread_create 返回 EPERM (1)错误分析
- 解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常