系统测试实习学习小知识点记录(断言,monkey,内存泄露溢出,网络配置)

断言
assert(表达式)
当表达式的值为真的时候,也就是假设成立的时候,系统继续运行;但是当表达式的值为假,也就是假设不成立的时候,他就会中断程序执行,并且报告错误所在行。

 do
    {
        printf("input m(m>=0):");
        scanf("%d",&m);
    }while(m<0);     //当m>=0,不再输入
    assert(m>=0);    //退出上面的输入后,发现输入的值比0小,中断程序,断言为假

上面的代码中,assert(m>=0)的效果与语句if(m<0) exit(1);类似,理论上来说条件语句可以用来替代断言,但是使用条件语句后:
1.程序编译后的目标代码体积变大
2.降低最终发布的程序效率
使用断言:
1.便于在程序调试时发现错误
2.不会影响程序执行效率

断言只能用于调试,不能作为程序的功能。断言不是用来检查程序的错误的,断言为假只会中断程序的执行,报告程序是错误的,而不会对错误进行相应的处理。断言不能用来判断有可能发生的情况是否会发生,不能对函数的入口参数进行合法性检查,不能用断言代替条件语句,不能用断言判断有可能发生的错误,只能用于检查程序中不能发生的错误确实不会发生

适合使用断言的情况:
1.检查程序中各种假设的正确性,eg确定一个计算结果确实在合理的范围内;
2.证明或者测试某种不可能发生的状况确实不会发生,eg:一些理论上不会被执行到的分支,确实不会被执行;

使用断言的基本原则:
1.使用断言可以捕获不应该或者不可能发生的情况,不等同于非法情况
2.一个assert只能检验一个假设

Monkey
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法,是Android自动化测试,版本release(发布)前,Monkey跑出来的结果中crash要为0,final release前,Monkey跑的总次数应为25W,结果里不允许有nullPointException出现。(其实可以想象成一只猴子啥都不知道,疯狂乱敲…)
在Monkey运行的时候,它生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理:

1.如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

2.如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。

3.如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
Monkey的基本用法
1.-p
用于约束限制,用此参数指定一个或者多个包,指定包之后,monkey将只允许启动指定app,如果不指定包,monkey将启动系统中所有的app 。
例:
指定一个包 monkey -p com.htc.weather -v 1000
指定多个包 monkey -p com.htc.weather -p com.htc.pdfreader -p com.htc.photo.widgets -v 1000
不指定包 monkey -v 1000
2.-v
用于指定反馈的信息级别(日志的详细程度),分为三个级别,级别越高,日志越详细。
level 0:
例:monkey -p com.htc.weather -v 1000
level 1:
例:monkey -p com.htc.weather -v -v 1000
level 2:
例:monkey -p com.htc.weather -v -v -v 1000
3.-s
指定伪随机数生成器的seed值,如果seed相同,则两次monkey 测试产生的事件序列也相同。
例: monkey -p com.htc.weather -s 35 -v 1000
4.–throttle(毫秒)
制定每个事件结束后的间隔时间,降低系统压力。(如果不指定系统会尽快的发送事件序列)
例:monkey --throttle 300
5.定制事件
–pct-touch:指定触摸事件的百分比,例:–pct-touch 5% , 其他相关的:
–pct-motion (滑动事件)
–pct-trackball (轨迹球事件)
–pct-nav (导航事件 up/down/left/right)
–pct-majornav (主要导航事件 back key 、 menu key)
–pct-syskeys (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
–pct-appswitch (activity之间的切换)
–pct-anyevent (任意事件)
6.调试选项
–dbg-no-events:初始化启动的activity,但是不产生任何事件。
–hprof:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项。
–ignore-crashes:忽略崩溃
–ignore-timeouts:忽略超时
–ignore-security-exceptions:忽略安全异常
–kill-process-after-error:发生错误后直接杀掉进程
–monitor-native-crashes:跟踪本地方法的崩溃问题
–wait-dbg:知道连接了调试器才执行monkey测试。

7.为保证测试数量的完整进行,一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下
adb shell monkey -p 包名 -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 10000
8.把log导出到本地
这里分为两种情况:
1.如果我们没有进入到shell则直接执行命令:
adb shell monkey -p 包名 -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 10000 > E:\monkey_log\test1.txt
2.如果已经进入adb shell,正确的导出步骤:(在前边我们执行完adb shell命令之后,进入shell命令相当于进入Linux的root下面,没有权限在里面创建文件。)
执行exit命令退出shell
然后执行adb shell monkey -p 包名 -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 10000 > E:\monkey_log\test1.txt
内存泄漏和内存溢出
1、内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。
2、内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。
3、二者的关系
1.内存泄漏的堆积最终会导致内存溢出
2.内存溢出就是你要的内存空间超过了系统实际分配给你的空间,此时系统相当于没法满足你的需求,就会报内存溢出的错误。
3.内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。就相当于你租了个带钥匙的柜子,你存完东西之后把柜子锁上之后,把钥匙丢了或者没有将钥匙还回去,那么结果就是这个柜子将无法供给任何人使用,也无法被垃圾回收器回收,因为找不到他的任何信息。
4.内存溢出:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是我承受不了那么多,那我就报错。

网络配置问题
三种匹配的方式:
1、wlan : 设备和手机连接在同一无线网下,配对。
2、蓝牙 : 设备和手机通过蓝牙配对,达到控制设备的目的。
3、手机直连 : 就是开启设备热点,手机连接到设备的热点上,达到设备的配对

首先要明白一点,咱们的手机是不能直接和设备通信的,原因是设备不能理解手机发送的命令。那怎么样设备才能理解我们发送的指令呢?这就不得不说到通讯协议了。
我们的设备有着一套自己的”密码本”,只要我将指令以符合”密码本”的格式发送给设备,设备就会按照给出的指令行动。这里的”密码本”就是上面提到的通讯协议。
能远程控制的设备,一般都有内置芯片来接受信号。以前的设备,像空调之类的,一般内置GSM芯片,能接受手机短信信号。更据处理信号,可以做出不同的远程操作。现在的 一般都内置WIFI芯片,可以说就具有了联网功能,可以通过网络达到控制的目的。

有一种又快又好用的配置方法:smartconfig(一键配置)
smartconfig 是一个面向软件开发者的智能网络配置功能。硬件开发商无需关系自己的wifi芯片怎么连接到路由器,也无需知道动态的路由怎么被切换。因为smartconfig时通过终端软件去让wifi芯片连接到路由器的。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值