5.7渠道SDK测试
那么前面textbox代码就会变成如下:alert(“fancyguo”)
很明显,这个textbox原先的代码就被分成了三部分,前面textbox是一部分,中间的JS代码会弹出“fancyguo”字样一个alert,后面一部分则被注释掉,那么中间嵌入的JS代码就被执行。这里我只是举了一个小例子,如果把中间的代码换成其他的恶意代码会怎么样呢?比如我在前面嵌入的代码是"/>alert(document.cookie)
通过document.cookie就会打印出用户的所以cookie信息。
或者用户textbox里输入
"onfocus="alert(document.cookie)
那么原先的代码就会变成
也就是在其中嵌入了onfocus后面的代码,在触发onfocus时,嵌入的JS代码就会被执行。
以上只是些最基本最浅显的猜测,更为深入的还待之后进行较为深入研究。
(5)反编译
通过对app进行反编译,可获得源代码,游戏资源(图片,声音)等,存在源代码,资源被窃取的风险。如果有人通过反编译获得源代码,在代码中嵌入恶意代码(病毒,广告等),然后使用工具对修改后的文件进行重新编译,签名,打包,并发布到网上,这将对公司和玩家造成不可预计的损失。
下面说下两个反编译的方法(均需配置Java环境变量,如果之前配置过则无需重新配置):
这是谷歌提供的一个反编译工具,目前谷歌不允许这个工具上传新文件,因此下载地址被转移了,放在了:
使用方法很简单,首先运行>cmd cd到apktool所在的目录(win+R打开运行,输入cmd打开命令行,如果你的apktool没在C盘下先切换到所在的盘符(如我的放在D盘就先切换到D盘盘符),然后用cd命令进入apktool所在的文件夹(如我的在D:\apktool,就cd D:\apktool,注意cd后有空格))。如下:
然后输入apktool d(为了方便我们可以把要反编译的apk放在apktool文件夹下,如此就可以直接输入apk名称),这里我随便再网上下了个apk做实验,首先将APK放在apktool下面
然后直接运行apktool d BattleGlory_2.36.apk
运行完成后,就可以看到apktool文件夹下多出了一个和apk名字的文件夹,即反编译成功。
反编译成功后我们进入这个文件夹就可以看到项目xml文件,源代码,资源文件等等。如果没有加密或者加密较为简单,就可进行破解修改。
进行修改之后我们就可以对这个文件夹进行重编译,重编译的命令如下:apktool b如我对刚才反编译出的文件夹进行重编译:
我们可以再文件夹下的dist文件夹下找到重编译完成后生成的apk文件
这个apk还处于未签名状态(unsign),在对其进行签名即可在手机上进行安装。可以使用re-sign.jar(需配置java和Android环境变量,)对apk进行签名,下载地址:http://troido.com/downloads/1/category
打开后如下图所示:
将要签名的apk拖上去,然后选择保存地址,过一会出现successfully即签名成功:
②dex2jar和JD-GUI
这种主要是对dex进行反编译,查看源代码。首先下载dex2jar,下载地址:https://code.google.com/p/dex2jar/downloads/list使用方法和上面差不多,首先运行cmd,cd到dex2jar所在的文件夹下:
同样便于输入,把要反编译的apk放在dex2jar所在的文件夹下:
Cmd中输入dex2jar(中间有空格),执行成功如下图:
此时会生成一个XXX(apk名字)_dex2jar.jar的文件:
现在使用JD-GUI,下载地址:http://jd.benow.ca/在里面打开上面所获得的jar文件即可看到一些源代码:
如果游戏可以被反编译并且被人修改二次打包,会造成比较严重的后果,在测试的时候一定要加以注意,关于如何加密我的能力现在实在触及不到,找了下资料,谷歌自己有个混淆代码的方法,但这个不是最终解决方案,只是增加了阅读的难度,如果愿意花时间还是有可能被逆向的,所以如何加密还需程序加以解决,我在网上找到了个应用加密网站,爱加密:http://www.ijiami.cn/
(6)其他安全测试
安全测试,应当还有很多。比如修改客户端时间等等。
5.9中断健壮性测试
手机的主要用途当然是用来打电话,发短信,这也是移动设备测试和PC设备测试很重要的一个区别,在移动设备的使用中会有很多多个事件触发的情况。这也是我们需要进行测试的地方。这方面测试我主要分为以下几个方面:
①有弹出框
在游戏过程中有弹出框,比如闹钟,定时提醒事件,低电量提醒,插入耳机,插入USB,短信提示等等。
②其他应用的影响
主要是在游戏过程中切换到其他应用或其他界面,如游戏过程中来电,手势快捷键或者快捷按键打开其他应用(如相机),切换到其他应用(如qq,短信),home键回到主界面,游戏时安装其他应用的弹出等。
③强制性中断
游戏过程中,关机,重启,关掉进程,重新安装游戏等操作。
④锁屏
在游戏过程中进行锁屏操作。
⑤功能冲突
游戏中常见的冲突是音乐,如来电或闹钟时不能播放背景音乐和音效,调节音量大小时可正常调节,开关手机音乐时表现正常等。
⑥存储
在运行游戏时手机连接PC,并将手机设置为存储设备(相当于移除SD卡),观察游戏的运行。
中断健壮性测试需着重注意:
①进行中断测试后返回游戏是否一切正常。
②着重注意强制引导中的中断测试。
③着重注意动画movie播放时的中断测试。
④着重注意充值消费过程中的中断测试。
⑤着重主要游戏正升级更新过程中的中断测试。
随着手机发展越来越快,可能出现的中断情景会越来越多,需多加注意。
5.10随机测试
随机测试就是在通过常规测试后根据自己的游戏或测试经验,对游戏中可能存在缺陷的地方进行测试。随机测试主要是需要测试人员积累测试经验,善于总结分析以往所遇到的BUG,知道了解哪些地方容易出错。
这里介绍一下前面所说的Monkey,Monkey实际上是一个客户端压力测试工具,就像猴子一样对手机进行乱按,我们可以通过Monkey来模拟用户点击,划动屏幕,按键等操作,检测游戏的稳定健壮性。Monkey是Android SDK自带工具,我们可以通过adb命令来使用,方法在前面5.2中的安装测试>通过命令行安装有说过。使用方法:
①首先为了方便将测试的apk放在Android SDK的platform-tools下,手机连接电脑,运行cmd,进入platform-tools所在的文件夹:
②运行adb shell进入shell环境:
③此时就可以运行monkey命令了(记得打开游戏)。
Monkey的命令格式是monkey···<数字>
举个简单的例子:monkey –pcom.–v100
上面这个意思就是随机在应用上运行100次操作,如下:
解释一下这个命令的意思:
monkey –pcom–v100
monkey后面如果不跟任何参数或选项,则以无反馈模式启动monkey,并对所有的包进行随机事件。
-p这个参数是约束monkey只对所指定的包进行随机事件,后面必须跟着正确的包名,,如果包名不对就可能会报No activities found to run, monkey aborted.的错。
-v则是反馈信息的级别,如果不输入则不显示,只反馈开始和结束。如:
如果想显示高级别可输入多个-v,如:monkey –pcom.–v–v –v 100一般情况下level0(一个-v)即可。
最后的数字100,就是随机操作的总个数,数字根据自己的需求调整。
下面介绍一下另外一些较为常用的参数:
-s这个参数可以给伪随机数一个seed值,如果过再次输入这个seed值,可以运行相同的随机事件序列,这个参数很棒,建议在测试过程中加上,用于复现BUG。例如,我在输入monkey –pcom.–v–s 99100执行这个命令时出错了,那么我想复现这个bug,只需再次输入monkey –pcom.–v–s 99100即可。实际上仔细观察反馈信息,会发现每次monkey运行时都会有一个seed值。
--throttle这个是在事件之间插入固定的延迟,后面是以毫秒为单位,例如monkey –pcom.–v–throttle 1000 100随机事件之间间隔设为1秒,根据自己的需求来设定,不加这个参数的话就默认以最快的速度操作。
在上面的反馈中该有这么一个信息,这其实是表明在这次monkey中各个事件占得比率,通常事件有以下几种,并且可以通过调整的值来调整此次monkey中这个事件所占的百分比。
--pct-touch 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。
--pct-motion 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。
--pct-trackball 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。
--pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)。
--pct-majornav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
--pct-syskeys 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)。
--pct-appswitch 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。
--pct-anyevent 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。
这个使用方法也很简单比如我只想测偷吃事件对游戏的影响,那么将touch百分比设置为100%即可,即monkey –pcom.F–v–pct-touch 100 100(注意如果设置多个pct事件,百分比总和不要超过100)
monkey –help打开帮主,可显示常用命令:
再写下去没完了,更多命令解释请看官方文档吧,里面写的很详细,地址:http://developer.android.com/guide/developing/tools/monkey.html
总结几个我比较常用的命令组合:
monkey -pcom.-v 500基本的输出。
monkey -pcom.-v -v -v 500 三级输出测试信息。
monkey -pcom.-s -v 500 为伪随机的事件序列定一个seed值,若出现问题下次可以重复同样的系列进行排错。
monkey -pcom.-v --throttle 1000 500 每执行一次有效的事件后休眠1秒。
如果monkey测试过程中出错了怎么办,我们要在Eclipse看logcat的输入错误信息或者分析monkey的反馈信息,在官方文档中也有将monkey信息转换成hprof格式的参数—hprof,也可以将monkey信息进行手工到处,monkey -pcom.-v 500> 如:monkey -pcom.ne-v 500> /sdcard/monkey_test.txt(保存到手机上sd卡上,注意shell环境下的斜线)。
关于monkeyrunner,比monkey更加高级,支持自己写脚本插件,控制事件,随时截图,记录和回放等等,文档地址:http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
关于monkey测试需进行大量多次随机操作,确保应用不会出问题,特别是在关键或容易出错的地方进行(如强制引导中)。
网友评论