Testability的追根溯源

简介: 本文探讨了Testability(可测试性)的概念,指出其并非源自软件工程,而是在硬件领域广泛应用后被引入。文中分析了多个来源对Testability的定义,强调了其核心在于系统或产品在特定条件下支持测试的能力,而非单纯指易于测试。文章还介绍了提高可测试性的几个原则,如设计标准化测试设备、内置自检功能等,旨在提升系统的测试效率和效果。

Testability的论证

原本只是在一本书上看到Testability的介绍,书中对于Testability的介绍使我对Testability中文翻译“可测试性”产生了一些疑惑,从书中的描述中我更倾向于翻译成“易测试性”,而不是可测试性。因此就开始了翻阅Testablity的资料,追溯下来可测试性的翻译确实一点问题也没有,只是书上的描述有点问题。

溯源

Testability在软件工程领域的定义确实有很多,但是究其根源他是一个关于实验假说的一种性质。在逻辑上包含了偶然性、可废止性、可证伪性,也就是说在逻辑上假说是可能存在反例的,并且这个反例是可再现的。

软件工程中的Testability

但是这么一个实验假说的性质在和软件工程相结合后,就出来了各式各样的定义,下面我们就把定义原文记录如下。

  • 维基百科:软件可测试性(Software testability)是指一个软件工件(软件系统、模组、需求文件或设计文件等)在一给定的测试环境下,可支援测试的程度。可测试性和设计良好程度的相关性可由以下现象看出:低内聚性、高耦合力、存在多余程式码,以及缺乏封装的程式往往也是不容易测试的程式。若软件的可测试性低,可能会造成测试工作的增加。在一些极端的情形下,缺乏可测试性可能会使部分甚至全部的测试或对软件需求的评估无法进行。为了要找到可测试性以及利用测试找到系统中潜在错误(假设有错误时)的难度的关系,有一种评估可测试性的相对指标,是每一次需要多少的测试用例才能形成完整的测试套件(在测试了所有测试用例后,所得到的结果可以确定此系统符合某规格,或不符合某规格,不会有模糊地带)。若数量不大,表示程式的可测试性高。
  • 《Test Techniques for Flight Control Systems of Large Transport Airfcraft》:Testability is a design characteristic that can in a timely and accurate manner determine the state of the system or unit, such as working, nonworking, or performance degradation, and isolate its internal failures. In other words, the unit has the ability of self-diagnosis and failure isolation.
  • 《Advances in Computer》:Testability refers to technical characteeristics of the sofeware product that helps testing.
  • IEC 60706-5:Testability is a quantitative design characteristic which determines the degree to which an item can be tested under stated conditions.
  • 《Engineering Maintanability》:Testability. This is a design characteristic that makes it feasible for the operable, degraded, or inoperable status of an item to be determined and the isolation of faults within the item to be carried out effectively.Three important testability characteristics of modern equipment and systems are:
    • Fault-detection capability is the failure rate for those portions of the equipment or system where failures can be detected by the test system divided by the system failure rate.
    • Fault-isolation capability:This parameter measures the ambiguity associated with fault-isolation activities.α1 percent of the time, the system is capable of isolating a fault to within γ1 or fewer line replacement units; and α2 percent of the time, the system is capable of isolating a fault to within γ2 or fewer line replacement units. The typical values for α1 α2, γ1, and γ2 are respectively, 0.90, 0.95, 1 or 2 line replacement units, and 2 or 3 line replacement units.
    • False-alarm rate:This is the frequency with which the system indicates a failure when there is none。This frequency is the number of false alarms experienced divided by the operational time interval for the system.

可测试性的理解

通过一些文献的查找和学习,我发现Testability并不是起源于软件工程领域,是一个引入的词汇,那么在硬件领域使用更为广泛。在软件工程领域的定义目前看来也有一些不同的定义和解释,对比下来IEC 60706-5标准更为概括和广泛,可测试性是一种定量设计特性,它决定了一个项目在规定条件下可测试的程度(翻译不太好,所以还是推荐看一下上节的原文)。其实是一种可测试的程度,不是容易不容易测试的评价。James Bach定义的可测试性是指一个计算机程序能够被测试的难易程度,重点也是可测试的程度,而不是容易不容易测试。
例如一个Web开发设计中每一个页面的element都没有ID,那么这个其实并不是可测试性的反模式,没有ID同样可自动化测试,只是不容易自动化而已。所以可不可测试的反模式应该是UI设计中需要在固定的嵌入式主机中才能启动测试,没有模拟器,并且测试工程师没有对应的嵌入式主机,从而导致无法测试。

可测试性的一些原则

《Product Development》书中给出了一些Testability的原则:

  • Design product components such that tests can be done with standard equipment.
  • Incorporate built-in test capability and, if possible, built-in self-testing devices in the product.
  • Make the tests easy and standardized, capable of being performed in the field.
  • Provide accessibility for test probes; for instance, make test points more prominent and provide access parts and tool holes.
  • Make modules testable while still assembled in the product (Anderson, 1991).
目录
相关文章
|
存储 算法 C++
【C/C++ 数据结构 】无向图和有向图的差异
【C/C++ 数据结构 】无向图和有向图的差异
669 0
|
人工智能 网络协议 算法
5 分钟搞懂 ECN
5 分钟搞懂 ECN
3555 0
通过 ansible 创建 openstack 虚拟机并部署应用(实战篇)
前文 通过 ansible 创建 openstack 虚拟机并部署应用(配置篇) 接下来我们实战一下。 目录结构 ── ansible.cfg├── group_vars│ ├── all.yml├── openstack.
5907 0
|
存储 移动开发 大数据
HTML5 Web IndexedDB 数据库详解
IndexedDB 是一种高效的浏览器存储方案,允许在本地存储大量结构化数据,支持索引和事务,适用于需要离线和大数据处理的应用。它由数据库、对象仓库等组成,通过键值对存储数据,确保数据一致性和完整性。本介绍展示了如何创建、读取、更新和删除数据,以及事务和错误处理的最佳实践。
1265 10
|
人工智能 NoSQL C语言
程序又崩了?一招精准定位段错误!
在C/C++开发中,程序崩溃(如段错误)是常见问题,但快速定位崩溃原因却颇具挑战。本文介绍了一种精准定位崩溃问题的方法:通过捕获异常信号(如SIGSEGV),结合`backtrace()`和`abi::__cxa_demangle()`打印堆栈信息,从而快速定位问题接口。相比增加日志或生成coredump文件,此方法更高效且无副作用。实现时需注意编译选项(如`-O0 -g -rdynamic`)以保留符号信息,并处理C++名称修饰问题。
682 0
|
SQL 存储 大数据
Flink 基础详解:大数据处理的强大引擎
Apache Flink 是一个分布式流批一体化的开源平台,专为大规模数据处理设计。它支持实时流处理和批处理,具有高吞吐量、低延迟特性。Flink 提供统一的编程抽象,简化大数据应用开发,并在流处理方面表现卓越,广泛应用于实时监控、金融交易分析等场景。其架构包括 JobManager、TaskManager 和 Client,支持并行度、水位线、时间语义等基础属性。Flink 还提供了丰富的算子、状态管理和容错机制,如检查点和 Savepoint,确保作业的可靠性和一致性。此外,Flink 支持 SQL 查询和 CDC 功能,实现实时数据捕获与同步,广泛应用于数据仓库和实时数据分析领域。
9478 32
|
数据采集 人工智能 自然语言处理
FineWeb 2:开源的多语言预训练数据集,覆盖超过 1000 种语言
FineWeb 2 是由 Hugging Face 推出的多语言预训练数据集,覆盖超过 1000 种语言,支持多种 NLP 任务,如机器翻译和文本分类。该数据集通过定制化的数据处理流程,包括语言识别、去重、内容过滤和 PII 匿名化,提升了多语言模型的性能和泛化能力。
863 5
FineWeb 2:开源的多语言预训练数据集,覆盖超过 1000 种语言
|
持续交付 项目管理 开发工具
GitLab不再为中国大陆、香港、澳门提供账号服务
GitLab 宣布从2025年2月18日起停止为中国大陆、澳门和香港用户提供 GitLab.com 账号服务,引发广泛关注。极狐 GitLab 已成为国内用户的替代方案,大多数中国用户依赖私有化部署,影响有限。GitLab 是基于 Git 的开源代码仓库管理系统,支持代码托管、项目管理和 CI/CD。其官方仓库位于 gitlab.com/gitlab-org/gitlab,GitHub 上也有镜像版本。开源社区依然活跃,但未来变化尚不确定。
1368 5
GitLab不再为中国大陆、香港、澳门提供账号服务
|
开发工具 git 开发者
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
本文通过具体操作和截图,详细讲解了如何在Git中解决分支冲突问题,包括如何识别冲突、手动解决冲突代码、提交合并后的代码,以及推送到远程分支。
3943 3
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
|
JSON API 开发工具
淘宝实时 API 接口丨淘宝商品详情接口(Taobao.item_get)
淘宝商品详情接口(Taobao.item_get)允许开发者获取商品的详细信息,包括基本信息、描述、卖家资料、图片、属性及销售情况等。开发者需注册账号、创建应用并获取API密钥,通过构建请求获取JSON格式数据,注意遵守平台规则,合理使用接口,确保数据准确性和时效性。
1198 9