Package: lyrebird-tracking
Lyrebird-tracking简介Tracking 是基于Lyrebird的插件，为移动端应用提供服务请求的数据分析及验证的功能环境要求macOSPython3.6及以上安装pip3installlyrebird-tracking简单示例请求数据分析的应用场景比较广泛，以其中一种典型应用场景如客户端埋点的分析校验来进行示例分析待测对象假设埋点上报的host为abctest.com埋点上报内容如下所述，key2字段为索引值，action与page字段是待校验项[{"key1":"val1","property1":[{"key2":"val2","action":"view","page":"detail_page"}]}]编写配置文件selector:以JSONPath描述过滤筛选JSON的逻辑，详细语法示例见附录assert：校验逻辑，校验action与page两个字段，以JSONSchema语法描述预期{"target":["abctest.com"],"cases":[{"name":"test case 1st","selector":"$[?key1='val1'].property1[?key2='val2']","asserts":[{"field":"action","schema":{"type":"string","pattern":"view"}},{"field":"page","schema":{"type":"string","pattern":"detail_page"}}]}]}校验功能若移动端发出符合预期的Request Data，如下[{"key1":"val1","property1":[{"action":"view","key2":"val2","lab":{"good_id":10001,"index":5,"page_name":"detail_page101"},"page":"detail_page"}]}]Tracking会自动分析和校验，如图所示若移动端发出不符合预期的Request Data，如其中action字段的值不符合预期"view"，如下[{"key1":"val1","property1":[{"action":"click","key2":"val2","lab":{"good_id":10001,"index":5,"page_name":"detail_page101"},"page":"detail_page"}]}]Tracking会自动分析和校验，并将错误信息高亮标红展示，如图所示详细功能介绍如上图所示：工具栏：清空测试缓存分组标签：可以分组筛选查看case的结果case列表：以时间倒序排列展示的case记录case通过，即为所有校验字段全部通过，展示绿色 Pass Buttoncase失败，即为只要有一个校验字段失败，展示红色 Fail Buttoncase没有触发，展示为N/A状态，点击可以查看具体预期值等信息单行点击，可以唤起对应的case详情，查看具体校验字段和原数据等信息校验字段详情展示：点击左侧一行，右侧会展示对应的校验详情，展开状态Field：校验字段Expect Schema：校验字段对应的预期JSONSchemaActual vaule：实际校验字段的值校验字段名和结果展示：校验详情的收起状态， 收起状态的校验结果有三种：字段校验通过，校验字段展示绿色字段校验失败，校验字段展示红色字段校验逻辑为空，校验字段展示蓝色匹配数据展示区展示匹配查询规则的数据字段校验失败，红色高亮提示未配置校验/断言逻辑的，蓝色高亮提示校验结果错误展示红色高亮提示，鼠标悬停在字段上，会有详细的错误提示使用流程准备基准数据文件，数据格式见附录将基准数据文件放入指定路径下:~.lyrebird/plugins/lyrebird_tracking/base.json启动Lyrebird工具，手机链接代理，操作过程中观测case校验等信息展示开发者指南# clone 代码gitclonehttps://github.com/meituan/lyrebird-tracking.git# 进入工程目录cdlyrebird-tracking# 创建虚拟环境python3-mvenvvenv# 安装依赖sourcevenv/bin/activate
pip3install-rrequirements.txt# 使用IDE打开工程（推荐Pycharm或vscode）# 在IDE中执行debug.py即可开始调试附录配置文件数据格式字段说明target：待校验的host集合cases：测试用例集合name：测试用例名selector：JSONPath语法描述的查询条件asserts：校验条件field：需要校验的字段schema：JSONSchema语法描述的校验条件，不校验可填为{}，前端会高亮显示该字段groupname（可选）：case对应分组的组名groupid（可选）：case对应分组的组id{"target":["abctest.com"],"cases":[{"name":"test case 1st","selector":"$[?key1='val1'].property1[?key2='val2']","asserts":[{"field":"action","schema":{"type":"string","pattern":"view"}},{"field":"page","schema":{"type":"string","pattern":"detail_page"}}],"groupname":"group1","groupid":1},{"name":"test case 2nd","selector":"$[*].property2[?key3='val3']","asserts":[{"field":"action","schema":{"type":"string","pattern":"click"}},{"field":"page","schema":{"type":"string","pattern":"home_page"}}],"groupname":"group2","groupid":2}]}JSONPath 简明介绍用于查询逻辑的selector配置基于JSONPath的语法。类似于XPath在xml文档中的定位，JSONPath表达式通常是用来路径检索或设置Json的。目前仅支持一部分JSONPath语法，如下所述。支持语法JSONPath描述$根对象。例如$name[num]数组访问，其中num是数字。例如$[0].leader.departments[1].name[*]数组访问，访问所有数组的元素。例如$[*].leader.departments[2].name[key='test']字符串类型对象属性判断相等的过滤，例如$departs[name = 'test'].属性访问，例如$name.a.b语法示例[{"name":"king","property":123,"house":120},{"name":"wang","property":456,"house":240},{"name":"king","car":"audi","house":120},{"name":"king","property":123,"house":789},{"name":"king","property":666,"house":666}]JSONPath语义$根对象$[1]第1个元素$[*]全部元素$[name='king']list中name属性为'king'的元素$[name='king'].propertylist中name属性为'king'的元素并且取该元素的property属性的值JSONSchema 介绍用于校验逻辑的schema配置基于JSONSchema的语法。JSON Schema 用以标注和验证JSON文档的元数据的文档，可以类比于XML Schema。相对于JSON Schema，一个JSON文档就是JSON Schema的一个instance，可以校验数据结构、数据类型、和详细的判断等。