怎么对App进行功能测试

news2024/11/13 16:19:44

测试人员常被看作是bug的寻找者,但你曾想过他们实际是如何开展测试的吗?你是否好奇他们究竟都做些什么,以及他们如何在一个典型的技术项目中体现价值?本文将带你经历测试人员的思维过程,探讨他们测试app时的各种考虑.

APP功能测试跟其他领域的项目功能测试无太大差异,根据软件需求规格说明书设计测试用例.就APP的功能复杂度而言,APP通常业务不会太复杂.

APP功能测试要点包括以下几个方面:1/UI测试,2/安装与卸载测试,3/登录运行测试,4/切换测试,5/兼容性测试,6/升级更新测试,7/异常测试,8/网络测试,9/权限测试.

1,UI测试

1) 界面(菜单/窗口/按钮)布局,风格是否满足客户要求,文字和图片组合是否美观,操作是否友好.

2) 界面是否清晰,简洁,美观,一致

3) 图形测试(图形是否展示,是否表意不明,是否设计敏感字段),内容测试,导航测试

2,安装与卸载测试

1) 安装(软件安装是否能够正常运行,安装目录和文件是否正常建立);

2) APP的版本覆盖测试(v1.0>v2.0)和版本回退测试(v2.0>v1.0);

3) 安装过程来电,短信,通知时,是否对安装有影响;

4) 安装空间不足时是否有相应提示.

5) 直接卸载APP是否有提示;

6) 卸载后是否删除相应的安装目录;

7) 卸载是否支持取消功能,单击取消后,是否正常可用;

8) 卸载过程中死机,断电,重启等,对卸载有什么影响.

3,登录运行

1) 用户名和密码错误,漏填时,界面有提示信息;

2) 密码更改后,登录是否正常;

3) 用户主动退出登录后,下次启动APP时,应该进入登录界面;

4) IOS与Android设备登录同一个账号,用户数据是否同步;

5) APP安装完成后,是否可以正常打开,是否有加载图示等;

6) APP的运行速度正常,切换是否流畅.

4,切换测试(切换场景包括:APP切换到后台,多个APP之间的切换)

1) APP切换到其他APP或者系统界面,再回到APP,是否停留在上一次操作的界面,APP是否正常使用;

2) 当APP使用过程中有电话进来中断后再切换到APP,功能状态是否正常;

5,兼容性测试

1) 操作系统版本的兼容性(Android各个版本,IOS各个版本);

2) 不同手机品牌的兼容;

3) APP跨版本的兼容性;

4) 与其他APP的兼容性.

6,升级更新

1) 当APP有更新版本时,手机端有更新提示;

2) 当APP版本为非强制升级版本时,可以取消更新,旧版本能正常使用.用户在下次启动APP时,仍出现更新提示;

3) 当APP有新版本时,直接更新新检查是否能正常更新;

4) 更新后,检查APP功能是否是新版本功能.

7,异常测试

1) 交互异常性测试:客户端作为手机特性测试,包括被打扰的情况;如来电,来短信,低电量测试等;还要注意手机端硬件上,如:待机,插拔数据线,耳机等操作不会影响客户端;

2) 异常性测试:主要包含了断网/断电/服务器异常等情况下,客户端能否正常处理,保证数据正确性.

8,网络测试

1) 目前手机介入的网络主要分为4G,WIFI

2) 无网络时,有切换网络的操作或者提示;

3) 网络间切换,断网等APP都有相应提示,重新联网后正常使用;

4) 在网络信号不好时,检查数据是否会一直处于提交中的状态,有无超时限制.如遇数据交换失败时要给与提示;

5) 弱网络下操作是否有提示.

9,权限测试

1) 当权限没有开启时,或友好提示是否运行设置,当运行开启时,跳转到设置界面;

2) 有限制允许介入网络提示或选项;

3) 有限制允许读写通讯录/用户数据提示或选项;

4) 有限制允许相机提示或选项;

5) 有限制允许定位功能提示或选项.

关于app测试,是一个比较繁杂的工作,所以我们在做测试之前更要清晰的知道这些测试都是什么工作,才能在测试的时候更加得心应手,不会产生不必要的遗漏,造成损失。以上只是简单列举了需要做的APP测试内容,如果有感觉不全面或者需要补充的,欢迎补充,互相学习。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

MyBatis-Plus框架技术总结

MybatisPlus 1、概述 MybatisPlus是一款Mybatis增强工具,用于简化开发,提高效率。 它在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 ​ 官网: https://mp.baomidou.com/ 2、快速入门 2.0、准备工作 ①准…

PROFIBUS主站转MODBUS TCP网关

1.产品功能 YC-DPM-TCP网关在Profibus总线侧实现主站功能,在以太网侧实现ModbusTcp服务器功能。可将Profibus DP从站接入到ModbusTcp网络;通过增加DP/PA耦合器,也可将Profibus PA从站接入ModbusTcp网络。YC-DPM-TCP网关最多支持125个Profibu…

wireshark 流量抓包例题重现

目录 要求 黑客攻击的第一个受害主机的网卡IP地址黑客对URL的哪一个参数实施了SQL注入第一个受害主机网站数据库的表前缀 第一个受害主机网站数据库的名字 要求 (1)黑客攻击的第一个受害主机的IP地址 (2)黑客对URL的某一参数实…

在服务器上搭建Jenkins

目录 1.服务器要求 2.官方文档 3.在服务器上下载Jenkins 3.1 下载war包 3.2 将war包上传到服务器的一个目录下 3.3 启动jenkins 3.3.1 jdk版本升级 1)下载jdk17 2)解压到当前文件夹 3)配置路径 4.jenkins配置 4.1 填写初始密码&a…

直线模组在搬运行业的应用

近几年,国内直线模组的研发发展非常快,直线模组应用的范围也在一直在扩大,发展到今天,已经被广泛应用到各种设备中,尤其是在搬运行业中,是搬运行业中必不可少的传动元件之一。 直线模组在搬运中的应用&…

算法笔记(一):时间复杂度

省略的技巧 已知 f ( n ) f(n) f(n) 来说,求 g ( n ) g(n) g(n) 表达式中相乘的常量,可以省略,如 f ( n ) 100 ∗ n 2 f(n) 100*n^2 f(n)100∗n2 中的 100 100 100 多项式中数量规模更小(低次项)的表达式&#…

vue create -p dcloudio/uni-preset-vue my-project创建文件报错443

因为使用vue3viteuniappvant4报错,uniapp暂不支持vant4,所以所用vue2uniappvant2 下载uni-preset-vue-master 放到E:\Auniapp\uni-preset-vue-master 在终端命令行创建uniapp vue create -p E:\Auniapp\uni-preset-vue-master my-project

mysql profiling profiles profile

要想优化一条 Query,我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里,是消耗的 CPU计算太多,还是需要的的 IO 操作太多?要想能够清楚的了解这些信息,在 MySQL 5.0 和 MySQL 5.1正式版中已经可以非常容易做到了&a…

云计算中的数据安全与隐私保护策略

文章目录 1. 云计算中的数据安全挑战1.1 数据泄露和数据风险1.2 多租户环境下的隔离问题 2. 隐私保护策略2.1 数据加密2.2 访问控制和身份验证 3. 应对方法与技术3.1 零知识证明(Zero-Knowledge Proofs)3.2 同态加密(Homomorphic Encryption&…

cublas_v2.h没有那个文件和目录,解决

我的是orin,使用的cuda11.4,后来发现通过sudo jetson_release看到的CUDA是没有安装的。 定位到问题是: 使用ls /usr/local/ -lha查看软连接,如下: 能够发现cuda这个软连接是有问题的,他链接的是cuda10.2 …

几种在JavaScript中创建对象的方式!

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 字面量方式⭐ 构造函数方式⭐ Object.create()方式⭐ 工厂函数方式⭐ ES6类方式⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门…

Python分享之redis(2)

Hash 操作 redis中的Hash 在内存中类似于一个name对应一个dic来存储 hset(name, key, value) #name对应的hash中设置一个键值对(不存在,则创建,否则,修改) r.hset("dic_name","a1","aa&quo…

java八股文面试[多线程]——sleep wait join yield

sleep和wait有什么区别 sleep 方法和 wait 方法都是用来将线程进入阻塞状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应并中断,且都可以抛出 In…

ServiceManger Binder的处理流程

陌生知识点如下: BinderProxy:是将Native层的BpBinder对象进行封装后传给Java层使用的Binder对象android_util_binder: Binder在JNI层的相关注册,处理,转换封装接口BpBinder:Binder驱动在Native层的封装。IPCThreadState&#xf…

3.BGP状态机和路由注入方式

BGP状态机 BGP路由的生成 不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将GP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。 BGP注入路由的方式有两种: Networkimport-route与IGP协议相同,BGP支持根据已有的路由条目进行聚合,生成聚合路由…

【Linux】多线程概念线程控制

文章目录 多线程概念Linux下进程和线程的关系pid本质上是轻量级进程id,换句话说,就是线程IDLinux内核是如何创建一个线程的线程的共享和独有线程的优缺点 线程控制POSIX线程库线程创建线程终止线程等待线程分离 多线程概念 Linux下进程和线程的关系 在…

Pygame编程(9)font模块

Pygame编程(9)font模块 函数示例 函数 pygame.font.init 初始化字体模块init() -> None pygame.font.quit 反初始化字体模块quit() -> None pygame.font.get_init True,如果字体模块已初始化get_init() -> bool pygame.font.get_default_font …

VUE笔记(九)vuex

一、vuex的简介 1、回顾组件之间的通讯 父组件向子组件通讯:通过props实现 子组件向父组件通讯:通过自定义事件($emit)方式来实现 兄弟组件之间的通讯:事件总线($eventBus)、订阅与发布方式来实现 跨级组件的通讯…

django+MySQL计算机毕设之图片推荐系统(报告+源码)

图片推荐系统是在的数据存储主要通过MySQL。用户在使用应用时产生的数据通过Python语言传递给数据库。通过此方式促进图片推荐信息流动和数据传输效率,提供一个内容丰富、功能多样、易于操作的平台。述了数据库的设计,系统的详细设计部分主要论述了几个主…

win开机自启jar包

下载winsw工具 只需下载图中红框的工具 https://github.com/winsw/winsw/releases 文件配置 将下载的文件与jar文件放置在一起&#xff0c;两个文件名修改为服务名 编辑xml文件 注意不要出现中文&#xff0c; 标签内的jar文件地址要改为自己目录 <service><!-- I…