ohos_bundles/developer_test
2020-09-10 10:22:30 +08:00
..
bundle.json add OpenHarmony 1.0 baseline 2020-09-10 10:22:30 +08:00
LICENSE add OpenHarmony 1.0 baseline 2020-09-10 10:22:30 +08:00
README.md add OpenHarmony 1.0 baseline 2020-09-10 10:22:30 +08:00

测试子系统README

测试子系统

简介

开发过程采用测试驱动开发模式,开发者基于系统新增特性可以通过开发者自己开发用例保证,对于系统已有特性的修改,也可通过修改项目中原有自测试用例保证,开发者自测试旨在帮助开发者在开发阶段就能开发出高质量代码

目录

表 1 开发者自测试工具源代码目录结构

名称

描述

developertest

开发自测试框架

developertest/src

测试框架源码

developertest/src/core

测试执行器

developertest/src/core/build

自测试用例编译

developertest/src/core/command

对用户输入的命令行处理

developertest/src/core/config

测试框架配置管理

developertest/src/core/driver

测试框架驱动执行器

developertest/src/core/resource

测试框架配置文件

developertest/src/core/testcase

测试用例管理

developertest/src/core/common.py

测试框架公共操作

developertest/src/core/constants.py

测试框架全局常量

developertest/src/core/exception.py

测试框架异常定义

developertest/src/core/utils.py

测试框架工具方法

developertest/src/main

测试框架平台

developertest/src/main/__main__.py

测试框架内部入口

developertest/example

测试框架demo用例

developertest/third_party

测试框架依赖第三方组件适配

developertest/BUILD.gn

测试子系统编译配置

developertest/start.bat

开发者自测试入口Windows

developertest/start.sh

开发者自测试入口Linux

约束

测试工具环境依赖

  1. python版本>=3.7.5
  2. NFS版本>=V4
  3. 运行操作系统Windows版本>=Win10Linux为Ubuntu18.04

安装

依赖python环境

需要本地的python安装串口插件pyserial在shell界面执行安装命令pip intall pyserial安装成功如下图

编写测试用例

  • 自测试用例规范

    • 命名规范

      测试用例源文件名称和测试套内容保持一致测试套与用例之间关系1:N测试套与测试源文件之间关系1:1每个源文件全局唯一格式[特性]_[功能]_[子功能1]_[子功能1.1],子功能支持向下细分。

      文件命名采用大驼峰方式命名以Test结尾如demo用例developertest/example/cxx_demo

    • 用例编码规范

      开发者自测试用例原则上与特性代码编码规范保持一致,另外需要添加必要的用例描述信息,详见•自测试用例模板

    • 测试用例编译配置规范

      用例采用GN方式编译配置遵循本开源项目的编译指导使用

  • 自测试用例模板

    详见测试demo用例developertest/example/cxx_demo/test/unittest/common/calc_subtraction_test.cpp

    说明: Feature: 被测特性的描述 Function: 被测特性功能 SubFunction被测特性子功能 FunctionPoints被测的功能点 EnvConditions被测特性的环境与被测条件 CaseDescription测试用例描述 step测试复杂逻辑时注明用例执行的步骤

  • 自测试用例目录规划

    subsystem子系统系统组件
    ├── module模块
    │     └── test模块测试目录
    │             └── unittest单元测试
    │                    ├── common公共用例
    │                    ├── liteos仅liteos核用例
    │                    └── linux仅Linux核用例
    │             └── moduletest模块测试
    │                    ├── common
    │                    ├── liteos
    │                    └── linux
    └── test子系统测试目录
           └── unittest单元测试
                 ├── common
                 ├── liteos
                 ├── linux
           └── moduletest模块测试
                 ├── common
                 ├── liteos
                 ├── linux
    
    

    说明: 其中liteos和Linux仅不同设备形态举例对于同一特性在不同开发板上如果用例没有差异则用例放置common目录下如果同一特性用例区分不同设备形态可能包含内核差异芯片平台差异则用例以目录区分

  • 编写自测试用例步骤

    1. 添加用例文件头注释说明

    2. 引用gtest头文件和ext命名空间

    3. 添加被测试类头文件

    4. 定义测试套(测试类)

    5. 实现该测试套具体的测试用例,包括用例注释和用例逻辑实现

    6. 编写用例编译配置

      说明: *样例参考developertest/example/cxx_demo/test/unittest/common/calc_subtraction_test.cpp 注意点如下: a、SetUp & TearDown是针对该测试套下每条用例执行前和执行后的处理逻辑 b、SetUpTestCase & TearDownTestCase是针对该测试套下所有用例执行前和执行后的处理逻辑 c、HWTEST的使用特点只适合做简单测试执行不依赖Setup & Teardown缺点多个测试场景需要相同数据配置的情况不适用测试用例之间可能相互影响不具备独立性 d、使用printf函数打印日志

  • 编写用例编译文件

    • 定义用例编译构建目标

      1. 添加用例编译文件头注释信息
      2. 导入用例编译模板文件
      3. 指定用例文件输出路径
      4. 配置用例编译依赖包含目录
      5. 指定用例编译目标输出的用例执行文件名称
      6. 编写具体的用例编译脚本(添加需要参与编译的源文件、配置和依赖
      7. 对目标用例文件进行条件分组分组名称固定为unittest/moduletest)
    • 如果存在多个测试套,定义公共编译配置

    • 将测试用例添加到构建系统中

      说明: *样例参考developertest/example/cxx_demo/test/unittest/common/BUILD.gn

  • 测试用例级别定义

    • 基本Level1:<1s
    • 重要Level2:<10s
    • 一般Level3:<5min
    • 生僻Level4:>5min

使用测试框架

  • 安装xdevice基础框架

    1. 以Windows环境为例打开xdevice安装目录test\xdevice

    2. 打开控制台窗口,执行如下命令

      python setup.py install
      
    3. 安装成功如下图

  • 修改xdevice基础框架配置

    文件xdevice/config/user_config.xml

    1. device
      <device type="com" label="ipcamera">
          <serial>
              <com>COM1</com>
              <type>cmd</type>
              <baund_rate>115200</baund_rate>
              <data_bits>8</data_bits>
              <stop_bits>1</stop_bits>
              <timeout>1</timeout>
          </serial>
      </device>
      
  • 修改developertest组件配置

    文件resource/config/user_config.xml

    1. test\_cases
      <test_cases>
          <dir>S:\out\ipcamera_hi3518ev300_liteos_a\test</dir>
      </test_cases>
      
    2. NFS
      <NFS>
          <host_dir>D:\nfs</host_dir>
          <board_dir>user</board_dir>
      </NFS>
      
  • 执行自测试用例前的环境检查

    • 系统镜像与文件系统已烧录进开发板开发板上系统正常运行在系统模式下如shell登录时设备提示符OHOS#
    • 开发主机和开发板串口连接正常,网口连接正常
    • 开发主机IP与开发板IP处在同一小网网段相互可以ping通
    • 开发主机侧创建空目录用于开发板通过NFS挂载测试用例并且NFS服务启动正常
  • 运行测试套

    • 启动测试框架

      1. Windows环境启动测试框架

        start.bat
        
      2. Linux环境启动测试框架

        ./strat.sh
        
    • 设备形态选择

      根据实际的开发板选择设备形态配置developertest/src/core/resource/config/framework_config.xml

    • 执行测试指令

      1. 执行测试指令示例,其中-t ut为必选-ss和-tm为可选字段

        run -t ut -ss test -tm example
        
      2. 参数说明:指定参数可以执行特定特性、模块对应的测试套

        usage: __main__.py [-h] [-p PRODUCTFORM] [-t [TESTTYPE [TESTTYPE ...]]]
            [-ss SUBSYSTEM] [-tm TESTMODULE] [-ts TESTSUIT]
            [-tc TESTCASE] [-tl TESTLEVEL] [-os TARGET_OS_NAME]
            [-bv BUILD_VARIANT] [-b [BUILD [BUILD ...]]]
            [-cov COVERAGE] [-tf TESTFILE] [-res RESOURCE]
            [-sn DEVICE_SN] [-c CONFIG] [-rp REPORTPATH] [-e EXECTYPE]
            [-td TEST_DRIVER]
            action Specify test para.positional arguments:
                action                Specify action
        
        optional arguments:
            -h, --help            show this help message and exit
            -p PRODUCTFORM, --productform PRODUCTFORM    Specified product form
            -t [TESTTYPE [TESTTYPE ...]], --testtype [TESTTYPE [TESTTYPE ...]]
                Specify test type(UT,MST,ST,PERF,ALL)
            -ss SUBSYSTEM, --subsystem SUBSYSTEM    Specify test subsystem
            -tm TESTMODULE, --testmodule TESTMODULE    Specified test module
            -ts TESTSUIT, --testsuit TESTSUIT    Specify test suit
            -tc TESTCASE, --testcase TESTCASE    Specify test case
            -tl TESTLEVEL, --testlevel TESTLEVEL    Specify test level
            -bv BUILD_VARIANT, --build_variant BUILD_VARIANT    Specify build variant(release,debug)
            -b [BUILD [BUILD ...]], --build [BUILD [BUILD ...]]
                Specify build values(version,testcase)
            -tf TESTFILE, --testfile TESTFILE    Specify test suites list file
            -res RESOURCE, --resource RESOURCE    Specify test resource
            -sn DEVICE_SN, --device_sn DEVICE_SN    Specify device serial number
            -c CONFIG, --config CONFIG    Specify test config file
            -rp REPORTPATH, --reportpath REPORTPATH    Specify test report path
            -e EXECTYPE, --exectype EXECTYPE    Specify test execute type
            -td TEST_DRIVER, --testdriver TEST_DRIVER    Specify test driver id
        
  • 测试框架帮助

    • 帮助指令,用于查询测试平台支持哪些测试指令

      help
      

测试结果与日志

  • 通过在测试框架中执行测试指令,即可以生成测试日志和测试报告

  • 测试结果

    • 测试用例的结果会直接显示在控制台上,执行一次的测试结果根路径如下:

      reports/xxxx-xx-xx-xx-xx-xx
      
    • 测试用例格式化结果

      result/
      
    • 测试用例日志

      log/plan_log_xxxx-xx-xx-xx-xx-xx.log
      
    • 测试报告概率

      summary_report.html
      
    • 测试报告详情

      details_report.html
      
  • 测试框架日志

    reports/platform_log_xxxx-xx-xx-xx-xx-xx.log
    
  • 最近一次测试报告

    reports/latest
    

涉及仓

test_developertest

test_xdevice