MindStudio提供了基于gtest框架的新的UT测试方案,简化了开发者开发UT测试用例的复杂度。
UT(Unit Test:单元测试)是开发人员进行单算子运行验证的手段之一,主要目的是:
测试类的详细定义可参见Ascend-cann-toolkit安装目录/ascend-toolkit/latest/python/site-packages/op_test_frame/ut/op_ut.py文件。
CentOS7.8 arm容器暂不支持UT测试功能。
右键单击算子工程根目录,选择“New Cases > AI CPU UT Case”。
若已经存在了算子的UT测试用例,可以右键单击“testcases”目录或“testcases > ut”目录,选择“New Cases > AI CPU UT Case”,创建UT测试用例。
若已存在此算子的UT测试用例,系统会提示“testcases/ut/ops_test/xx already exists. Do you want to overwrite?”
可以选择“Overwrite”覆盖当前测试用例或者“Cancel”取消覆盖。
创建完成后,会在算子工程根目录下生成testcases文件夹,目录结构如下所示:
├── MyOperator //工程根目录 │ ├── testcases │ │ ├── libs // gtest框架,为第三方依赖,用户无需关注 │ │ ├── ut │ │ │ ├── aicpu_test │ │ │ │ ├── reshape_cust │ │ │ │ │ ├── CMakeLists.txt //用于编译可执行文件 │ │ │ │ │ ├── test_reshape_cust_impl.cc //算子实现代码的测试用例文件 │ │ │ │ │ ├── test_reshape_cust_proto.cc //算子原型定义代码的测试用例文件,MindSpore框架的算子不包含该文件 │ │ │ │ ├── CMakeLists.txt //用于编译可执行文件 │ │ │ │ ├── test_main.cc //测试用例调用总入口 │ │ │ ├ CMakeLists.txt
cmake_minimum_required(VERSION 3.14) set(CMAKE_CXX_FLAGS "-std=c++11") ... link_directories( "${ATC_DIR}/lib64" "${GTEST_DIR}" "/usr/local/gcc7.3.0/lib64/" //若用户自己配置dockerfile请修改为实际gcc7.3.0的lib64路径 ) set(CUSTOM_OBJECT_NAME "reshape_cust_proto_test") add_executable(${CUSTOM_OBJECT_NAME} ${PROJECT_DIR}/testcases/ut/aicpu_test/test_main.cc ${OP_PROTO_SOURCE_SRCS} ${OP_PROTO_TEST_FILES}) target_link_libraries(${CUSTOM_OBJECT_NAME} gtest c_sec alog pthread error_manager graph register) endif()
使用AI CPU UT测试功能时,gcc版本为7.3.0及以上,若gcc版本不满足要求,请升级gcc版本。
在“testcases/ut/aicpu_test/reshape_cust/test_reshape_cust_impl.cc”文件中,编写算子实现代码的UT C++测试用例,计算出算子执行结果,并取回结果和预期结果进行比较,来测试算子逻辑的正确性。
在“testcases/ut/aicpu_test/reshape_cust/test_reshape_cust_proto.cc”文件中,编写算子原型定义的UT C++测试用例,用于定义算子实例、更新算子输入输出并调用InferShapeAndType函数,最后验证InferShapeAndType函数执行过程及结果的正确性。
开发人员可以执行当前工程中所有算子的UT测试用例,也可以执行单个算子的UT测试用例。
参数 |
说明 |
---|---|
Name |
运行配置名称,用户可以自定义。 |
Test Type |
选择ut_impl。 |
Compute Unit |
选择计算单元。
选择不同的计算单元可以实现AI Core/Vector Core和AI CPU UT测试配置界面的切换。 |
Operator Name |
选择运行的测试用例。
|
Case Names |
勾选需要运行的测试用例,即算子实现代码的UT C++测试用例。支持全选和全不选所有测试用例。 |
查看UT测试用例运行结果需要使用浏览器,如果未安装浏览器,请用户自行安装。
如果出现"Page'http://***.html'requested without authorization, you can copy URL and open it in browser to trust it."提示,请参考配置不受信任的网址访问浏览器解决。
参数 |
说明 |
---|---|
Name |
运行配置名称,用户可以自定义。 |
Test Type |
选择ut_impl。 |
Compute Unit |
选择计算单元。
选择不同的计算单元可以实现AI Core/Vector Core和AI CPU UT测试配置界面的切换。 |
Operator Name |
选择运行的测试用例。
|
Case Names |
勾选需要运行的测试用例,即算子实现代码的UT C++测试用例。支持全选和全不选所有测试用例。 |
开发人员可以执行当前工程中所有算子的UT测试用例,也可以执行单个算子的UT测试用例。
参数 |
说明 |
---|---|
Name |
运行配置名称,用户可以自定义。 |
Test Type |
选择ut_proto。 |
Compute Unit |
选择计算单元。
选择不同的计算单元可以实现AI Core/Vector Core和AI CPU UT测试配置界面的切换。 |
Operator Name |
选择运行的测试用例。
|
Case Names |
勾选需要运行的测试用例,即TEST_F中定义的用例。支持全选和全不选所有测试用例。 |
运行完成后,通过界面下方的日志打印窗口,查看运行结果。结果中展示测试用例运行成功和失败的情况。
旧的UT测试工程在更新Ascend-cann-toolkit开发套件包后,可能会出现UT测试运行失败。解决方法为删除旧的UT测试依赖文件夹后重新运行UT测试。旧的UT测试依赖文件夹路径为“AI CPU算子工程目录/testcases/libs/aicpu_depend”。