Domain testing 云里雾里的概念

本文探讨了域测试(Domaintesting)的不同定义与应用方法。一种观点认为它是基于领域知识的黑盒测试方法,专注于验证输入输出域的有效性;另一种观点则将其视为白盒测试的一部分,用于检查变量值是否处于有效范围内。通过对比分析,本文倾向于将域测试归类为黑盒测试的一种形式。

最近在学习软件测试用例的设计方法,发现Domain testing的概念还模糊阿。有的说是白盒测试的一种方法,有的说是黑盒测试的一种方法,难煞了我这个初学者。

Domain testing概念1:领域测试,是指测试人员对相关领域有特别深厚的经验,因此能针对性的设计高质量的用例。

Domain testing概念2:出处在http://www.mathematik.uni-ulm.de/~melzer/thesis/node19.html 中,原文摘录如下:

The last important white box testing  method discussed here is domain testing. The goal is to check values taken by a variable, a condition, or an index, and to prove that they are outside the specified or valid range. It also contains checking that the program acepts only valid input , because it is unlikely to get reasonable results if idiocy has been entered. Colloquially, this part can be called ``garbage in -- garbage out'' testing. 

 

Domain testing概念3:出处在http://www.testingeducation.org/k04/documents/bbst5_2005.pdf中,原文摘录如下:

Black Box Software Testing
2005 Academic Edition
DOMAIN TESTING
by
Cem Kaner, J.D., Ph.D.
Professor of Software Engineering
Florida Institute of Technology

 

我的理解,粗粗看了一下,Domain testing 是关于输入域和输出域是否合法的一种测试方法,应该是黑盒测试的一种.

### 寄存器模型中 Domain 的定义和作用 在寄存器模型的上下文中,`domain` 并不是一个直接定义的概念,但它可以从相关领域的设计模式中推导出其意义。例如,在硬件描述语言(HDL)或验证方法学(如UVM)中,`domain` 通常被用来表示一个逻辑上的分组或范围,用于将一组相关的寄存器、内存或其他资源组织在一起[^1]。 #### 1. **Domain 的定义** 在寄存器模型中,`domain` 可以被理解为一组具有相同属性或功能的寄存器集合。这些属性可能包括但不限于地址空间、访问权限、时钟域或复位域等。通过定义 `domain`,可以更清晰地对寄存器模型进行分层管理,从而提高模型的可维护性和可扩展性。 - 在 UVM 寄存器模型中,`domain` 的概念可以通过 `uvm_reg_block` 和 `uvm_reg_map` 的层次结构间接体现。`uvm_reg_block` 表示一个寄存器块,而 `uvm_reg_map` 定义了如何将寄存器映射到特定的地址空间[^3]。 - 在某些情况下,`domain` 还可以表示一个独立的中断域(如 ARM 的 `irq_domain`),它负责将硬件中断号映射到虚拟中断号,以便操作系统能够正确处理中断请求[^1]。 #### 2. **Domain 的作用** `domain` 的作用主要体现在以下几个方面: - **逻辑分组**:将具有相似功能或属性的寄存器归类到同一个 `domain` 中,便于管理和操作。例如,一个设备可能包含多个寄存器块,每个块对应不同的功能模块(如控制、状态、数据传输等)。通过定义不同的 `domain`,可以将这些模块区分开来。 - **地址映射**:在复杂的系统中,可能存在多个地址空间或总线接口。`domain` 可以帮助定义不同地址空间之间的映射关系,确保寄存器访问的一致性和正确性[^3]。 - **访问控制**:通过 `domain`,可以为不同的寄存器集定义不同的访问权限或条件。例如,某些寄存器可能只能在特定的时钟域或复位域下访问。 - **抽象化**:`domain` 提供了一种抽象机制,使得上层软件或验证环境无需关心底层实现细节,只需通过统一的接口与寄存器交互。 #### 3. **代码示例** 以下是一个简单的 UVM 寄存器模型中使用 `domain` 的示例: ```systemverilog class my_reg_block extends uvm_reg_block; rand uvm_reg_map reg_map_1; // 定义第一个地址映射域 rand uvm_reg_map reg_map_2; // 定义第二个地址映射域 rand my_reg reg_a; rand my_reg reg_b; function new(string name = "my_reg_block"); super.new(name, UVM_NO_COVERAGE); endfunction virtual function void build(); // 创建寄存器 reg_a = my_reg::type_id::create("reg_a"); reg_b = my_reg::type_id::create("reg_b"); // 添加寄存器到不同的映射域 reg_map_1 = create_map("reg_map_1", 'h0, 4, UVM_LITTLE_ENDIAN); reg_map_2 = create_map("reg_map_2", 'h100, 4, UVM_LITTLE_ENDIAN); reg_a.configure(this, null); reg_b.configure(this, null); reg_map_1.add_reg(reg_a, 'h0, "RW"); reg_map_2.add_reg(reg_b, 'h0, "RW"); endfunction endclass ``` 在这个例子中,`reg_map_1` 和 `reg_map_2` 可以被视为两个不同的 `domain`,分别定义了不同的地址空间和寄存器映射关系。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值