1、移动端测试
1、定义
移动端软件测试就是符合多重网络(2G,3G,4G,wifi,弱网,断网),不同系统(ios,Android),不同硬件配置(手机/pad,不同机型)下发现软件缺陷,并保证提高软件质量的过程。
2、特点(与PC端测试区别)
C/S:客户端-服务器架构;B/S:浏览器-服务器架构。区别如下:
效率:C/S效率高,有的内容已经在系统中;B/S每次都要加载最新数据。
升级:B/S无缝升级;C/S删除老版本再安装新版本。
安全:C/S更安全,需安装,注册,登录;B/S有浏览器即可使用,安全程度低。
开发成本:B/S成本低;C/S需要不同系统的开发人员,成本较高。
3、测试要点
APP测试主要内容:
功能测试:
1、业务逻辑正确性测试,依据:产品文档-》测试用例编写
2、兼容性测试:
—系统版本:Android官方版本,定制版本;IOS:官方版本
—分辨率:720*1280,1080*1920
—网络情况:2G,3G,4G,5G,WIFI
异常测试:
1、热启动应用:应用在后台长时间待机:应用在后台待机时手机重启
2、网络切换和终端恢复
3、电话信息中断恢复
升级、安装、卸载测试:
1、升级测试:临近版本升级(1.0-》1.1);跨版本(1.0-》...-》2.2)
2、安装测试:首次安装,覆盖安装(同版本,不同版本),卸载后安装
3、卸载测试:首次卸载;卸载安装后卸载
健壮性测试:
1、手机资源消耗:CPU,内存
2、流量消耗:图片,数据,视频
3、电量测试
4、崩溃恢复
交叉时间测试;
PUSH测试等。
3、软件测试分类
4、描述用浏览器访问 www.baidu.com 的过程?
先要解析出 baidu.com 对应的 ip 地址:
要先使用 arp 获取默认网关的 mac 地址
组织数据发送给默认网关(ip 还是 dns 服务器的 ip,但是 mac 地址是默认网关的 mac 地址)
默认网关拥有转发数据的能力,把数据转发给路由器
路由器根据自己的路由协议,来选择一个合适的较快的路径转发数据给目的网关
目的网关(dns 服务器所在的网关),把数据转发给 dns 服务
dns 服务器查询解析出 baidu.com 对应的 ip 地址,并原路返回请求这个域名的 client
得到了 baidu.com 对应的 ip 地址之后,会发送 tcp 的 3 次握手,进行连接
使用 http 协议发送请求数据给 web 服务器
web 服务器收到数据请求之后,通过查询自己的服务器得到相应的结果,原路返回给浏览器
浏览器接收到数据之后通过浏览器自己的渲染功能来显示这个网页
浏览器关闭 tcp 连接,即 4 次挥手结束,完成整个访问过程
5、. 给你一个网站怎么开展测试?
a)首先,查找需求说明、网站设计等相关文档,分析测试需求。
b)制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测,试界面测试,性能测试,数据库测试,安全性测试,.兼容性测试
c)设计测试用例:
功能性测试可以包括,但不限于以下几个方面:链接测试;链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等;提交功能的测试;多媒体元素是否可以正确加载和显示;多语言支持是否能够正确显示选择的语言等
界面测试可以包括但不限于一下几个方面:页面是否风格统一,美观。页面布局是否合理,重点内容和热点内容是否突出。控件是否正常使用。对于必须但为安装的空间,是否提供自动下载并安装的功能。文字检查。
性能测试一般从以下两个方面考虑:压力测试,负载测试,强度测试
数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。
安全性测试:基本的登录功能的检查;是否存在溢出错误,导致系统崩溃或者权限泄露;相关开发语言的常见安全性问题检查,例如 SQL 注入等;如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持。
兼容性测试,根据需求说明的内容,确定支持的平台组合:浏览器的兼容性;操作系统的兼容性;软件平台的兼容性;数据库的兼容性。
d)开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。
e)定期评审,对测试进行评估和总结,调整测试的内容
6、常用ADB命令
adb --help / adb :看见帮助信息
adb start-server:启动 adb 服务
adb kill-server:关闭 adb 服务
adb devices:查看手机设备号
adb shell getprop ro.build.version.release:获取系统版本
adb push 电脑 手机
adb pull 手机 电脑
adb logcat | grep(unix) 包名
adb logcat | findstr(win) 包名
adb shell :进入 shell 命令行,可以操作 Linux 命令
adb shell dumpsys window windows | grep mFocusedApp:获取包名 启动名(win:adb shell dumpsys window
windows | findstr mFocusedApp)
adb install 路径/apk 文件:安装 apk 到手机上
adb uninstall 包名:卸载 app 从手机上
adb shell am start -W 包名/启动名:app 启动时间
7、APP崩溃(闪退),可能是什么原因造成的
缓存的垃圾太多;
打开的应用程序过多;
应用版本兼容问题;
检查APP的SDK和手机的系统是否兼容;
检查APP访问网络的地方,组件中的ImageView是否可以正常下载并显示到APP页面上;
在一些特定情况下闪退,如播放视频,Android5.0升级到6.0时,有的系统API老版本有,新版本没有。
8、如何测试监测 app 的内存使用、CPU 消耗、流量使用情况?
adb shell top
Android 应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等
根据手机的使用应用频度和强度不同,可将应用使用强度分为如下几种状态:
空闲状态:指启动应用后,不做任何操作或切换到后台运行的情况称为空闲状态,该情况为应用对内存的消耗是最小的。
中强度状态:该情况用户使用应用的强度和时间长短不确定,相对来说使用时长偏长。
高强度状态:该种情况为应用内高频率的使用,用户很少达到,跑 monkey 时可认为高强度状态,该种情况常用来测试应用内存泄漏的情况测试时,可根据用户的操作习惯模拟应用使用频率和强度等级。
使用 adb 命令,手机连接电脑开启 USB 调试模式,进入 adbshell。
(1)查看 CPU 占用率
使用命令 top -m 10 -s cpu(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)
9、局域网和广域网
1、局域网(LAN)指某一区域内由多台计算机互联成的计算机组。“某一区域”指同一个办公室,同一建筑物,同一公司和同一学校等,方圆几公里内。局域网可实现文件管理,应用软件共享,打印机共享,工作组内日程安排,电子邮件和传真通信服务等功能。局域网是封闭型的。
2、广域网(WAN)是一种跨越大的、地域性的计算机网络的集合。通常跨省、市甚至一个国家。广域网包括大大小小不同的子网,子网可以是局域网,也可以是小型广域网。
10、10M 兆宽带是什么意思?理论下载速度是多少?
首先我们要搞懂其中的区别,运营商说的 10M,完整的单位应该是 10Mbps(bps:比特率),而我们讲的下载速度单位是 MB,虽然都念兆,但是不一样的。
它们之间的换算关系是:1MB=8×1Mbps,换个方式看:1Mbps÷8=128KB,也就是说,运营商称的 10M宽带,实际速度是 10Mbps÷8=1280KB,约 1.25MB。
11、cookies 和 session 的区别?
cookies:是针对每一个网站的信息,每一个网站只对应一个,其它网站不能访问,这个文件是保存在客户端的,每次你打相应网站,浏览器会查找这个网站的 cookies,如果有就会将这个文件起发送出去。cookies文件的内容大致包函这些信息如用户名,密码,设置等。
session: 是针对每一个用户的,只有客户机访问,程序就会为这个客户新增一个 session。session 里主要保存的是用户的登录信息,操作信息等。这个 session 在用户访问结束后会被自动消失(如果超时也会)。
12、GET和POST的区别GET 和 POST 的区别
总结来说就是:它们的本质都是 TCP 链接,并无区别。但是由于 HTTP 的规定以及浏览器/服务器的限制,导致它们在应用过程中可能会有所不同。
(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢
(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据
1、post请求包含更多的请求头
2.最重要的一条,post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
3、get会将数据缓存起来,而post不会
4、post不能进行管道化传输
13、APP测试流程
参与需求评审:评审前看需求文档
制定测试计划:什么人,测试多久,测试内容,风险等
设计和编写测试用例:后评审
执行用例,跟踪缺陷
编写提交版本测试报告。
14、弱网测试
步骤:
1、打开fiddler或Charles,设置相应的代理端口(端口被占用时需要手动更改代理端口);
2、在代理工具中设置网络的上传和下载的速度
3、在手机中设置网络的代理
15、FPS(流畅度)
可以通过(Perfdog)性能狗来监控APP的流畅度。
如果要达到流畅的效果,FPS的值应该在24。
如果要达到最佳的效果,FPS的值为60。
16、流量优化
* 数据压缩
* 针对相同的数据,采用不同的数据格式
* 控制访问的次数
* 缓存机制
* 只获取必要的数据
* 懒加载
20、电量测试
* 可以使用其他的性能测试工具来测试
* 可以通过对比方式来测试(如同类产品对比))
* 耗电场景:开启定位,GPS;蓝牙;网络传输,WIFI,屏幕亮度
2/智能产品测试
1、系统测试
按照测试流程来走就好,需求分析、测试计划、测试用例及评审、冒烟测试、执行测试若干轮、回归测试、测试报告等步骤走完。主要测试的对象是以应用为核心,兼测试服务器及设备的功能。
目前大家主要在做的是这部分的测试,做好这部分的测试,产品80%的bug都能发现。
2、接口测试
以前的接口测试主要是app和服务器的通信,主要以http请求为主。
智能硬件产品的服务器承载两个端的请求,一般来说硬件产品与服务器会建立一个TCP/UDP长连接,定时发心跳包及其他通信内容包,另一端则是app端的接口。
以java为例,测试长连接的服务端,socket写一个客户端,用现成框架mina/netty写一个客户端等,具体代码就不给出了。http请求就不赘述,方法太多了。
这部分的测试最好和开发同时进行,但新项目的进度和需求缘故,一般都会等到产品稳定进行,这块发现的问题很多都不是严重的问题,但是一旦有个重要问题就会导致产品功能无法使用
3、核心测试
什么是核心测试?试想一下智能手环运动检测不准确,OBD会使静止的汽车亏电,智能血压计检测的血压不对等等问题,那么这个产品一旦上市就会失败,任何的bug修复也无济于事。所以这块的测试非常重要。
以下举几个核心测试内容的例子:
耗电测试,最简单是接一个万用表,实时查看设备的电量情况,但是你必须实时查看,也没有历史记录。最好是准备一个专用的功率电量测试工具,有交直流电,有报表输出,在各种配置下的耗电情况都能自动记录。这块主要针对手环、OBD等需要电池的产品。
GPS测试,户外的智能产品大部分都配备了GPS,GPS信号强度和周围环境有直接关系。隧道、高层建筑、天气等都会干扰GPS定位,另外设备启动关闭点也是GPS容易发生问题的时候。
干扰测试,很多智能硬件产品会插在其他设备上,如电视盒子、家居控制设备、汽车设备,一定程度上会对其他设备产生干扰,甚至影响其他设备的正常使用。
类似的功能还有很多,这些是智能硬件产品的核心,如果这些功能出现问题,产品就会死掉,所以这部分需要重点测试,投入最多的人力进去。
4、电商、供应链系统业务测试
电商测试
5、嵌入式软件测试
除了互联网的应用外,还存在一种叫做嵌入式的软件测试。比如航空器,车载设备,移动设备等。
嵌入式软件系统测试具有如下特点:
(1)测试软件功能依赖不需编码的硬件功能,快速定位软硬件错误困难;
(2)强壮性测试、可知性测试很难编码实现;
(3)交叉测试平台的测试用例、测试结果上载困难;
(4)基于消息系统测试的复杂性,包括线程、任务、子系统之间的交互,并发、容错和对时间的要求;
(5)性能测试、确定性能瓶颈困难;
(6)实施测试自动化技术困难。
6、蓝牙耳机,音箱测试
蓝牙耳机测试: