0


软件测试2

web测试

(1)web控件测试

​ 界面检查、单行文本框、多行文本框、添加按钮、移除按钮、单选按钮、复选按钮、日期/时间控件、上传控件、树形控件、翻页控件、滚动条、列表、搜索框、搜索下拉框

(2)web功能测试

​ 链接测试、表单测试、数据校对、数据库测试、流程测试

(3)web界面测试

​ 导航测试、图形测试、表格测试、整体界面测试

(4)web性能测试

​ 连接速度测试、负载压力测试

(5)web兼容性测试

​ 平台测试、浏览器测试、分辨率测试

(6)web安全测试

​ 目录设置、登录(登录次数限制,限制IP登录,登录失败3次后是否锁定,口令规则是否限制,不登录页面直接浏览,超时重新登录)、日志文件、脚本语言

APP测试

主流移动端操作系统:Android(基于linux)、IOS(属于Unix的商业操作系统)、Harmony(华为开发的操作系统)

Android系统架构

在这里插入图片描述

应用程序、应用程序框架、系统运行库、Linux内核

Activity:软件系统和用户进行交互的界面,一个activity,1帧=16ms,手机的fps是60帧

server:后台服务,通常没有交互的图形化界面,用于长时间处理任务,不影响前台用户体验。

Android与IOS的区别

Android–>

​ 1)操作系统开源

​ 2)开发语言java

​ 3)程序包:xxx.apk

​ 4)每家手机厂商都有自己的开发系统,基于安卓系统

​ 5)安卓系统的所有权都是由谷歌公司来维护

IOS–>

​ 1)操作系统闭源

​ 2)开发语言Objiective-C

​ 3)程序包:xxx.ipa

​ 4)系统由苹果公司维护

​ 5)安全性高、运行效率高

app分类

1、web APP:APP的所有页面都是由web语言开发出来的,页面所有的资源都保存在服务器中。

​ 特点:1)开发周期短,成本低;2)所支持功能较少;3)必须依赖网络,没有网的情况下,软件不能使用

2、native APP(原生APP):手机自带的软件,软件的所有数据都保存在本地。

​ 特点: 1)运行速度快,给用户最佳的体验感;2)开发周期长,开发成本高,Android和iOS需要单独开发

3、hybrid APP(混合APP):将APP中固定的框架和固定的数据保存在本地,将经常变动的数据保存在服务器。

​ 特点:1)运行速度较好;2)功能发布较短

基本交互

在这里插入图片描述

手机APP测试工具

JDK

JDK下载https://www.androiddevtools.cn/

配置环境变量,将jdk以及jre的bin目录路径配置到系统变量path中

配置环境变量的目的:可以在任何路径运行程序,系统变量是任意用户都可以运行程序

验证安装:java -version会出现java版本

在这里插入图片描述

javac

在这里插入图片描述

jdk(java development kit):java语言软件开发工具包,包括jvm、jre、java基础类库

SDK

sdk下载https://www.androiddevtools.cn/

在这里插入图片描述

选择任何人使用电脑

在这里插入图片描述

不启动管理程序

在这里插入图片描述

配置环境变量

将以上三个文件的路径添加到系统path

在这里插入图片描述

在这里插入图片描述

添加系统变量

在这里插入图片描述

安装插件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

验证

adb–>

在这里插入图片描述

aapt–>

在这里插入图片描述

常用ADB命令

下载夜神模拟器,开启模拟器内的开发者模式(连续点击版本号),打开USB调试,默认端口号62001

模拟器助手可以多开模拟器,开启模拟器之后就可以使用adb命令查看了

ADB( Android Debug Bridge,安卓调试桥)是一个通用命令行工具,其允许您与模拟器实例或连接的Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。

1、连接模拟器

adb connect ip:端口号

在这里插入图片描述

出现adb版本和模拟器adb版本不一致时,将sdk目录下的adb.exe复制一份改名为nox_adb.exe

在这里插入图片描述

替换模拟器目录下的nox_adb.exe

在这里插入图片描述

此时客户端和服务器的版本一直,只要开启服务器就会自动连接上

2、查看adb已经连接的设备:adb devices

device 已经连接

offline 断开连接

unauthorization 已经连接成功,但是手机不信认此电脑

模拟器连接

在这里插入图片描述

连接手机

打开开发者选项—>打开usb调试—>默认usb配置更改为MIDI

1.有线连接:(开启电脑adb服务)—>插上数据线,允许usb调试—>adb devices查看连接设备名是手机的序列号

2.无线连接:手机和电脑在同一个局域网—>通过数据线进行连接—>通过手机设备占用端口号 adb tcpip 5555—>拔掉数据线,通过adb connect ip:端口号进行连接—>adb devices 查看连接的设备名是手机ip:端口号

在这里插入图片描述

3.开启adb服务器:adb start-server

在这里插入图片描述

4.关闭adb服务器:adb kill-server

在这里插入图片描述

5.断开连接 :adb disconnect(断开所有设备)

​ adb disconnect ip:端口号(断开指定设备)

在这里插入图片描述

6.进入安卓系统:adb shell

在这里插入图片描述

连接多个设备时,进入指定设备(adb -s ip:端口号)

进入安卓系统后,与linux命令基本相同,都可以使用

7.退出安卓系统:exit

在这里插入图片描述

8.查看系统版本:adb shell get prop ro.build.version.release

在这里插入图片描述

9.查看日志信息:adb logcat

在这里插入图片描述

清空之前的日志:adb logcat -c

将日志写入文件:adb logcat > 文件路径/文件名,Ctrl+C结束写入日志,没有路径写入cmd所在当前路径

在这里插入图片描述

10.获取手机上的安装包名:adb shell pm list packages(在安卓系统外)

​ pm list packages (在系统内部)adb shell pm list packages -3(获取第三方安装包名)

在这里插入图片描述

在这里插入图片描述

  1. 获取正在运行的包名和activity:adb shell dumpsys activity activities

在这里插入图片描述

在这里插入图片描述

12.在设备上安装app包:adb install 路径/包名(默认安装,原设备没有此包,否则安装不成功)

​ adb install -r 路径/包名(覆盖安装,不管设备上有没有这个app,都可以安装)

在这里插入图片描述

13.卸载app包:adb uninstall 包名

在这里插入图片描述

14.将文件从PC写入移动设备:adb push 本地路径 /设备路径

在这里插入图片描述

15.将文件从移动设备读取到PC:adb pull 设备地址 本地地址

在这里插入图片描述

16.截屏并保存到移动设备:adb shell screencap /sdcard/a.png

在这里插入图片描述

17.查看adb 版本:adb version

在这里插入图片描述

Monkey

adb shell monkey -p 包名 事件名称 事件百分比 参数 事 件数

操作事件

  1. 触摸事件 --pct-touch

触摸事件是指在屏幕某处按下并抬起的操作,2个事件

  1. 手势事件 --pct-motion

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作,3个事件

  1. 二指缩放事件 --pct-pinchzoom

二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。3个事件

  1. 轨迹事件 --pct-trackball

轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。

  1. 屏幕旋转事件 --pct-rotation

屏幕旋转事件是一个隐藏事件。它其实是模拟的Android手机的横屏和竖屏切换。

  1. 基本导航事件 --pct-nav

基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。

  1. 主要导航事件 --pct-majornav

主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。

  1. 系统按键事件 -pct-syskeys

系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。

  1. 启动Activity事件 --pct-appswitch

启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。

  1. 键盘事件 --pct-flip

键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。

  1. 其他类型事件 --pct-anyevent

其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。

参数

–throttle 间隔时间,单位是ms,表示每个事件操作一次间隔的时间

–ignore-crashes 忽略崩溃 --ignore-timeouts 忽略程序超时错误 --ignore-security-exceptions 忽略应用程序权限错误

以上三个都是在程序发生异常时,能够继续下面的操作,一般测试都是在晚上进行,如果不带这三个参数,程序报错就会停止,无法达到测试效果

使用-v指定log的详细级别 monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,一般使用-v-v,将正确日志和错误日志分别保存。

adb shell monkey -p com.jingdong.app.mall --pct-touch 40 --pct-motion 25 --pct-rotation 5 --pct-appswitch 30 --throttle 400 --ignore-crashes --ignore-timeouts -v-v 200 1>a.log 2>b.log

手机app测试内容

测试内容为专项测试、埋点测试和性能测试

专项测试

(1)****功能测试

依据需求文档、业务逻辑、隐形需求进行测试。

(2)****弱网测试

通过fiddler设置延迟、设置高丢包来进行测试

观看弱网情况下的2g、3g、高延迟、高丢包情况下app能够正常使用

(3)****兼容性测试

​ 屏幕分辨率

​ 不同品牌安卓手机

​ 不同的操作系统

​ 能否与其他软件兼容

(4)****安装卸载测试

安装测试:

  1. 软件在不同操作系统下安装是否正常。
  2. 软件安装后的是否能够正常运行,安装后的文件夹及文件是否写到指定的目录里。
  3. 软件安装向导的UI测试
  4. 软件安装过程是否可以取消,点击取消后,写入的文件是否如概要设计说明处理
  5. 软件安装过程中意外情况的处理是否符合需求(如死机,重启,断电,断网)
  6. 安装空间不足时是否有相应提示
  7. 安装后有没有生成多余的目录结构和文件
  8. 安装时获取的一些权限,例如摄像头、录音等
  9. 安装后再次安装,或者app更新安装
  10. 安装后app的图标,名称显示
  11. 安装过程中的提示信息正常

卸载测试:

  1. 直接删除安装文件夹卸载是否有提示信息。
  2. 测试系统直接卸载程序是否有提示信息。
  3. 测试卸载后文件是否全部删除所有的安装文件夹。
  4. 卸载过程中出现的意外情况的测试(如死机、断电、重启)。

(5)****稳定性测试

通过monkey测试

下班之前编写好monkey脚本,设置事件,尽可能模拟用户的操作,设置时间间隔,忽略崩溃,无响应,日志分流保存,执行monkey脚本,第二天上班之后查看错误日志,搜索anr,crash,exception,统计出现的频率,提交bug,修复之后,携带seed值验证是否修复(-s)。

稳定性测试结束标准:近30多万次事件未出现anr,crash,exception问题

(6)****安全测试

  1. 扣费风险
  2. 隐私泄露风险:例如在我们安装APP应用时通常会看到"xx要读取 手机通讯录"等提示,这些提示可以提示用户拒绝接受,这 些是APP测试中的测试点。
  3. 校验input输入:对于APP有输入框的要对输入的信息进行校验, 比如密码不能显示明文。

(7)****干扰测试

收到电话、收到短信、收到通知栏消息、无电提示框弹出、第三方安全软件告警弹出。

(8)****交互测试

前后台交互

应用之间交互

埋点测试

埋点是唯一标识页面和操作行为的一串字符串,在应用中特定的流程收集一些信息,包括访问数,访客数,页面浏览数和点击数等,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑。

adb logcat |grep “埋点”

操作该埋点对应的页面或者行为

看日志中是否有埋点(该方法是对客户端的埋点测试)

查询数据库,看是否有该埋点(用来看是否埋点数据是否插入数据库,以便后来统计数据)

性能测试

app前端性能:cpu、内存、流量、电量、启动耗时(冷启动、热启动)、fps、渲染

app前端性能工具:性能狗(只测fps)GT(全部都测)adb收集数据

adb收集数据

1.占用的cpu:adb shell dumpsys cpuinfo | findstr “包名”

2.占用的内存:adb shell dumpsys meminfo | findstr “包名” adb shell top -d 3(每3秒刷新一次)

3.消耗的电量:adb shell dumpsys battery 查看手机的电池信息

在这里插入图片描述

4.启动耗时:启动APP:adb shell am start -W -n app的activity

在这里插入图片描述

​ 1)冷启动:安装后第一次启动

​ 冷启动关闭:adb shell am force -stop 包名

​ 2)热启动:非第一次启动

​ 热启动关闭:adb shell input keyevent 3

5.流量:1)查看app进程的pid:adb shell ps | findstr 包名

​ 2)通过app进程的pid获取流量信息:adb shell cat /pro/pid号/net/dev

在这里插入图片描述

在这里插入图片描述

日志的错误通常有三种:anr(程序无响应)crash(程序崩溃)exception(其他异常)

产生anr的原因

1)应用进程的主线程对输入事件在5s内没有处理完毕

2)应用进程的主线程在执行BroadcastRecevier的onReceive函数时10s内没有和粗理完毕

3)应用进程的主线程在执行Service的各个生命周期函数时20s内没有处理完毕

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybxg58aE-1678533701202)(C:\Users\张凯琪\AppData\Roaming\Typora\typora-user-images\1676962923529.png)]

产生crash的原因

1)空指针异常

2)堆栈溢出(内存泄漏:只申请内存,不释放内存;内存溢出:内存被占用完了,或内存已经释放但系统未回收)

3)数组越界

4)应用进程被其他进程中断

5)系统反应缓慢,导致主线程卡死,请求超时

6)cpu负载过高

7)控件不匹配

8)死锁

9)运行异常

APP测试和WEB测试的区别

1.功能方面:
在流程和功能测试上是没有区别的,系统测试和一些细节可能会不一样。那么我们就要先来了解,web和app的区别:
web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。在系统测试的时候就会产生区别了。
首先从系统架构来看的话,web测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是app端是不能够保证完全一致的,除非用户更新客户端。如果是app下修改了服务端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍。

2.性能方面:
web页面可能只会关注响应时间,而app则还需要关心流量、电量、CPU、GPU、Memory这些了。

3.兼容性方面:
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。app的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。

4.相比较web测试,app更是多了一些专项测试:
  一些异常场景的考虑以及弱网络测试。这里的异常场景就是中断,来电,短信,关机,重启等。
  而弱网测试是app测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机。

5.安装、卸载、更新:
  web测试是基于浏览器的所以不必考虑这些。而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包更新、断点续传、弱网,卸载后删除app相关的文件等等。

6.界面操作:
  app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。
浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。app的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。

4.相比较web测试,app更是多了一些专项测试:
  一些异常场景的考虑以及弱网络测试。这里的异常场景就是中断,来电,短信,关机,重启等。
  而弱网测试是app测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机。

5.安装、卸载、更新:
  web测试是基于浏览器的所以不必考虑这些。而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包更新、断点续传、弱网,卸载后删除app相关的文件等等。

6.界面操作:
  app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。


本文转载自: https://blog.csdn.net/qq_44125413/article/details/129467468
版权归原作者 K7() 所有, 如有侵权,请联系我们删除。

“软件测试2”的评论:

还没有评论