回复
鸿蒙L0设备测试用例开发指导 原创
zhangchunbao515
发布于 2021-9-17 22:16
浏览
1收藏
1 框架简介
1.1 L0框架简介
L0设备使用的测试框架是hctest,其代码位于test/xts/tools/lite/hctest目录下。此框架支持使用C语言编写测试用例,是在开源测试框架unity的基础上进行增强和适配。
2 用例编写
2.1 目录规范
2.1.1 目录规划
L0的测试用例存放在各子系统部件模块的根目录下,例如utils/native/lite/test。
2.1.2 目录结构
部件根目录
├── test
│ ├── kv_store_hal
│ │ ├── BUILD.gn
│ │ ├── Test.tmpl
│ │ └── src
│ │ └── kvstore_func_test.c
│ └── kv_store_posix
│ ├── BUILD.gn
│ ├── Test.json
│ └── src
│ └── KvStoreTest.cpp
备注:hal归档L0自动化用例,posix归档L1自动化用例
2.2 用例编写
2.2.1 引用测试框架
#include “hctest.h”
2.2.2 定义测试信息
使用宏定义LITE_TEST_SUIT定义子系统,模块,测试套件名称
/**
* @tc.desc : register a test suite, this suite is used to test basic flow and interface dependency
* @param : subsystem name is utils
* @param : module name is kvStore
* @param : test suit name is KvStoreFuncTestSuite
*/
LITE_TEST_SUIT(utils, kvStore, KvStoreFuncTestSuite);
2.2.3 定义Setup和TearDown
1、命名方式:测试套件名称+Setup,测试套件名称+TearDown;2、Setup和TearDown函数必须存在,函数体可以为空
/**
* @tc.setup : setup for all testcases
* @return : setup result, TRUE is success, FALSE is fail
*/
static BOOL KvStoreFuncTestSuiteSetUp(void)
{
return TRUE;
}
/**
* @tc.teardown : teardown for all testcases
* @return : teardown result, TRUE is success, FALSE is fail
*/
static BOOL KvStoreFuncTestSuiteTearDown(void)
{
return TRUE;
}
2.2.4 编写测试用例
包括三个参数:测试套件名称,测试用例名称,用例级别
/**
* @tc.number : SUB_UTILS_KV_STORE_0100
* @tc.name : UtilsSetValue parameter legal test
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(KvStoreFuncTestSuite, KvStoreSetValue001, Function | MediumTest | Level1)
{
char key[] = "rw.sys.version";
char value[] = "Hello world !";
int ret = UtilsSetValue(key, value);
TEST_ASSERT_EQUAL_INT(0, ret);
ret = UtilsDeleteValue(key);
TEST_ASSERT_EQUAL_INT(0, ret);
};
2.2.5 注册测试套件
RUN_TEST_SUITE(KvStoreFuncTestSuite);
2.2.6 完整示例说明
/*
* Copyright (c) 2020-2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ohos_types.h"
#include <securec.h>
#include "hctest.h"
#include "utils_config.h"
/**
* @tc.desc : register a test suite, this suite is used to test basic flow and interface dependency
* @param : subsystem name is utils
* @param : module name is kvStore
* @param : test suit name is KvStoreFuncTestSuite
*/
LITE_TEST_SUIT(utils, kvStore, KvStoreFuncTestSuite);
/**
* @tc.setup : setup for all testcases
* @return : setup result, TRUE is success, FALSE is fail
*/
static BOOL KvStoreFuncTestSuiteSetUp(void)
{
return TRUE;
}
/**
* @tc.teardown : teardown for all testcases
* @return : teardown result, TRUE is success, FALSE is fail
*/
static BOOL KvStoreFuncTestSuiteTearDown(void)
{
return TRUE;
}
/**
* @tc.number : SUB_UTILS_KV_STORE_0100
* @tc.name : UtilsSetValue parameter legal test
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(KvStoreFuncTestSuite, testKvStoreSetValue001, Function | MediumTest | Level1)
{
char key[] = "rw.sys.version";
char value[] = "Hello world !";
int ret = UtilsSetValue(key, value);
TEST_ASSERT_EQUAL_INT(0, ret);
ret = UtilsDeleteValue(key);
TEST_ASSERT_EQUAL_INT(0, ret);
};
/**
* @tc.number : SUB_UTILS_KV_STORE_0200
* @tc.name : UtilsSetValue parameter legal test using key with underline
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(KvStoreFuncTestSuite, testKvStoreSetValue002, Function | MediumTest | Level1)
{
char key[] = "rw.sys.version_100";
char value[] = "Hello world !";
int ret = UtilsSetValue(key, value);
TEST_ASSERT_EQUAL_INT(0, ret);
ret = UtilsDeleteValue(key);
TEST_ASSERT_EQUAL_INT(0, ret);
};
RUN_TEST_SUITE(KvStoreFuncTestSuite);
2.3 编译文件
在每个测试套件目录下新建BUILD.gn文件,用于指定构建目标的名称,依赖的头文件,依赖的库文件等。
# Copyright (c) 2020-2021 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//test/xts/tools/lite/build/suite_lite.gni")
hctest_suite("KvStoreTest") {
suite_name = "acts"
sources = [ "src/kvstore_func_test.c" ]
include_dirs = [
"src",
"//utils/native/lite/include",
"//base/iot_hardware/peripheral/interfaces/kits",
]
cflags = [ "-Wno-error" ]
}
2.4 配置文件
在每个测试套件目录下新建Test.tmpl文件,内容如下:
{
"description": "Config for $module test cases",
"environment": [
{
"type": "device",
"label": "wifiiot"
}
],
"kits": [
{
"type": "DeployKit",
"timeout": "20000",
"burn_file": "$subsystem/$module.bin"
}
],
"driver": {
"type": "CTestLite"
}
}
2.5 配置编译目标
进入test/developertest/src/core/build目录,在build_lite_testcases.sh文件中按如下格式添加构建目标路径:
BUILD_TARGETS="${BUILD_TARGETS},//utils/native/lite/test/kv_store_hal:KvStoreTest"
备注:必须是完成的构建目标路径
3 用例编译
3.1 编译用例
1、编译所有用例
./test/developertest/src/core/build/build_lite_testcases.sh product=wifiiot_hispark_pegasus kernel=liteos_m
2、编译指定目标的用例
./test/developertest/src/core/build/build_lite_testcases.sh product=wifiiot_hispark_pegasus kernel=liteos_m target=//utils/native/lite/test/kv_store_hal:KvStoreTest
3.2 输出目录
测试用例输出路径为out/hispark_pegasus/wifiiot_hispark_pegasus/test,其目录结构如下:
test
├── module_info.json
├── test_component.json
└── unittest
└── utils
├── KvStoreTest.bin
└── KvStoreTest.json
4 用例执行
参考鸿蒙脱离源码执行测试用例的方法。
备注:L0用例目前只能在Windows下执行。
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
已于2021-9-17 22:16:07修改
赞
1
收藏 1
回复