概述
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博客仅作为本人工作学习之余的笔记使用,无任何商业目的,如果侵犯了你的隐私或权益,请随时联系作者,本人将及时删除相关内容
最后
以上就是明理缘分为你收集整理的Z-Wave CTT使用方法以及测试演示的全部内容,希望文章能够帮你解决Z-Wave CTT使用方法以及测试演示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复