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).
目录
相关文章
|
传感器 运维 物联网
IT知识百科:什么是蜂窝小区?
【2月更文挑战第24天】
2056 5
IT知识百科:什么是蜂窝小区?
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统换源教程】
现在,你已经成功将Ubuntu系统的软件源更换为你指定的源地址。换源后,系统将从新的源地址下载软件包和更新。
404 0
|
机器学习/深度学习 自然语言处理 数据挖掘
Kaggle Jigsaw文本分类比赛方案总结
Kaggle Jigsaw文本分类比赛方案总结
988 0
Kaggle Jigsaw文本分类比赛方案总结
|
Shell 数据安全/隐私保护
执行jobs命令查看不到任务的原因终于找到了
背景 执行nohup command &后,断开终端,执行jobs命令查看不到任务的原因,终于找到了。 首先执行完如下步骤: 1.nohup scp user@server:path/file localpath 2.输入密码 3.按Ctrl+Z挂起当前进程 4.使用命令bg让挂起的进程继续运行
|
安全 测试技术 API
详解软件需求中的外部接口需求
本文介绍了外部接口在软件系统中的作用及相关知识点,包括API、Web服务、数据集成、硬件接口等常见类型,同时涵盖身份验证、授权、数据格式、接口文档、错误处理等关键技术点,旨在帮助开发团队实现系统间的高效、安全、可靠通信与集成。
967 0
|
9月前
|
缓存 数据安全/隐私保护 开发者
哔哩哔哩 item_search_video - 根据关键词获取视频列表接口对接全攻略:从入门到精通
哔哩哔哩item_search_video接口支持通过关键词批量检索视频,可按分区、时间、播放量等多维度筛选,返回视频详情与UP主信息,适用于内容聚合、选题分析、舆情监控等场景。本攻略提供从权限获取、接口调用到调试优化的全流程指导,助力开发者高效稳定对接,合规实现数据应用。
|
存储 SQL 监控
SLS新版告警自助排查系列之告警监控
在SLS告警中,告警监控通过对数据源的查询监控,然后产生告警,并将告警发送到告警管理,告警管理会对告警进行降噪处理包括合并抑制静默后,在将告警发送给行动管理,最终发送通知到用户配置的接收渠道。在整个过程中,告警监控作为告警的源头,决定着告警是否能准确的发出。在配置告警监控规则时,配置不当或者配置错误都会导致告警不能触发或者不是希望的触发。本文主要介绍在告警监控中如何进行自助排查问题。
1235 0
|
弹性计算 编解码 大数据
小鹏汽车核心业务迁移至阿里云倚天实例,节省20%算力成本
9月20日,在2024云栖大会上,小鹏汽车宣布车联网、官网、商城、大数据等核心业务已迁移至阿里云倚天实例,节省了超过20%的算力成本。
1002 14
|
机器学习/深度学习 人工智能 算法
使用Python实现简单的神经网络
【8月更文挑战第31天】本文将引导你通过Python编程语言实现一个简单的神经网络。我们将从基础的感知机开始,逐步构建起一个能够进行简单线性分类的神经网络模型。文章不仅提供了代码示例,还解释了每一行代码的作用,确保即使是初学者也能跟上进度。通过这篇文章,你将学会如何用Python搭建、训练并测试你自己的神经网络。
|
JavaScript 前端开发 安全
轻松上手Web Worker:多线程解决方案的使用方法与实战指南
轻松上手Web Worker:多线程解决方案的使用方法与实战指南
644 0