【腾讯TMQ】像google一样测试系列之六: 实战篇

2024-04-14 04:32

本文主要是介绍【腾讯TMQ】像google一样测试系列之六: 实战篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Mock和反射执行,会穿插在各章节中,因此不单独成节了。

一、purify 业务代码结构分析

Purify 架构改革后,结构不再是一般的Activity和里面事件点击了,而是加入了引擎。

目前的架构如下:

可以看到:

1、弱化了Activity

2、统一用引擎加载Page

3、在各page中定义各view组件,并在自定义组件中实现事件。

4、Activity的入口 就变成了page的入口

二、测试切入点

以上结构分析可知: 测试切入点为 page。

三、测试工程建立与创建Test

1、测试目录建立

Android studio 给每一个module已经默认建立好测试工程了,如下图:

AndroidTest目录:为Instrumented Test,Android层的测试,运行在真机或模拟器上,主要写集成用例和涉及Android组件和环境的一些用例。比如Application,Activity,Service,SharedPreferences等。

Test目录: 为Local Unit Tests,java层的测试,部分依赖Android环境的测试。主要写java的单元测试,不同链路的接口测试,依赖Android环境较单一的测试。

2、测试库依赖

工欲善其事,必先利其器。先把需要的依赖库加进来。

修改build.gradle,增加如下内容:

指定Junit4运行器

testInstrumentationRunner ‘android.support.test.runner.AndroidJUnitRunner’

有混淆的时候,指定混淆文件:

加入依赖库:

到此,测试环境步骤已经搭建完毕。可以开始创建测试用例了。

3、创建Test

Android studio上,打开你想要写用例的业务代码,按ctrl+shift +T,就会弹出创建测试用例框,选择create new test。

在弹出框上,选择你要测试的方法。

测试环境支持如下几种:用Junit还是Testng,见前面文章说明。

建议:为了保持test和AndroidTest的统一,建议统一用Junit4。

弹出选择是创建Instrumented tests还是 local unit Tests:

(1)根据被测方法情况选择对应目录;

(2)也可以直接选androidTests,因为local unit Tests可以运行在androidTests中。

4、运行Test

(1)运行 test目录下的测试用例: 右键 选择run xx,就可以直接运行。

(2)运行androidTest目录下的测试用例: 先连接手机或模拟器,再运行。

测试代码空白处,右键,选择run xxx,就可直接运行了。快去试试你第一个测试用例吧。

四、Application级白盒测试

1、方式一:

新建Junit测试 java类。

如业务Application中含有如下方法:

则测试代码如下:

2、方式二: ##

因为可以调用业务代码。如果业务Application中有单列获取,则可直接调用获取。

五、Activity的白盒测试

假设Activity如图:

对应的page如图:其中 method都是private方法。都被UI层调用。

则method测试代码如下:

带参数测试:

六、异步线程的白盒测试

通常android开发中使用异步的方式有如下几种:

1、new Thread()及单例方式

2、handle.post方式

3、AsyncTask方式

4、ExecuteService方式

这里选取常见的1种方式举例:

handle.post方式

业务代码handle如图:可以看到handle是内部new的。

则测试代码如下:

七、异步回调的白盒测试

业务代码如下: 异步方法中,接收一个callback,现在要测试这个异步方法,思路见前章节。

则测试代码如下:

八、覆盖率与测试报告

1、覆盖率情况:

还未完全写完用例的情况下, 白盒测试实践模块覆盖率50%。

2、测试报告

Test和androidTests报告是分开的,不过可以开发代码合并成一个报告:


关注微信公众号:腾讯移动品质中心TMQ,获取更多测试干货!

这里写图片描述

这篇关于【腾讯TMQ】像google一样测试系列之六: 实战篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902075

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训