SDK 自动化测试方案

news2024/11/17 17:46:21

测试背景

SDK 具有上百个接口,测试场景、测试用例繁多,对于修改某个模块的代码或 SDK 上线前均需要投入大量资源(人力、时间)进行回归验证。目前 QA 资源有限,希望通过梳理 SDK 的功能,尝试使用自动化测试替代部分重复性的测试工作,提升测试效率。

SDK 整体架构

SDK 主要模块如下图所示:

SDK 数据流向如下图所示:

SDK 现有功能梳理

主要功能模块信息描述备注
基础数据采集通过 track 接口采集事件数据,profile_x 接口采集用户属性数据,item_x 接口采集物品属性数据
事件属性通过自定义属性、动态公共属性、静态共属性等方式,对部分事件或全体事件增加特定的属性
用户标识通过 login、logout、identify、resetAnonymousId 等接口,调整、修改用户的标识信息
全埋点采集通过在初始化中设置,采集 App 启动、页面浏览、元素点击、退出,Fragment 采集(初始化后设置)
H5 打通原生 SDK 和 JS SDK 实现数据打通,JS SDK 的数据将发送到原生 SDK,由原生 SDK 统一上报
可视化全埋点扫码连接到 SDG 前端页面,通过圈选 App 控件/页面创建可视化全埋点事件,通过对该事件的查询,可以统计到所有点击/浏览该事件的次数或用户数
App 点击分析扫码连接到 SA 前端页面,展示 App 页面上原生的点击情况及热力图
数据加密SDK 开启加密后,使用接收到后台下发的密钥对采集的数据进行加密
采集控制SDK 请求到远程配置信息后,对部分数据的采集进行限制
渠道追踪用户点击到第三方链接/页面后,进入到目标 App,通过调用 SDK 的激活事件,统计进入目标 App 的用户来源
数据存储与上报

设置采集的数据存储/上报的最大条数、时间间隔

计时器统计某个事件的时长
推送点击采集采集推送消息的点击事件
页面停留时长采集采集当前停留在当前页面的时长

自动化框架设计原则

  • 代码规范
  • 模块清晰明确
  • 通用性强
  • 可拓展、可维护
  • 错误机制处理机制
  • 系统日志清晰,方便调试
  • 报告详尽

SDK 自动化测试框架

测试框架详细设计

初始化模块

  • App 集成神策 SDK,并正确完成初始化操作,其中注意开启后续自动化测试过程中所需的配置项,例如:数据加密、页面停留时长等
  • 调用 SDK 获取预置属性的接口,得到设备相关基础信息,并对该基础信息进行人工校准。该基础信息非常重要,是后续所有数据检验的预期值 *
  • 校准完毕后,人工启动自动化测试服务 

为什么要进行人工校准?

由于 SDK 对设备信息的获取,对于用户来说是一个黑盒操作,如果不进行数据人工数据校验,直接将该份数据作为预期值的话,就可能会出现数据校验通过,但真实情况下这个值是错误的情况。

例如:SDK 获取当前设备的操作系统是 Android,事件属性中的操作系统也是 Android,但 App 是运行在 Harmony 系统上。

测试用例模块

  • 将自然语言中的测试用例转换为可执行的测试代码
  • 测试用例抽象化,方便多个用例使用相同模版
  • 测试用例类包含的基础信息包括:测试执行前环境准备(beforeTest)、测试执行(Test)、测试完成后环境处理(afterTest)
  • 灵活强,不同测试用例均可执行
  • 耦合性低,调整测试用例时只需修改业务测试用例代码
  • 校验机制生效,可正常判断用例测试是否通过 *

如何进行校验 ?

神策 SDK 返回的数据,不仅包括接口的返回值,还包含无返回值的接口触发的数据。例如:getDistinctId 是有返回值的接口,需要将该返回值与预期值进行比较。

track 接口并没有返回值,但会触发事件数据,我们需要截获到触发的事件数据,与预期数据进行比较。

针对不同的测试点,我们需要在测试用例中分别进行测试代码设计,从而得到可以比较的预期值与实际值。

例如:当我们需要对计时器事件的时长需要测试,就需要手动对事件触发的起止时间进行打点,得到预期值,最后再进行预期值与实际值进行比较。

测试服务模块

  • 利用反射机制,获取全量用例
  • 用例增加、修改、删除后,均无需进行代码调整
  • 控制测试用例执行,为不同测试用例所需环境提供逻辑支持
  • 全量用例测试完成,输出测试结论

数据库模块

  • 每一条测试用例的执行都需要进行持久化记录,使用数据库记录上述信息是一个绝佳的选择
  • 使用 ORM (Object Relational Mapping,对象关系映射)设计的数据,可以很方便的与测试用例类对应,开发者只需像操作对象那样操作数据库,而无需编写繁琐易错的 SQL 语句
  • 数据库单条数据的结构在测试用例类的基础上增加额外的信息,需要包括:用例编号(数据 ID)、执行时间、优先级、用例名称、用例描述、预期结果、实际结果、是否通过、失败原因、备注等

测试报告模块

  • 自动化测试需要支持实时输出及结束后输出测试结果的功能
  • 实时输出测试结果,对应于 IDE 的运行日志,可动态的展示每一条测试用例的执行情况
  • 结束后输出测试结果,针对各端特性,可分别为 App 端输出整体结论(包括用例执行条数、通过率、测试结论等),更丰富的测试信息需要在网页端进行展示(读取数据库模块存储的数据)

最终效果

企微机器人推送测试报告信息:

测试报告详情:

测试代码相关信息

开源 SDK 地址:https://github.com/sensorsdata/sa-sdk-android 

自动化测试代码地址:https://github.com/liuweiqiang2016/SDKTest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/906175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】CONAN:一种实用的、高精度、高效的APT实时检测系统(TDSC-2020)

CONAN:A Practical Real-Time APT Detection System With High Accuracy and Efficiency TDSC-2020 浙江大学 Xiong C, Zhu T, Dong W, et al. CONAN: A practical real-time APT detection system with high accuracy and efficiency[J]. IEEE Transactions on Dep…

点破ResNet残差网络的精髓

卷积神经网络在实际训练过程中,不可避免会遇到一个问题:随着网络层数的增加,模型会发生退化。    换句话说,并不是网络层数越多越好,为什么会这样? 不是说网络越深,提取的特征越多&#xff…

登陆接口的的Filter过滤

目录 一、概述 二、基本操作 三、登陆检查接口 一、概述 什么是Filter? Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能 使用了过滤器之后&#xff0…

基于Java+SpringBoot的房源出租信息管理系统【源码+论文+演示视频+包运行成功】

博主介绍:✌csdn特邀作者、博客专家、java领域优质创作者、博客之星,擅长Java、微信小程序、Python、Android等技术,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推…

微信删除的聊天记录怎么恢复?满满干货,建议收藏!

微信的出现逐渐改变了我们的社交方式,它架起了我们与朋友、家人以及同事之间的沟通桥梁,成为我们生活中不可缺失的一部分。 但是总会有那么点意外会发生,比如自己和朋友吵架了,一怒之下将朋友删除,导致所有聊天记录都…

2分钟搭建自己的GPT网站

如果觉得官方免费的gpt(3.5)体验比较差,总是断开,或者不会fanqiang,那你可以自己搭建一个。但前提是你得有gpt apikey。年初注册的还有18美金的额度,4.1号后注册的就没有额度了。不过也可以自己充值。 有了…

ubuntu18.04安装远程控制软件ToDest方法,针对官网指令报错情况

有时我们在家办公,需要控制实验室的笔记本,因此好用的远程控制软件会让我们的工作事半功倍! 常用的远程控制软件有ToDesk,向日葵,以及TeamViewer,但是为感觉ToDesk更流畅一些,所以这里介绍一下…

C++新经典07--auto、头文件防卫、引用与常量

auto的使用 严格来讲,在C语言中,如果某个函数中需要用到一些局部变量,那么局部变量都会集中定义在函数开头,而在C中不必遵循这样的规则,随时用随时定义即可。当然,作用域一般就是从定义的地方开始到该函数…

人工智能引领图文扫描新趋势

1. 背景和影响 近日,中国大学生服务外包创新创业大赛决赛在江南大学圆满落幕。为满足现代服务产业企业的现实需求,本次竞赛内容设计充分聚焦企业发展中所面临的技术、管理等现实问题,与产业的结合度更紧密,智能文字识别技术是大赛…

6款必备的办公软件,个个好用到爆,让你电脑成为真正利器

在现代办公环境中,电脑已经成为我们必不可少的工作工具。而要发挥电脑的最大作用,就需要借助一些优秀的办公软件。下面,就来介绍五款必备的办公软件,它们个个好用到爆,让你的电脑成为真正的利器! 文件快速搜…

性能优越的静电监控系统是怎样的?

随着社会的发展,各种监控系统应运而生。静电监控系统是其中之一。它具有优异的性能和稳定性,能够有效地检测和发现静电。 1:静电监控系统的优势 静电监控系统是一种先进的自动化控制系统,它能够有效地检测和控制企业运营中的各种…

【Java从0到1学习】10 Java常用类汇总

1. System类 System类对读者来说并不陌生,因为在之前所学知识中,需要打印结果时,使用的都是“System.out.println();”语句,这句代码中就使用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和…

条码通讯配置

由Leuze(劳易测) LSIS 222 M5M-R1/MA208i系统组成 连接说明及器件明细: 打开条码调试软件BPS Configuration tool对M208i进行ip 和端口号进行配置,条码选择作为客户端,输入ip和端口号,选择串口通讯波特…

基于java校园二手交易平台-lw-源码

二手交易平台论文 源码 文章目录 前言一、主要技术javaMysql数据库JSP技术B/S结构 二、系统设计三、功能截图总结 前言 随着社会的不断发展与进步,人们对信息科学化的认识越来越深入,管理工作的重要性逐渐被认识到。科学化的管理能够实现信息存储的准确…

【O2O领域】Axure外卖订餐骑手端APP原型图,外卖众包配送原型设计图

作品概况 页面数量:共 110 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:外卖配送、生鲜配送 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本品为外卖订餐骑手端APP原型设计图&#x…

nodejs+vue+elementui实验室课程预约管理系统 t1g73

通过前面的功能分析可以将实验室课程管理系统的功能分为管理员、学生和教师三个部分,系统的主要功能包括首页、个人中心、教师管理、学生管理、教师课表管理、实验室信息管理、实验课程管理、预约记录管理、实验成绩管理、设备信息管理、借用记录管理、归还记录管理…

解决云服务连接时长过短,不到一会儿自动断开

我们在使用xshell或者FinalShell连接云服务器操作时,总是十分钟就自动断开,很烦, 下面我们设置一下,让他可以使用很长时间(需要有一定的linux命令的基础) cd /etc/ssh 进入到ssh这个目录,查看…

node使用高版本的oracledb导致连接oracle的Error: NJS-138异常

异常信息如下 Error: NJS-138: connections to this database server version are not supported by node-oracledb in Thin mode 我的oracle版本是11g,之前的使用正常,今天却报错了,显示不支持thin模式,后面回退版本就可以了。

Lnton羚通算法算力云平台【PyTorch】教程:torch.nn.Softsign

torch.nn.Softsign 原型 CLASS torch.nn.Softsign() 图 代码 import torch import torch.nn as nnm nn.Softsign() input torch.randn(4) output m(input)print("input: ", input) print("output: ", output)# input: tensor([ 0.0046, -0.4135, -2…

SAP 开发创建后台job(SM36)

T-code(SE38)写一个程序:取数并保存到透明表,假如程序名叫(ZPRG_TEST001); T-code(SM36)定义一个后台作业,设置执行频率为每天晚上12点,设置步骤如下&#x…