器材单元测试

一. 环境搭建

环境配置详见(链接内git地址不是最新的,请下方的Git地址):
https://note.youdao.com/ynoteshare1/index.html?id=edf5bcb73d747addac01605742ebae60&type=note

Git地址(我是最新地址(づ ̄ 3 ̄)づ):
http://git.sdp.nd/vlab-automator-group/VLabAutomatorV3.git

需要安装的软件:
地址:X:\FTP共享\自动化测试工具\VLabAutomatorTools\env

  • Python
  • Pycharm
  • svnTortoiseSVN

二. 器材澄清

  1. 器材从澄清会开始,QA和开发等各职能都会参与进来。需要做好以下几点:
  2. 器材开始开发之把消息同步给QA,由QA那边根据策划案编写测试用例。
  3. 开发过程中的问题沟通,最好是同步各个职能,尽量避免只跟策划沟通,然后QA不清楚这部分沟通内容。
  4. 过程中有需要策划案修改的,必须要求案子修改完整,并且测试用例要跟案子保持一致。
  5. QA编写完测试用例会指派给对应的器材开发进行用例审核,这个审核过程大家一定要严格审核。
  6. 器材开发完成,可以根据测试用例自测一遍。如果没有开发完成,则需要根据案子,以及二、各方的沟通结果进行审核。

三. 器材开发

器材开发过程中,需根据QA提供的用例,进行关键步骤的数据的埋点,埋点直接在Lua脚本中,一般为器材属性等信息,例如:电压表通过IsRevers字段记录指针是否反转:

备注:
1.由于自动化断言的获取的器材数据,会转成json格式字符串进行返回,因此埋点字段的数据,不能使用userdata,function等特殊类型的数据,可使用number,table,string,boolean,其中table中的值也不能使用usedata,function等特殊类型。
2.如果userdata数据中包含number,table,string,boolean类型的数据,可以获取该字段的数据,例如:位置信息,由于位置信息是Vector3类型属于userdata所以不能直接获取,但是x,x,z属于基础数据类型number,因此可以获取到x,y,z的数据。

通用数据无需进行埋点,通用数据见:
https://docs.qq.com/sheet/DU0VoZlpkWkJhR1lP?tab=BB08J2

备注:开发过程中有通用部分,及时更新至表格内,方便大家后续使用。器材无法断言部分,请更新至表二“无法Lua断言内容”

断言中如何进行数据获取,详见断言部分

四. 器材预提测(OA)

器材开发完成后,可在OA上进行预提测,QA收到预提测后,会进行自动化脚本录制。
进入器材版本,在“用例执行设计”分页中,新建“用例执行设计”

用例执行设计里面的“提测内容”、“未做功能”大家一定要写清楚,如果器材是完整的功能提测可以备注“器材完整功能提测”,如果存在未完成的功能,这个时候则需要写清楚,方便后期QA测试,以及开发查阅每个版本对应的开发任务。

五. 获取自动化脚本

Git拉取自动化测试工程(http://git.sdp.nd/vlab-automator-group/VLabAutomatorV3.git)
并更新子模块。器材预提测后,QA会进行自动化脚本的录制,录制结束后,QA会通知对应开发同学并上传到自动化测试工程的子模块,开发同学直接到git进行拉取。例如:以下是电压表测试用自动化脚本

备注:QA提供的自动化脚本,需对每一个步骤节点进行注释,如果注释不清楚或未进行注释,须让录制自动化脚本的QA补全。

六. 插入断言

找到自动化并在自动化脚本根据QA写的注释,在关键节点获取器材数据,并数据进行断言校验。

6.1 获取器材数据

简要描述

  • 获取器材属性等数据(备注:依赖播放器组件2.11.0 基类VLabCommonLua_PC 3.5.0)

参数

参数名 必选 类型 说明
path string 路径,要获取的器材对象路径
index string 相同路径下如果存在多个器材对象,通过index指定,0表示第一个。多个相同器材,QA需要说明清楚具体的器材index
spliter string 分隔符,器材路径的分隔符,默认为”/”
key string 根据key值获取属性,传空则获取器材GetDumpProperty()返回的数据,详情见key扩展说明

返回示例

  {
    "Value": {
      "uid": "1",
      "username": "12154545",
      "name": "吴系挂",
      "groupid": 2 ,
      "reg_time": "1436864169",
      "last_login_time": "0",
    }
  }

返回参数说明

参数名 类型 说明
JsonData string 返回值会嵌套成{Value=xx}的形式进行返回,获取值需要通过[“Value”]进行获取

参数Key说明扩展:
参数key为string类型,可为空,格式为”AA BB CC”通过” ”(英文空格)进行分割,格式说明

示例:

  • 器材数据获取:
    self.rc.dump_element_properties(self.rc.joinLabRoot("xxx"),0,"","Property entityId")
    
  • 器材接口数据获取:
    self.rc.dump_element_properties(self.rc.joinLabRoot("xxx"),0,"","Function GetIsStatic string:EmptyChildPath")
    
  • 全局数据获取:
    self.rc.dump_element_properties(self.rc.joinLabRoot("xxx"),0,"","GlobalProperty LabControlAgent.LabPackagePath")
    
  • 全局接口数据获取:
    self.rc.dump_element_properties(self.rc.joinLabRoot("xxx"),0,"","GlobalFunction JointMgr.GetTagJointChildren number:entityId,string:tag")
    
    当key为空时,则获取器材接口GetDumpProperty()返回的数据,一般用于特殊数据的处理,多个数据可用table进行嵌套,例如:

    6.2 Unity组件数据件获取接口

    部分数据如果通过器材数据不好处理,可通过Unity组件数据接口进行获取
    详情见:
    https://note.youdao.com/ynoteshare1/index.html?id=21d41f1be0ceafbc98ee2a005f210e63&type=note

    6.3 插入断言

    获取到数据后,可通过assert_equal插入断言,并输出错误信息,如下:

    七. 执行自动化脚本

    配置好播放器VersionOverrideConfig.json文件,保证取到你自测中的元器件,在自动化测试脚本里面点击运行,在本地等待自动化测试通过。
    遇到脚本不能运行的一般解决方案:
    一.没有启动播放器前在ide内报错的:
    a.检查是否将对应的python环境设置正确,对应的压缩包在X:\FTP共享\自动化测试工具\VLabAutomatorTools\env\Python37-32.rar ,解压到电脑中,并把对应路径配置到ide中。
    b. 检查项目中VLabAutomatorV3\system\config_init_.py 中AppPath配置的播放器路径是否正确。
    c. 检查 D:\VLabRecordTool\localization.json 中AppPath配置的播放器路径是否正确。
    二.在启动了播放器后闪退的:
    a.一般是override文件配置问题,检查对应配置是否错误,器材是否切到自测状态,是否有颗粒中的器材没有配置的。

    本地自测通过无误的情况下,把自动化测试脚本上传git,元器件OA上提测。