Z-Wave CTT使用方法以及测试演示

Z-Wave CTT简介:
Z-Wave CTT也叫Z-Wave认证测试工具(Z-Wave Certification Test Tool), 是一款基于Microsoft Windows的应用程序,能够对 Z-Wave 设备进行自动化或半自动化测试,用于认证 Z-Wave 设备。 被测试的设备称为DUT(Device Under Test)。 认证基于 CTT 提供的测试脚本并针对 DUT 运行测试用例。 每个测试用例都旨在检查一组特定的属性和要求。 CTT 和 Z-Wave 网络之间的任何通信都是通过 Z-Wave USB dongle或Z-Wave开发板完成的。
在这里插入图片描述
使用测试用例脚本文件
Z-Wave CTT 为大多数 Z-Wave 命令类提供了许多预定义的标准测试用例。我们可以调整这些测试用例的Script文件,让CTT帮助我们做辅助的产品功能测试。在Workfolow中点击Script Test进入脚本测试选项卡,选中你想修改的脚本对其Script进行调整。 在这里插入图片描述
Z-Wave CTT Script语法:

  • 测试项目标题: 每个测试脚本文件的第一行就是测试项目的标题,创建测试项目时自动生产的第一行代码。不需要修改。
PACKAGE MyTestCase_Rev01_User; // do not modify this line
  • 命令类的定义:目的是让脚本引擎知道本脚本使用的命令类的准确版本,USE语句可以在脚本的任何地方使用,所以命令类的定义可以放在脚本的任何地方。如果没有使用命令类定义它,则自动使用Version 1。
USE Association CMDCLASSVER = 1;
  • 测试片段(Test Sequences):在测试脚本标题下方列出了一个或多个测试片段。这是测试工程的子部分。每个测试片段都可惟单独测试,未被选中的测试片段不会执行。"InitialValues"是测试片段的名称,双引号中的字符串是注释。测试片段是一个局部作用域空间,测试片段中定义的变量只能在本测试片段中使用。 在Test Case Explorer中的ZWave_CTT_CommandClasses下包含所有Command Class的测试模板,可以将其添加到你的测试项目中进行修改。
TESTSEQ InitialValues: "Verify Initial Values"
...
TESTSEQ END
  • 测试语句(Test Statements):标准测试语句是向DUT发送 Z-Wave Command的"SEND"语句和接收响应并通过"EXPECT"语句将其与定义的预期值进行比较。也可以用SEND和EXPECT模板将脚本语句添加到脚本中。“SEND”和“EXPECT” 语句的格式如下:
SEND Association.Get(
    GroupingIdentifier = 1);

EXPECT Association.Report (
    GroupingIdentifier == 1,
    MaxNodesSupported in (0 ... 0xFF),
    ReportsToFollow == 0,
    NodeID eq (1,2));

数字变量:
CTT中的数字变量以$开头,可以在测试片段中定义全局变量和局部变量。局部变量仅在定义它们的测试片段中可见。全局变量是全局可见的,并且在所有后续测试片段中也保留其值。定义与已经存在的局部变量同名的全局变量将导致编译错误。定义与现有全局变量同名的局部变量会更新全局变量的值。

$var = 2012;                   // creates a local unsigned integer variable
$array = [0x01, 0x02, 0x03];   // creates a local array of unsigned integers

GLOBAL $var = 2012;                 // creates a global unsigned integer variable
GLOBAL $array = [0x01, 0x02, 0x03]; // creates a global array of unsigned integers

字符串变量:
CTT 脚本语言中的另一种类型的变量是字符串。字符串变量名称以“#”符号开头:

#var = "test";                        // creates a local string variable
#array = ["alpha", "beta", "gamma"];  // creates a local array of strings

GLOBAL #var = "test";                       // creates a global string variable
GLOBAL #array = ["alpha", "beta", "gamma"]; // creates a global array of strings

数组:
在 CTT 脚本语言中,数组变量可能包含无符号整数、字节或字符串,具体取决于它们的初始化方式(参见上面的部分)。如果变量包含数组,则可以读取数组元素:数组元素从索引 0 开始。如果使用的元素索引超出范围,则脚本执行将因运行时异常而中止。数组元素的数量可以访问如下:

$nodeIds = [1, 2, 3];
$length = LENGTH($nodeIds);

可以使用“==”、“!=”或“eq”运算符在 IF 语句中比较数值数组变量:

$a = [1, 2, 3, 4];
$b = [4, 3, 2, 1];
IF ($a == $b)     // this is false
IF ($a eq $b)    // this is true  

数组变量可以用固定长度初始化:

$array = ARRAYINIT(10);           // creates an unsigned integer array with 10 elements set to 0
#strarray = STRARRAYINIT(10);     // creates a string array with 10 emtpy string elements

可以在现有数组变量中追加、插入和删除数组元素:

$array = ARRAYAPPEND($array, 2);                // appends an array element with value 2
#strarray = STRARRAYAPPEND(#strarray, "test");  // appends an array element with value "test"

$array = ARRAYINSERT($array, 1, 2);               // inserts an array element with value 2 at array index 1
#strarray = STRARRAYINSERT(#strarray, 2, "test"); // inserts an array element with value "test" at array index 2

$array = ARRAYREMOVE($array, 2);                // removes the array element with index 2 from the array
#strarray = STRARRAYREMOVE(#strarray, 2);       // removes the array element with index 2 from the array

如果给定的索引值超过数组中元素的数量,将引发运行时异常。
使用以下代码可以测试数组中是否存在某个值:

$uintArray = [1, 2 ,3];
#stringArray = ["1", "2", "3"];

IF (INARRAY($uintArray, 1) == true)
{
    MSGPASS("UInt Array Test 1: Pass");
}

IF (INARRAY(#stringArray, "1") == true)
{
    MSGPASS("String Array Test 1: Pass");
}  

运算符:
以下列表包含CTT支持的算术、逻辑或布尔表达式的所有运算符。列表项 1 中的运算符在脚本编译期间具有最高优先级:

1. *, /, %
2. +, -
3. <<, >>
4. <, >, <=, >=
5. ==, !=, eq
6. &
7. |
8. &&
9. ||

条件控制语句:
CTT中条件语句的一般形式如下,

IF ( $i > 0 ) 
{ 
  ... 
} 
ELSEIF ( $i == 0 ) 
{
  ...
} 
ELSE 
{
  ...
}

循环语句:

LOOP($i; 0; 10)
{
    IF ($i > 6)
    {
        //CONTINUE; BREAK;
    }
}

循环语句的基本格式如上,循环语句的第一个参数是计数器变量。第二个参数是开始值,第三个参数是计数器变量的结束值。在每次循环迭代中,计数器变量递增 1,当计数器变量等于最终值时完成最后一次循环。第二个和第三个 LOOP 参数也可以使用变量。可以使用CONTINUE或BREAK结束当前循环或跳出循环。

测试演示:
现在我们使用CTT的脚本建立一个死循环,来实现长时间的自动老化测试(On/Off)。

PACKAGE MyTestCase_Rev10_User; // do not modify this line
USE Basic CMDCLASSVER = 2;
USE SwitchBinary CMDCLASSVER = 2;

TESTSEQ TurnOnOff: "Turn on and off"

    $delay1 = 3500; // Delay after OFF command. This value MAY be changed.
    $delay2 = 3500; // Delay after ON command. This value MAY be changed.
    
    LOOP($i; 1; 999999) 
    
    { 
    
    SEND Basic.Set(Value = 0);
    WAIT ($delay1);
    
    SEND Basic.Get( );
    EXPECT Basic.Report(
        $value = CurrentValue == 0);


    MSG ("Set the level in a device");

    SEND Basic.Set(Value = 99);
    WAIT ($delay2);
    
    SEND Basic.Get( );
    EXPECT Basic.Report(
        $value = CurrentValue == 99);
    }  
  
TESTSEQ END // TurnOnOff

CSDN博客仅作为本人工作学习之余的笔记使用,无任何商业目的,如果侵犯了你的隐私或权益,请随时联系作者,本人将及时删除相关内容

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值