手机app测试
一、安装、卸载、更新、运行
1.安装、卸载
- 应用是否可以正常安装(命令行安装;apk/ipa安装包安装)(有网,无网是否都正常)
- 卸载过程中出现死机,断电,重启等意外的情况,待环境恢复后是否可以继续正常卸载
- 卸载是否支持取消功能,单击取消后软件卸载情况是否正常
- 应用是否可以在iOS和Android不同系统,版本,机型上进行安装(有的系统版本过低,应用不能适配)
- 安装过程中是否能暂停,再次点击,是否继续按照
- 安装空间不足时如何表现,是否有相应提示,提示是否友好
- 安装过程中断网或网络不稳定的情况下,是否有相应提示
- 是否可以正常删除应用(桌面删除;第三方软件删除;命令行删除)
- APP安装完成后,是否可以正常打开,稳定运行
- APP的速度是可以让人接受,切换是否流畅
- 安装在手机卡上 或 SD卡上 (不同的IOS和安卓版本)
- 网络异常时,应用是否会崩溃:在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生Crash。
2.APP版本更新
- 当客户端有新版本时,有更新提示。
- 当版本为非强制升级时,用户可以取消更新,老版本能正常使用。用户在下次启动APP时,仍出现更新提示。
- 当版本为强制升级时,用户没有做更新时,退出客户端,下次启动APP时,仍出现强制升级提示(且无法关闭)。
(点击更新是否正确跳转至后台配置的更新页面)
- 当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新。
- 当客户端有新版本时,在本地不删除客户端的情况下,更新后的客户端功能是否是新版本功能。
- 当客户端有新版本时,在本地不删除客户端的情况下,检查资源同名文件如图片是否能正常更新成最新版本。
- 升级安装意外情况的测试(如死机、断电、重启)
- 强制更新(APP开启后要求必须更新,否则无法使用APP):1.多次关闭和打开APP后是否正常跳出更新弹窗,且无法关闭;2.点击更新是否正确跳转至后台配置的更新页面;
- 非强制更新(只提示一次更新):1.可正常关闭更新弹窗。2.重启APP更新提示按照需求再次显示,或者不再显示;3.点击更新是否正确跳转至后台配置的更新页面;
- 取消版本更新时,老版本可以正常使用;
- APP更新后版本号应有更新;
- APP更新后新增功能和老功能可正常使用。
- 当有新版本时,不删除客户端的情况下,直接更新是否成功;
- 升级安装意外情况的测试(如死机、断电、重启)
- 允许内网访问的APP,在连接到外网时是否有友好提示。
3、运行
- APP安装完成后,是否可以正常打开,稳定运行
- APP的速度是可以让人接受,切换是否流畅
- 网络异常时,应用是否会崩溃:在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生Crash。(比如黄油相机APPV4.8.2.8版本,在无网络状态下,进入照片编辑页面,选择并拖动照片时,会发生闪退)
二、*注册和登录
1.账号密码注册登录
- 输入正确的账号密码,可正常注册和登录
- 输入正确的用户名密码以后按[enter]是否能登陆
- 输入的数据前存在空格
- 用户名、密码错误或漏填时能否登陆;
- *已注册用户再次注册
- .已经登陆的账号登陆系统是否正确处理;
- 系统是否允许多次非法的登陆,是否有次数限制;
- *未注册用户尝试登录
- 删除或修改后的用户,原用户名登陆;
- 页面中是否有注销按钮;
- 密码“****”展示(安全性)
- 账号输入框对最大长度和格式应有校验(比如邮箱账号需要邮箱格式等)
- *账号或密码输入错误时建议提示“账号或密码错误”,而不是“账号错误”或“密码错误”
- 密码是否加密传输(可抓取请求查看)
- *密码更改后,登录时是否做到了有效数据的校验:修改前的密码失效;
- *未登录时对一些页面的操作,是否做了控制
- 登录超时时处理是否合理
- *切换账号登录,检验登录的信息是否做到及时更新
- *对于多个端都进行操作时,确保数据库操作无误,且每个端可以及时看到数据的更新
- 台式机和手机的同时登录同一账号,多台手机的同时登录同一账号(检查是否将原用户剔除)
- 登陆后,页面中登陆信息是否正确;
- 不输入用户密码或者是重复点击“确定/取消”按钮,是否允许登陆;
- 检查用户主动退出登录后,下次启动APP,应停留在登录页面。
- 考虑无网络情况下能否正常进入免登陆状态。
- 支持自动登录(记住密码)的应用在进行数校验时,检查系统是否能自动登录成功并且数据操作无误
2.手机号注册登录
- 手机号输入框格式校验检查
- 验证短信的接收是否及时;
- 用验证码可正常登录;
- 验证码错误时,登录失败+友好提示
- 验证短信文案是否符合所测APP;
- 重复发送验证码,前一个验证码正常失效
- 频繁操作验证码发送,应有操作限制
- 检查对登陆超时(验证码不能用)的处理。
- 验证码有效期校验(超过有效期无法登录)
3.注册
- 表单编辑页面测试;
- 用户名密码长度;
- 注册后的提示页面;
- 前台注册页面和后台的管理页面数据是否一致
- 注册后,在后台管理系统中的页面提示以及数据库中的用户信息是否正常;
三.各种网络状态下进行的测试
- 移动:2G、3G、4G
- 联通:3G、4G
- 3G,4G,wifi 网络环境下应用的各功能可正常运行;
- 网络异常时 ,数据交换失败是否会有提醒;
- 有网到无网再到有网环境时,数据是否可以自动恢复,正常加载;
- 只允许内网访问的APP,在连接到外网时是否有友好提示。
- 横竖屏切换展示
- APP运行时接入电话,短信,微信,或其他消息
四、push消息推送测试
- 检查push消息是否按照指定的业务规则发送。
- 检查不接收推送消息时,用户不会再接收到push消息。
- 如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到push消息;
- 在非免打扰时间段内,用户能正常接收到push消息。
- 当push消息是针对登录用户的时候,需要检查收到的push消息与用户身份是否相符。
- 不打开应用时,能否接收消息
- 打开应用时,能否接收消息
- 登录与不登录情况下,接收消息是否有区别
- 精确推送,是否只推送给指定用户
五、权限设置
- 首次启动APP询问是否同意启用权限
- 消息权限开启时,消息推送是否正常接收(iOS系统应用启用和后台关闭时都应该可以收到;Android系统在后台关闭进程后就不会推送)
- 消息权限关闭后,APP客户端接收不到消息推送。
- 位置权限开启时,APP可定位到当前位置(比如杭州公交APP,能自动定位到用户当前位置,展示出附近的公交站)
- 位置权限关闭后,APP需定位才可用的功能,是否有提示引导用户开启权限,比如“请打开系统设置中’隐私-定位服务’,允许“XXXX”使用您的位置”。
- 网络权限关闭时,APP是否有提示(“服务器或网络错误,请稍后重试”),是否有提示引导用户开启权限。
六、兼容性测试
- 从不同系统,版本,分辨率,机型等纬度进行适配测试
- 关注各功能界面在不同屏幕尺寸下是否存在UI展示问题
- 外部设备(不同系统的手机,不同版本的android, ios, 不同屏幕大小的手机。)的兼容性,如蓝牙耳机,外接键盘等
- 网络的兼容性测试(WIFI,各种制式的3G, 各种制式的4G)。
七、应用的前后台切换
- APP切换到后台,再回到APP,检查是否停留在上一次操作界面。
- APP切换到后台,再回到APP,检查功能及应用状态是否正常。
- APP切换到后台,再回到APP前台时,注意程序是否奔溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
- 手机锁屏解锁后进入APP注意是否会奔溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
- 当APP使用过程中有电话进来中断后再切换到APP,功能状态是否正常。
- 当杀掉APP进程后,再开启APP,APP能否正常启动。
- 出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷。
- 对于有数据交换的页面,每个页面都必须要进行前后台切换、锁屏的测试,这种页面最容易出现奔溃的现象。
八、离线浏览
- 在无线网络情况下可以浏览本地数据。
- 退出APP再开启APP时能正常浏览本地数据。
- 切换到后台再回到前台可以正常浏览本地数据。
- 锁屏后再解锁回到应用前台可以正常浏览本地数据。
- 手动刷新时,是否有对连接网络的提示
九、界面测试用例的设计方法
1.窗体
测试窗体的方法:
a,窗体大小,大小要合适,控件布局合理;
b,移动窗体.快速或慢速移动窗体,背景及窗体本身刷新必须正确;
c,缩放窗体,窗体上的控件应随窗体的大小变化而变化;
d,显示分辨率.必须在不同的分辨率的情况下测试程序的显示是否正常;
进行测试时还要注意状态栏是否显示正确;工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确,无错别字,且明确等等;
2.控件
- 月份和日期对应(比如2月有28天,7月31天)
- 闰年2月,应有29天
- 跨年时,年份应有增加。
比如下图的问题就属于跨年但年份未增加的问题:
测试方法:
a,窗体或控件的字体和大小要一致;
b,注意全角,半角混合
c,无中英文混合.
3。菜单
进行测试时要注意
a,选择菜单是否可以正常工作,并与实际执行内容一致;
b,是否有错别字:
c,快捷键是否重复;
d,热键是否重复;
e,快捷键与热键操作是否有效
f,是否存在中英文混合
g,菜单要与语境相关,如,不同权限的用户登陆一个应用程序,不同级别的用户可以看到不同级别的菜单并使用不同级别的功能;
h,鼠标右键快捷菜单
g,手机拍照功能可以正常显示
4. 文本框、按钮等控件测试
文本框的测试
如何对文本框进行测试
a,输入正常的字母或数字。
b,输入已存在的文件的名称;
c,输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入 256个字符,检查程序能否正确处理;
d,输入默认值,空白,空格;
e,若只允许输入字母,尝试输入数字;反之;尝试输入字母;
f,利用复制,粘贴等操作强制输入程序不允许的输入数据;
g,输入特殊字符集,例如,NUL及 等;
h,输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示;
i,输入不符合格式的数据,检查程序是否正常校验,如,程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示
在测试过程中所用到的测试方法:
①,输入非法数据;
②,输入默认值;
③,输入特殊字符集;
④,输入使缓冲区溢出的数据;
⑤,输入相同的文件名;
5 、命令按钮控件的测试
a,点击按钮正确响应操作。如,单击确定,正确执行操作;单击取消,退出窗口;
b,对非法的输入或操作给出足够的提示说明,如,输入月工作天数为32时,单击”确定“后系统应提示:天数不能大于31;
c,对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会;
单选按钮控件的测试
a,一组单选按钮不能同时选中,只能选中一个。
b,逐一执行每个单选按钮的功能。分别选择了“男”“女”后,保存到数据库的数据应该相应的分别为“男”“女”;
c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空;
6. up-down控件文本框的测试
a,直接输入数字或用上下箭头控制,如,在“数目”中直接输入10,或者单击向上的箭头,使数目变为10;
b,利用上下箭头控制数字的自动循环,如,当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用;
c,直接输入超边界值,系统应该提示重新输入;
d,输入默认值,空白。如,“插入”数目为默认值,点击“确定”;或,删除默认值,使内容为空,单击“确定”进行测试;
e,输入字符。此时系统应提示输入有误。
7.组合列表框的测试
a,条目内容正确,其详细条目内容可以根据需求说明确定;
b,逐一执行列表框中每个条目的功能;
c,检查能否向组合列表框输入数据;
8. 复选框的测试
a,多个复选框可以被同时选中;
b,多个复选框可以被部分选中;
c,多个复选框可以都不被选中;
d,逐一执行每个复选框的功能;
9.列表框控件的测试
a,条目内容正确;同组合列表框类似,根据需求说明书确定列表的各项内容正确,没有丢失或错误;
b,列表框的内容较多时要使用滚动条;
c,列表框允许多选时,要分别检查shift选中条目,按ctrl选中条目和直接用鼠标选中多项条目的情况;
10.滚动条控件的测试
要注意一下几点:
a,滚动条的长度根据显示信息的长度或宽度及时变换,这样有利于用户了解显示信息的位置和百分比,如,word中浏览100页文档,浏览到50页时,滚动条位置应处于中间;
b,拖动滚动条,检查屏幕刷新情况,并查看是否有乱码;
c,单击滚动条;
d,用滚轮控制滚动条;
e,滚动条的上下按钮。
各种控件在窗体中混和使用时的测试
a,控件间的相互作用;
b,tab键的顺序,一般是从上到下,从左到右;
c,热键的使用,逐一测试;
d,enter键和esc键的使用;
在测试中,应遵循由简入繁的原则,先进行单个控件功能的测试,确保实现无误后,再进行多个控件的的功能组合的测试。
ps:密码输入框测试时要特别注意进行字母大写输入的测试。
相关文章:

手机app测试
一、安装、卸载、更新、运行 1.安装、卸载 应用是否可以正常安装(命令行安装;apk/ipa安装包安装)(有网,无网是否都正常)卸载过程中出现死机,断电,重启等意外的情况&…...
Centos部署Git
Centos部署Git 文章目录 Centos部署Git部署步骤初始化配置免登录 部署步骤 初始化 -- 安装git yum install git配置免登录 配置git下载代码时 每次都需要输入密码的事情 -- 生成 gitconfig 文件 git config --global credential.helper store -- 配置登录邮箱 git config …...
k8s 控制器
Kubernetes(K8S)是一种开源的容器编排平台,它可以自动化地管理容器化应用程序的部署、扩展和运行。K8S中的控制器是一种重要的组件,它可以确保应用程序的状态与期望的状态一致。在K8S中,有五种常见的控制器,…...

谷歌关闭跨域限制.(生成一个开发浏览器),Chrome关闭跨域
(一)、首先找到浏览器在电脑磁盘中的位置,并复制 (二)、复制一个浏览器的快捷方式到桌面(不影响正常浏览器) (三)、chrom鼠标右键属性,修改快捷方式的目标 (四)chrome.exe 后面添加 --disable-web-security --user-data-dir 复制的Chrome浏览…...

实践指南-前端性能提升 270% | 京东云技术团队
一、背景 当我们疲于开发一个接一个的需求时,很容易忘记去关注网站的性能,到了某一个节点,猛地发现,随着越来越多代码的堆积,网站变得越来越慢。 本文就是从这样的一个背景出发,着手优化网站的前端性能&a…...

8月11日上课内容 nginx的多实例和动静分离
多实例部署 在一台服务器上有多个tomcat的服务。 配置多实例之前,看单个实例是否访问正常。 1.安装好 jdk 2.安装 tomcat cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mkdir /usr/local/tomcat mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1 cp -a /usr…...

腾讯云CVM服务器端口在安全组中打开!
腾讯云服务器CVM端口怎么开通?腾讯云服务器端口是通过配置安全组规则来开通的,腾讯云服务器网以开通80端口为例来详细说下腾讯云轻量应用服务器开启端口的方法,其他的端口的开通如8080、1433、443、3306、8888等端口也适用于此方法࿰…...
k8s、docker添加daemon.json添加“exec-opts“: [“native.cgroupdriver=systemd“]后无法启动的问题
考虑k8s下docker下载镜像太慢,修改了daemon.json,按照手册抄,添加 {"exec-opts": ["native.cgroupdriversystemd"],"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"] }结果发现k8s起…...
React组件性能优化实践
React组件性能优化最佳实践 React组件性能优化的核心是减少渲染真实DOM节点的频率,减少 Virtual DOM比对的频率。 组件卸载前进行清理操作 在组件中为 window注册的全局事件,以及定时器,在组件卸载前要清理掉,防止组件卸载后继…...

SpringBoot复习:(29)静态资源的配置路径
WebMvcAutoConfiguration 首页处理:...

mysql延时问题排查
背景介绍 最近遇到一个奇怪的问题,有个业务,每天早上七点半产生主从延时,延时时间12.6K; 期间没有抽数/备份等任务;查看慢日志发现,期间有一个delete任务,在主库执行了161s delete from xxxx_…...
接口设置了responseType:‘blob‘后,接收不到后端错误信息
下载文件流,需要接口设置responseType:blob,接口设置了responseType:blob后,拿不到后端接口的异常信息,我们只需要添加如下代码: const service axios.create({baseURL: ***, // url base url request url// withC…...

无涯教程-Perl - mkdir函数
描述 此功能使用MODE指定的模式创建一个名称和路径EXPR的目录,为清楚起见,应将其作为八进制值提供。 语法 以下是此函数的简单语法- mkdir EXPR,MODE返回值 如果失败,此函数返回0,如果成功,则返回1。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -w$dirname &…...

css3 瀑布流布局遇见截断下一列展示后半截现象
css3 瀑布流布局遇见截断下一列展示后半截现象 注:css3实现瀑布流布局简直不要太香~~~~~ 场景-在uniapp项目中 当瀑布流布局column-grap:10px 相邻两列之间的间隙为10px,column-count:2,2列展…...

C++初阶之一篇文章教会你list(理解和使用)
list(理解和使用) 什么是list特点和优势基本操作示例用法与其他序列式容器(如 std::vector 和 std::deque)相比,std::list 显著的区别和优势成员类型 list构造函数1. default (1)2. fill (2)3.range (3)4. copy (4) li…...

如何给Linux开启swap虚拟内存
查看系统内存资源 free -h 创建swap分区 dd if/dev/zero of/swapfile bs1024 count4194304dev/zero:是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0&…...

spring按条件注入@Condition及springboot对其的扩展
概述 spring的ioc极大的方便了日常开发,但随着业务的迭代。配置的一些参数在某些情况下需要按条件注入。 比如原先定义的db公共模块下,相关的配置和工具类只是基于mysql的。但是后续有模块需要使用mongo/es等其他数据库,又想继续使用db公共…...

MySQL多表连接查询3
目录 表结构 创建表 表数据 查询需求: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 4.从s…...

【从零开始学习JAVA | 第四十五篇】反射
目录 前言: 反射: 使用反射的步骤: 1.获取阶段: 2.使用阶段: 反射的应用场景: 使用反射的优缺点: 总结: 前言: Java中的反射是一项强大而灵活的功能࿰…...
顺丰科技数据治理实践
01 顺丰数据治理体系演进路线 顺丰做数据治理十多年,数据治理体系的模块是逐步来建设的。十年前,我们就已经建了数仓,同步做了元数据管理,数据质量管理,以及数据安全的管理。顺丰数据治理的演进路线分 3 个阶段。 第…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...