Testability的追根溯源

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
可观测监控 Prometheus 版,每月50GB免费额度
简介: 本文探讨了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).
目录
相关文章
|
消息中间件 存储 监控
五分钟快速了解Airflow工作流
简介 Airflow是一个以编程方式创作、调度和监控工作流的平台。 使用 Airflow 将工作流创作为有向无环图(DAG)任务。 Airflow 调度程序按照你指定的依赖项在一组workers上执行您的任务。同时,Airflow拥有丰富的命令行实用程序使得在DAG上进行复杂的诊断变得轻而易举。并且提供了丰富的用户界面使可视化生产中运行的工作流、监控进度和需要排查问题时变得非常容易。 当工作流被定义为代码时,它们变得更易于维护、可版本化、可测试和协作。
|
2月前
|
存储 监控 安全
服务器死机,数据丢失怎么办?
【10月更文挑战第27天】当服务器死机且数据丢失时,应先尝试重启服务器并检查硬件问题。随后,利用备份数据、数据恢复软件或专业服务恢复数据。为预防未来数据丢失,需定期备份数据,使用热备份和RAID技术,定期维护服务器,强化安全性,并建立监控和日志记录机制。
138 8
|
3月前
|
测试技术
软件复杂度量化:McCabe度量法及其环路复杂度的计算方法
McCabe度量法(McCabe's Cyclomatic Complexity)是一种经典的方法,用于度量软件程序的复杂度。通过计算程序中独立路径的数量,帮助开发人员评估代码的维护难度和测试覆盖率。本文详细介绍了McCabe度量法的原理、计算方法及其在实际应用中的作用。
691 0
解决java.lang.IllegalStateException: Failed to load ApplicationContext错误~
解决java.lang.IllegalStateException: Failed to load ApplicationContext错误~
434 0
|
2月前
|
XML 监控 负载均衡
Jacoco的覆盖率原理
JaCoCo(Java Code Coverage)是一种广泛使用的代码覆盖率工具,通过在字节码中插入探针(Probe)来收集覆盖率信息。
133 5
Jacoco的覆盖率原理
|
2月前
|
前端开发 JavaScript 测试技术
Google提出的网页性能评价指标
Google推出的“网页指标”计划旨在优化网页用户体验,其中Core Web Vitals为核心指标,包括Largest Contentful Paint (LCP)、Interaction to Next Paint (INP)和Cumulative Layout Shift (CLS),分别衡量加载速度、互动性和视觉稳定性。这些指标采用第75百分位数评估,确保在不同设备和网络环境下提供一致的用户体验。
96 5
Google提出的网页性能评价指标
|
1月前
|
SQL 自然语言处理 IDE
LLM的IDE使用一段时间后的体会
使用Windsurf开发Web应用,全程无需手写代码,仅通过自然语言交流指导大模型完成任务。初期体验流畅高效,尤其适合快速实现小规模项目。然而,面对需求变更时,代码设计易受影响,需细致指导大模型以保持良好设计。整体而言,LLM辅助编程如同结对编程中的导航员角色,用户需提升自身指导能力以发挥其最大效能。
79 0
LLM的IDE使用一段时间后的体会
|
6月前
|
人工智能 搜索推荐 开发者
AI驱动的游戏设计:创造更智能、更沉浸的游戏体验
【7月更文第31天】人工智能(AI)技术正在深刻地改变游戏行业,不仅为游戏设计师提供了创造更丰富、更动态游戏世界的工具,也为玩家带来了更加个性化和沉浸式的体验。本文将探讨AI在游戏设计中的应用案例,并展示一些具体的实现方法。
791 2
|
2月前
|
XML 测试技术 数据格式
Jacoco的XML报告详解
JaCoCo的XML报告详解:本文介绍了使用JaCoCo生成的XML格式的测试覆盖率报告,包括报告结构、DTD文件定义、counter计数器及其类型(如INSTRUCTION、BRANCH等)、以及package、class、method、sourcefile等元素的具体内容和作用。通过这些信息,开发者可以详细了解测试代码的覆盖率情况,从而优化测试策略。
110 5
|
2月前
|
算法 人机交互 UED
响应时间指标的探索
本文探讨了响应时间在人机交互中的重要性及发展。从1968年Rober B.Miller首次定义响应时间的多个维度,到1991年Stuart K.Card等人提出的立即响应时间常数,再到1993年Jakob Nielsen将响应时间划分为三个关键阈值,直至2020年Google提出的RAIL模型,强调了以用户为中心的性能衡量标准。这些研究为提升用户体验提供了理论基础和技术指导。
182 5