测试相关知识点

web测试和app测试的相同点和区别?
简单回答:
相同点就都是采用功能测试
不相同是一个在web测试,一个在APP测试。

详细点的如下:
一:相同点
不管是传统行业的web测试,还是新兴的手机app测试,都离不开测试的基础知识:

1)同样的设计测试用例方法:边界值分析法、等价类划分、错误推测法、场景法等
2)同样的测试方法:黑盒测试,验证业务功能是否正确符合用户或者设计预期;
3)都要检查UI:界面的布局、风格和按钮等是否简洁美观、是否统一等;
4)页面性能检测:测试页面载入和翻页的速度、登录时长、内存是否溢出等;
5)应用的稳定性:测试应用系统的稳定性等,不会闪退卡死等。
B:不同点

相对于web测试,APP测试,除了要考虑基本的功能测试、性能等,还要考虑手机本身固有的属性特征。所以APP测试过程中还需要注意如下几个方面特性:
1)手机作为通信工具,来电、去电、接收短信等操作都会对app应用程序产生影响,所以app测试第一个要考虑的属性特征是:中断测试。
中断测试有人为中断、新任务中断以及意外中断等几种情况,主要从以下几个方面进行验证:
a.来电中断:呼叫挂断、被呼叫挂断、通话挂断、通话被挂断
b.短信中断:接收短信、查看短信
c.其他中断:蓝牙、闹钟、插拔数据线、手机锁定、手机断电、手机问题(系统死机、重启)
2)手机用户对app产品的安装卸载操作:
a.从上一个版本/上两个版本直接升级到最新版本。
b.全新安装新版本
c.新版本覆盖旧版本安装
d.卸载旧版本,安装新版本
e.卸载新版本,安装新版本
3)web自动化测试使用的工具较常用的是QTP,而android手机自动化测试工具比较常用的是monkey、monkeyrunner、appium。

如何测试一个app的登陆功能/情景?
1、页面基本元素的操作。
2、大量字符,特殊字符,边界值,必填项校验。
3、注册手机号的特殊性验证,注册邮箱的格式验证。
4、密码大小写是否敏感,密码是否加密展示,密码是否有可见按钮功能,密码框能否使用复制粘贴。
5、验证码校验:必填项,过期,错误,无网络时获取验证码,多次获取,超过获取次数,输入验证码后,修改手机号。
6、登陆时与系统的交互:锁屏,蓝牙,home,后退,横竖屏,修改字体字号。
7、逆向思维:已注册账号注册,未注册账号忘记密码,未注册账号登陆,注册过程中退出再次注册。
8、输入法交互,切换输入法,切换输入输入模式,手写/九宫格。
9、登陆账号的多样性:多个账号轮流登陆,同一个账号多角色登陆。
10、第三方登录验证:账号授权,信息正确,取消授权。
11、登陆页面跳转,返回,登陆成功及其他页面跳转。
12、手机兼容性测试:分辨率兼容,系统兼容,系统版本兼容,App版本兼容。
13、网络切换,网络断开,弱网。

消息推送如何测试?
1)消息推送对象
消息推送一般可以自定义推送对象,有全部推送,精确推送,及安卓和IOS渠道推送,注意推送对象是否正确,推送之前确认自己是否在测试环境操作,以免造成生产问题。
2)消息简介
客户端收到消息推送有两种形式,客户端后台运行一般推送显示在通知栏,客户端前台运行一般弹出弹框,简介内容注意字数过多溢出情况。
3)消息详情
注意详情所支持的内容,包括文字、图片、表情包、换行以及链接跳转。
4)消息推送场景(支持定时推送)
(1)消息推送时间:
a)设置过去时间
b)未推送之前修改消息内容
c)删除消息,查看是否还会推送
(2)客户端运行状态
a)前台运行
b)后台运行
c)进程关闭状态
(2)特殊场景
a)多个提醒冲突
b)当天设置当天推送
c)当天设置隔几天起效

APP闪退是有哪些原因造成的?
一般App闪退是由于以下几个原因造成的
1.缓存垃圾过多
由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况
2 运行的程序过多,导致内存不足
3.应用版本兼容问题
如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中,也会造成应用闪退。
解决方法:如果是版本太旧,更新为新版本即可;如果是新版本闪退,可能是应用在改版调试,可卸载后安装旧版。
4.检查APP中访问网络的地方,组件中的ImageView是否可以正常的下载并显示到app 页面上。
5.检查APP的sdk和手机的系统是否兼容。
6.在一些特定情况下的闪退,比如播放视频,在Android5.0 升级到Android6.0的时候,有些系统API老版本有,新版本没有,到时回去对象的时候失败,报空,系统就会出现闪退问题。

测试过程中遇到app出现ANR,你会怎么处理?
第一:什么会引发ANR?
在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的 。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR:
1.在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)
2.BroadcastReceiver在10秒内没有执行完毕
造成以上两点的原因有很多,比如在主线程中做了非常耗时的操作,比如说是下载,io异常等。

第二:如何避免ANR?

1、运行在主线程里的任何方法都尽可能少做事情。特别是,Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。(可以采用重新开启子线程的方式,然后使用Handler+Message的方式做一些操作,比如更新主线程中的ui等)

2、应用程序应该避免在BroadcastReceiver里做耗时的操作或计算。但不再是在子 线程里做这些任务(因为 BroadcastReceiver的生命周期短),替代的是,如果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个 Service。(此处需要注意的是可以在广播接受者中启动Service,但是却不可以在Service中启动broadcasereciver,关于原因后续会有介绍,此处不是本文重点)

3、避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。如果你的应用程序在响应Intent广 播时需要向用户展示什么,你应该使用Notification Manager来实现。

总结:anr异常也是在程序中自己经常遇到的问题,主要的解决办法自己最常用的就是不要在主线程中做耗时的操作,而应放在子线程中来实现,比如采用Handler+mesage的方式,或者是有时候需要做一些和网络相互交互的耗时操作就采用asyntask异步任务的方式(它的底层其实Handler+mesage有所区别的是它是线程池)等,在主线程中更新UI。

如何查看移动端的日志以及会出现那些异常?
1、NullPointerException — 空指针引用异常;

2、ClassCastException — 类型强制转换异常;

3、IllegalArgumentException — 传递非法参数异常;

4、ArithmeticException — 算术运算异常;

5、ArrayStoreException — 向数组中存放与声明类型不兼容对象异常;

6、IndexOutOfBoundsException — 下标越界异常;

7、NegativeArraySizeException — 创建一个大小为负数的数组错误异常;

8、NumberFormatException — 数字格式异常;

9、SecurityException — 安全异常;

10、UnSupportedOperationException — 不支持的操作异常;

app测试主要测哪些以及对应如何展开对应的测试工作?
功能测试(流程测试、功能点测试)、兼容性测试、交叉测试、安装卸载测试(包括应用的升级)、压力测试(接口压力测试)、安全测试等等。

一、APP要做哪些测试?
1、功能测试:对具体功能点一一测试,验证确认每个点都实现满足需求的相应功能。

2、APP兼容性测试:根据屏幕尺寸、系统进行适配测试;对市场上主流的设备安装应用执行测试(如果有特定针对群体,应该根据实际用户数据接入设备进行分析,对靠前的机型进行适配测试),确保都能正常运行。

3、压力测试:用户量大,交互性高的应用需对接口执行压力测试,确应用在海量的用户使用的情况下能正常运行。

4、UI/UE测试:主要是一些适配,用户体验方面,交互方面的测试。

5、用户行为统计测试:确保手头的行为统计分析定义文档为最新版本,且与开发人员手中的文档一致;确保产品经理在文档中所定义的页面在该产品中都是存在的;尽可能真实地模拟用户行为;核对统计日志,确保各项操作所对应的页面ID以及操作ID都是正确的。

6、安全测试 :软件权限、数据安全性、通讯安全性、人机接口安全性。

7、安装卸载测试:确保应用都能正确安装、卸载,且能正确运行(注意应用的升级测试:升级前后的状态)。

8、交叉测试:对于正在运行的应用,若进入短信、电话等其它软件响应的情况,不会影响被测试应用,且会保证应用能正确运行;杀掉进程时再重新打开APP;多个APP切换数据的保存等。

9、协议测试:模拟客户端直接发送协议包给服务器,看服务器是否有一定的校验,认不认客户端发过来的数据。协议测试主要是为了处理用户发送恶意协议到服务器,骗过服务器的校验。

10、异常测试:多次快速点击切换页面的响应情况?横屏竖屏的快速操作:切换菜单,播放,下载等;服务器宕机或出现404、502等情况下的测试。

11、弱网测试:APP在2G/3G/4G/wifi下的表现情况,网络环境变化时,APP的应对情况:是否有适当提示?从有网环境到无网环境时,APP的反馈如何?从无网络环境回到有网络环境时,是否能自动加载数据,且多久才能开始加载数据?

12、电量测试:设备在不同电量时(低于10%,50%,95%),APP的响应以及操作流畅度;设备在充电时,APP的响应以及操作流畅度;设备意外断电时,APP数据丢失情况等。

app的性能测试的关注点有哪些?
App性能测试响应点:
主要测试点:
1、冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)
2、热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)
3、完全启动:从启动到首页完全加载出来的时间间隔
4、有网启动:从发起跳转,到页面完全加载出来的时间间隔
5、无网启动:从发起跳转,到页面完全加载出来的时间间隔
(在项目中,主要测试关注点是冷启动,热启动)
测试标准:冷启动时间不超过1.5s, 热启动不超过1s.

内存:
测试点:
1、空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
2、中强度状态:时间偏长的操作应用。
3、高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。

内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少
1
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
memory leak会最终会导致out of memory!
内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。

内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出.
建议:
1.尽量不要在循环中创建很多临时变量
2.可以将大型的循环拆散,分段或者按需执行

CPU:
CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR(application not responding, 主线程(UI线程)如果在规定时内没有处理完相应

如何对app进行弱网测试?
弱网络测试:测试手机app在连接弱网络下的表现。
原理:利用软件控制wifi网络强弱,手机连接到该wifi,就可以测试app弱网络下的功能表现。
关注点:
1、卡死、崩溃。比如:卡在某个界面出不去或者闪退。
2、逻辑错误。比如:购买时扣费和获得不一致,领取物品没到账等。
3、页面显示错误。比如:页面重叠。
所需工具:
1.Network Emulator Toolkit(http://download.csdn.net/detail/u03024218/6722157)
2.WiFi共享精灵
3.无线网卡
可模拟网络:Network Emulator Toolkit可模拟2G、3G、wifi、上下行超时网络。可以根据自己的需要配置。
步骤:
1.PC上插上无线网络
2.打开wifi共享精灵、共享wifi网络。使PC端的wifi网络可以供给手机使用。
3.手机连接该wifi。
4.打开Network Emulator Toolkit。
新建一个网络,并设置网络参数(丢包率、延时、错码率等),然后点击“开始”。

经过上面3个步骤,手机就已经置于弱网络环境下,就可以开始功能测试了。
弱网络测试流程:
1.写测试用例。需要写明需测试的wifi配置、相应功能(一般测试有网络交互的功能)。
2.执行用例并提交相应bug。
3.撰写测试报告。

常见的ADB命令和monkey命令?
一、常用adb命令

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

2、adb version:查看adb的版本序列号

3、adb -s <设备名字>:指定某设备做什么(设备名字用1的方法可以查看)

4、adb install <安装包.apk>:安装应用(写清楚apk的完整路径)adb -s <设备名字> install <安装包.apk>:指定设备安装应用

5、adb shell:通过远程shell命令来控制模拟器/设备

6、exit:退出shell远程连接,回到原路径。(Ctrl+d,退出shell,回到默认路径)

7、adb pull <设备端路径> <pc端路径>:将指定的文件从设备/模拟器上拷贝到pc端(后面的pc端路径可以不指定,默认存储在当前路径下)。例: adb pull /sdcard/log.txt c:/monkey

8、adb push <pc端路径> <设备端路径>:将指定的文件从pc端拷贝到设备/模拟器上

9、adb shell pm list packages:列出电脑端所有apk的包名

10、adb logcat:查看pc端的日志输出。adb shell界面只需输入logcat,查看设备端日志输出(退出Ctrl+c)

二、Monkey命令扩展

1、最简单的monkey执行语句:(adb shell)monkey –p com.jianjiexuan.na –v 500 (对com.jianjiexuan.na 这个程序包单独进行一次500次的monkey测试)

名词解释:-p:用于约束限制,用此参数指定一个或多个包。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。指定多个包:monkey -p –p -p -v 500-v:用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

日志级别 Level 0

例 monkey –p com.jianjiexuan.na –v 500说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息

日志级别 Level 1

例 monkey –p com.jianjiexuan.na –v -v 500说明:提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别 Level 2

例 monkey –p com.jianjiexuan.na –v -v -v 500

说明:最详细的日志,包括了测试中选中/未选中的Activity信息

2、延时及固定序列(adb shell)monkey -s 100 -p com.jianjiexuan.na – -throttle 1000 -v 500 (每次执行一次有效的事件后休眠1000毫秒)(adb shell)monkey -p com.jianjiexuan.na – -throttle 1000 – -randomize-throttle -v 500 (每次执行一次有效事件后随机延时0-200毫秒)名词解释:-s:用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。出现问题下次可以重复同样的系列进行排错。–throttle:固定延时,用于指定用户操作(即事件)间的时延,单位是毫秒;–rand

安卓的四大组件

  • Activity
  • BroadcastReceiver (Broadcast Intent Receiver)
  • Service
  • ContentProvider
  • 1 Activity: 你要写一个有界面的跟用户交互的应用程序,那就少不了这哥们儿。你要写一 个自己的类继承他,然后加载界面,设置事件监听一类的。

这里不得不提及一下Intent兄,Android系统中Activity(或者说界面)之间的跳转是通过
一个Intent类,Intent可以设置action和data, Activity在描述文件中 (AndroidManifest.xml)会描述一个IntentFilter如果Intent满足它的要求就会被启动。

可以把Intent理解成一个球,各种各样的球扔出来(startActivity(myIntent))谁想要谁去 抓,如果碰到几个都想抢一个球的情况,就让最终用户去选谁该得到它(怎么听着有点像抛绣球…-_-!)

还是不太明白怎么使用?放心吧,我下一篇文章会详细地讲Activity和Intent.

2 BroadcastReceiver: 这个哥们是专门在后台接收外部Intent用的比如有电话打进来的时候 ,当有短信发过来的时候,系统的这些程序里都会把相应的Intent广播出来 Context.sendBroadcast(),跟Activity一样BroadcastReceiver也会在AndroidManifest.xml中注册并且描述它的Intentfilter,收到满足的Intent后它就开始工作。当然,你自己的应用程序也可以广播出intent,让别的应用程序使用。

3 Service:它是一个没有UI的后台线程,比如在后台播放音乐的播放器,你退回到手机Home界面的时候,它还在背后运行着,这就需要一个Service来完成。

4 ContentProvider:这是一个非常重要的类,他封装你的数据库操作,将数据提供出去。

这个四个类都是属于框架类型的东西,做应用程序的时候都需要将他们作为父类,重写其中的某些方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值