测试人生

发布新日志

  • 各大手机分辨率

    2016-03-17 16:01:14

    小米系列
     小米4:1920 x 1080 
     小米3:1920 x 1080 
     小米2:1280x720 
     小米2S:1280x720 
     小米2A:1280x720 
     红米1S:1280 x 720 
     红米note:1280x720  
    魅族系列 
     魅族3:1800×1080 
     魅族4:1920 x 1152 
     魅族4 Pro:2560 x 1536  
    三星系列 
     三星S5:1920x1080 
     三星S4:1920x1080 
     三星note4:2560x1440
     三星note3:1920x1080
     三星note2:1280x720  
    华为系列
     华为Mate7:1920x1080
     华为荣耀6:1920x1080
     华为P7:1920x1080
     华为P6:1280x720
     华为荣耀3C:1280x720  
    努比亚系列
     努比亚Z7 Max:1920x1080
     努比亚Z7:2560x1440
     努比亚Z7 Mini:1920x1080  
    步步高系列
     vivo Xplay3S:2560x1440
     Vivo X5L:1280x720    
    HTC系列
     HTC One M8:1920x1080
     HTC Desire 820 Mini:1280x720
  • 智能手机屏幕尺寸和分辨率一览表

    2016-03-17 14:24:34

    智能手机屏幕尺寸和分辨率一览表 
    2.8英寸分辨率为640x480(VGA) 像素密度286PPI 
    3.2英寸分辨率为480x320(HVGA) 像素密度167PPI  
    3.3英寸分辨率为854x480(WVGA) 像素密度297PPI  
    3.5英寸分辨率为480x320(HVGA) 像素密度165PPI  
    3.5英寸分辨率为800x480(WVGA) 像素密度267PPI  
    3.5英寸分辨率为854x480(WVGA) 像素密度280PPI  
    3.5英寸分辨率为960x640(DVGA) 像素密度326PPI(苹果 iphone4) 
    3.7英寸分辨率为800x480(WVGA) 像素密度252PPI  
    3.7英寸分辨率为800x480(WVGA) 像素密度252PPI  
    3.7英寸分辨率为960x540(qHD) 像素密度298PPI 
    4.0英寸分辨率为800x480(WVGA) 像素密度233PPI  
    4.0英寸分辨率为854x480(WVGA) 像素密度245PPI  
    4.0英寸分辨率为960x540(qHD) 像素密度275PPI  
    4.0英寸分辨率为1136x640(HD) 像素密度330PPI(苹果 iphone5)
    4.2英寸分辨率为960x540(qHD) 像素密度262PPI  
    4.3英寸分辨率为800x480(WVGA) 像素密度217PPI  
    4.3英寸分辨率为960x640(qHD) 像素密度268PPI  
    4.3英寸分辨率为960x540(qHD) 像素密度256PPI  
    4.3英寸分辨率为1280x720(HD) 像素密度342PPI  
    4.5英寸分辨率为960*540(qHD) 像素密度245PPI 
    4.5英寸分辨率为1280x720(HD) 像素密度326PPI
    4.5英寸分辨率为1920x1080(FHD) 像素密度490PPI  
    4.7英寸分辨率为1280x720(HD) 像素密度312PPI  
    4.7英寸分辨率为1280x720(HD) 像素密度312PPI  
    4.7英寸分辨率为1280x720(HD) 像素密度312PPI  
    4.8英寸分辨率为1280x720(HD) 像素密度306PPI  
    5.0英寸分辨率为480x800(WVGA) 像素密度186PPI  
    5.0英寸分辨率为1024x768(XGA) 像素密度256PPI 
    5.0英寸分辨率为1280*720 像素密度294PPI 
    5.0英寸分辨率为1920x1080(FHD) 像素密度441PPI  
    5.3英寸分辨率为1280x800(WXGA) 像素密度285PPI  
    5.3英寸分辨率为960x540(qHD) 像素密度207PPI 
    6.0英寸分辨率为854×480 像素密度163PPI 
    6.0英寸分辨率为1280 X 720 像素密度245PPI 
    6.0英寸分辨率为2560×1600 像素密度498ppi 
    7.0英寸分辨率为800x480(WVGA) 像素密度128PPI 
    7.0英寸分辨率为1024*600 像素密度169PPI 
    7.0英寸分辨率为1280*800 像素密度216PPI 
    9.7英寸分辨率为1024x768(XGA),像素密度132ppi 
    9.7英寸分辨率为2048x1536,像素密度264PPI 
    10 英寸分辨率为1200X600,像素密度170ppi 
    10 英寸分辨率为2560x1600 像素密度299ppi
  • 转 -- Loadrunner实现Android / IOS 手机APP压力测试

    2015-12-04 23:00:09

    随着手机APP用户量的增大,大的手机APP一般都需要进行压力测试,这几天用了Loadrunner 12进行了手机APP的压力测试,整理了下,大家可以参考参考怎样给Andorid / IOS手机APP进行压力测试,以下是操作实例。
    下面介绍LR12进行手机压测的步骤:
    1.       网上下载个Loadrunner 12的安装包,我下了个叫 HP_LoadRunner_12_Community_Edition_T7177-15045.exe的文件,这个960M,还有个1.2G的名称中有个Addition的我没装,我的系统是Win7 32 + IE8
    2.       我这个装好后,默认的license是长期的但只有50人,我建议可以用这个录制脚本到时用Loadrunner8.0并发更多,因为手机APP实际上是监控手机对服务器发出的请求,LR12捕获这些请求,压力测试是压测服务器的。
    3.       准备个小度,插入USB接口,用驱动人生扫描驱动,扫描出小度wifi驱动没装,点击安装,驱动人生下载驱动并安装好,安装完后的小度有wifi名及密码。
    4.       手机连接上这个网络,长按此网络,点击修改网络配置,显示高级选项,代理服务器设置为 – 手动,代理主机名及代理服务器端口设置下,下载个CCProxy,运行下,可以查看到本机局域网IP地址,端口随便设置个,如8899. 停止CCProxy.
     
    5.       启动LR12 Virtual User Generator,点击File – New script. and solutionSingle Protocol里选择 Web – HTTP/HTML,点击Create
    6.       点击工具栏的红色的Record按钮,Recording mode选择 Remote Application via LoadRunner Proxy,端口设置为8899Loadrunner会监听这个端口,此端口为手机连接的代理服务器端口。
    7.       点击 Start Recording开始录制
    8.       录制完成后会生成脚本,如下,可以删掉不必要的脚本,剩下自己要测的程序的。
    9.       回放脚本,脚本回放成功,并成功登录手机APP,返回别名
    10.   从 Tools 点击Create Controller Scenario,设置Number of Vusers10人,可以设置更多,这里我设置成10,跑一下,在ControllerDesigntab下将Scenario ScheduleRun Mode设置成为Basic scheduleController – Results – Results Settings,窗口打开后勾选第一个生成每个用户运行时日志,此窗口记录下日志保持的文件夹,运行场景。
    11.   在Controller点击Results – Analyze Results,查看结果
    12.   检查每个用户运行时日志查看细节
  • 转:手机安全测试

    2015-08-05 16:38:23

    一、通过在线工具进行测试
    1.腾讯金刚审计系统service.security.tencent
    优点:包含了修复建议
    2.阿里聚安全检测网址:  jag.alibaba
    阿里聚安全下有自己的安全博客,包含一些:
    1.安全漏洞、2.病毒分析、3.技术研究、4.安全报告相关文档。
    3.360捉虫猎手检测结果appscan.360.cn/同样有自己的安全博客
    4.爱加密网址:safe.ijiami.cn/analyze
    优点:在导出的报告中可以看到对当前apk的评分
    5.百度MTC网址mtc.baidu.com/总结:经比较感觉腾讯金刚审计系统和360捉虫猎手检测结果更全面详细,而且包含修复建意在线工具的缺点是会把apk暴露出来。
    二、使用Drozer测试
    1.Drozer简介drozer是一款针对Android系统的安全测试框架。drozer可以帮助Android app和设备变得更安全,其提供了很多Android平台下的渗透测试exploit供你使用和分享。对于远程的exploit,它可以生成shellcode帮助你进行远程设备管理。
    1.更快的Android安全评估drozer可以大大缩减Android安全评估的耗时,通过攻击测试暴露Android APP的漏洞。
    2.基于真机的测试drozer运行在Android模拟器和真实设备上,它不需要USB调试或其他开发即可使用。
    3.自动化和扩展drozer有很多扩展模块,你可以找到他们进行测试以发现Android安全问题。

    2.Drozer的安装和使用
    1.安装Drozer下载地址:mwr.to/drozer 
    1.在客户端安装Drozer2.在手机端或模拟器安装agent.apk

    3.在手机端或模拟器运行agent.apk点击开启-->Embedded Server-->Enable
    4.建立端口转发,drozer使用31415端口,即执行命令:adb forward tcp:31415 tcp:31415
    5.drozer console connect
    6.安装包中还包含一个测试应用程序sieve.apk具体可参考www.mwrinfosecurity.com/system/assets/559/original/mwri_drozer-users-guide_2013-09-11.pdf 
    2.Drozer测试my.akp
    1)查看所有的安装的App的包名dz> run app.package.list
    2)查找my.apkdz> run app.package.list -f samplecom.xxx.xx (my)
    3)获取my.apk的一些基本信息dz>run app.package.info -a com.xx.xxx Package: com.xx.xxx Application Label: my Process Name: my Version: 1.0 Data Directory: /data/data/com.xxxx.xxxx APK Path: /data/app/com.xxx.xx-1.apk UID: 10217 GID:[3003, 1028, 1015] Shared Libraries: null Shared User ID: null Uses Permissions: - android.permission.READ_LOGS - android.permission.INTERNET - android.permission.ACCESS_NETWORK_STATE - android.permission.READ_PHONE_STATE - android.permission.ACCESS_WIFI_STATE - android.permission.WRITE_EXTERNAL_STORAGE - android.permission.WAKE_LOCK - android.permission.VIBRATE - android.permission.WRITE_SETTINGS - org.agoo.android.permission.MESSAGE - android.permission.CHANGE_NETWORK_STATE - android.permission.CHANGE_WIFI_STATE - android.permission.GET_TASKS - android.permission.SEND_SMS - android.permission.READ_EXTERNAL_STORAGE - android.permission.RECEIVE_SMS - android.permission.SYSTEM_ALERT_WINDOW - android.permission.ACCESS_COARSE_LOCATION - android.permission.ACCESS_FINE_LOCATION - android.permission.RESTART_PACKAGES - android.permission.MANAGE_ACCOUNTS - android.permission.GET_ACCOUNTS - android.permission.READ_CONTACTS Defines Permissions: - org.agoo.android.permission.MESSAGE dz>
    分析:可以看到myapk的版本信息,数据存储的目录,用户ID,组ID,是否有共享库,还有权限信息等。
    4)APP攻击面分析分析Activity/Broadcast Receiver/Content Provider/Service是否能被其他的的应用程序调用dz>run app.package.attacksurface com.xxx.xxxx Attack Surface: 
     5 activities exported 0 broadcast receivers exported 0 content providers exported 0 services exported is debuggable dz>分析:结果显示了潜在可以利用的组件个数: “exported”表示组件可以被其他App使用。 services is debuggable表示我们可以用adb绑定一个调试器到进程。调试方法见:bobao.360.cn/learning/detail/140.html5)Activity组件暴露dz>run app.activity.info -a com.xxx.xxxx Package: com.xxxx.xxxx com.xxxxx.xxx.xSinaWeiboActivity Permission: null com.tencent.tauth.AuthActivity Permission: null com.xxx.xxxx.xxxx.WXEntryActivity Permission: null com.xxx.xxx.ContainerActivity Permission: null com.xxxxx.xxxx.MainActivity Permission: null dz>分析:其中上图的MainActivity是程序启动时主界面,必须是exported,其他几个activity是理论上说是不能exported的。我们可以通过命令run app.activity.start --component 包名 包名.类名启动Activitydz#> run app.activity.start --component com.xxx.sample 包名.类名dz#> run app.activity.start --component com.xxxx.sample com.xxx.xxxxx.WXEntryActivity解决方案:保护应用程序组件
    ① 设置android:exported属性为false在AndroidManifest.xml文件中,我们应该设置设置android:exported属性为false来保护应用。
    ② 通过权限控制限制访问android:exported属性不是唯一的限制措施。我们还可以通过基于权限的方法来定制一个Activity的权限。这个可以限制应用之间的访问权限。无需暴露的组件请设置exported=”false”;若需要外部调用,建议添加自定义signature或signatureOrSystem级别的私有权限保护;需要暴露的组件请严格检查输入参数,避免应用出现拒绝服务。
    6)ContentProvider组件暴露dz>run app.provider.info -a com.xxxx.sample Package: com.xxxxx.sample No matching providers. dz>分析:我们可能没有用到Content Provider或者说是安全的。如果包含则会显示exported的content provider的具体信息,包括名字,权限,访问路径等,就可以做一此类如Sql注入的操作。
    ① 检查是否有sql注入dz>run scanner.provider.injection -a com.xxxxx.sample Scanning com.xxxx.sample... D:\Java\jdk1.8.0_11\bin\javac.exe -cp C:\drozer\lib\drozer\lib\android.jar ZipUtil.java C:\drozer\lib\drozer\lib\dx.bat --dex --output 4a78a7a38b67b985beccf6efac92375b.apk ZipUtil.class trouble processing: bad class file magic(cafebabe)or version(0034.0000)...while parsing ZipUtil.class ...while processing ZipUtil.class 1 warning no classfiles specified drozer could not find or compile a required extension library. dz>
    ② 检查是否存在遍历文件的漏洞dz>run scanner.provider.traversal -a com.xxxxx.sample Scanning com.xxxx.sample... D:\Java\jdk1.8.0_11\bin\javac.exe -cp C:\drozer\lib\drozer\lib\android.jar ZipUtil.java C:\drozer\lib\drozer\lib\dx.bat --dex --output 4a78a7a38b67b985beccf6efac92375b.apk ZipUtil.class trouble processing: bad class file magic(cafebabe)or version(0034.0000)...while parsing ZipUtil.class ...while processing ZipUtil.class 1 warning no classfiles specified drozer could not find or compile a required extension library. dz>7)Broadcast receivers组件暴露通过反编译可以看到有三个广播接收器被注册,且未设置exported=“false”风险描述导出的组件可以被第三方app任意调用,导致敏感信息泄露或者恶意攻击者精心构造攻击载荷达到攻击的目的。修复建议如果组件不需要与其他app共享数据或交互,请将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。如果组件需要与其他app共享数据或交互, 请对组件进行权限控制和参数校验。
    8)Service组件暴露
    ① 获取是exported状态的services的dz>run app.service.info -a com.xxxxx.sample Package: com.xxxxx.sample No exported services. dz>分析:没有exported的services
    ② 关于Services模块dz>cdappdz#app>cdservicedz#app.service>ls app.service.info Get information about exported services app.service.send Send a Message to a service, and display the reply app.service.start Start Service app.service.stop Stop Service dz#app.service>
    3.Logcat安全android.permission.READ_LOGS:app读取日志权限,android 4.1之前版本通过申请READ_LOGS权限就可以读取其他应用的log了。但是谷歌发现这样存在安全风险,于是android 4.1以及之后版本,即使申请了READ_LOGS权限也无法读取其他应用的日志信息了。4.1版本中 Logcat的签名变为“signature|system|development”了,这意味着只有系统签名的app或者root权限的app才能使用该权限。普通用户可以通过ADB查看所有日志。通过 adb shell logcat可以查看所有logcat信息有些人认为任何log都不应该在发行版本打印。但是为**p的错误采集,异常反馈,必要的日志还是要被输出的,只要遵循安全编码规范就可以将风险控制在最小范围。建议:Log.e()/w()/i():建议打印操作日志Log.d()/v():建议打印开发日志
    1、敏感信息不应用Log.e()/w()/i(), System.out/err 打印。2、如果需要打印一些敏感信息建议使用 Log.d()/v()。(前提:release版本将被自动去除)3、Log.d()/v()的返回值不应被使用。(仅做开发调试观测)参考:http://www.droidsec.cn/android-logcat-security/4.反编译查看myapk.apk是否安全1.使用APKTOOL反编译AndroidManifest.xml文件2.检查AndroidManifest.xml文件是否有如下内容:android:debuggable="true"如果你在其中发现了这样的内容,该应用是可以被调试的。很显示我们的xxxxx_sample是可被调试的。调试方法参见:http://bobao.360.cn/learning/detail/140.html3.反编译查看配置文件AndroidManifest.xml中activity组件(关注配置了intent-filter的及未设置export=“false”的)通过分析AndroidManifest.xml,我们获得了以下信息:包名:com.xxx.sample入口”com.xxxx.sample.MainActivity其它组件的export同Activity
    三、参考资料1.《Android 安全测试初探》合集:testerhome.com/topics/16982.Android Hacking and Security英文原文: resources.infosecinstitute.com/android-hacking-security-part-1-exploiting-securing-application-components/中文:bobao.360.cn/learning/detail/122.html3.Android安全中文网站:/www.droidsec.cn


  • 转:手机APP测试点2

    2015-08-05 16:37:23

    1、登录 

    1.登录用户名和密码错误时,界面有提示信息  
    2.用户主动退出登录后,下次启动APP时,应该进入登录界面 
    3.对于支持自动登录的APP,数据交换时,是否能自动登录成功且数据库操作无误  
    4.密码更改后,登录时是否做到了有效数据的校验  
    5.对于未登录时一些页面的操作,是否做了控制  
    6.切换账号登录,检验登录的信息是否做到及时更新 
    7.对于多个端都进行操作时,确保数据库操作无误,且每个端可以及时看到数
    8.据的更新 
    9.对于一些软件,支持一个账号只允许登录一台机器,这时,需要检查账号登录多个手机时,是否将原用户剔除,且能够给出提示信息 

    10.APP切换到后台时,再次切换到前台的测试,如登录时,有电话打进来  
    2、离线
    离线是应用程序在本地的客户端会缓存一部分数据以功程序下次调用 
    1.对于一些程序,需要在登录进来后,这时没有网络的情况下可以浏览本地数据 
    2.对于无网络时,刷新获取新数据时,不能获取数据且能给出友好提示  
    3.切换到后台,再次切换到前台时,可以正常查看 
    4.离线后又连上网,这时对数据有更新时,需要从服务器端获取新数据来更新客户端数据,且要更新本地缓存信息 
    5.对于一些界面的数据不提供离线查看,需要给出相应提示且界面更新后无任何数据 
    3、Sqlite数据库
    android和IOS客户端都采用了sqlite数据库,当APP需要在客户端保存数据时,它们会创建相应的数据库表,最常见的就是对账号的保存,这时的测试点主要有:  
    1.跟一般数据库一样,需要见擦数据的增,删,改,查  
    2.客户端即用即建,当表不存在时,是否会自动创建  
    3.数据表被删除后,新建的表中的数据能否自动从服务器端中获取回来兵保存
    4当对数据进行了修改,删除,客户端和服务器端能否有相应的更新
    5.获取数据,客户端是从直接从客户端获取还是和服务器端的数据进行比较  
    6.对于客户端从服务器端更新的数据,客户端是否有保存于本地。
    个人提的bug注意点:  
    1.因为ios系统有不断的更新,所以会出现这样那样兼容性的问题,其实我们软件中有一点,我记得很清楚,就是在送人彩票环节,赠送成功后会弹出一个温馨提示(问用户是,否要提醒用户领取),用户一旦点了(好的),会跳到一个短信提醒框,此时就会出错,在苹果5上都没事,一旦在4s上运行就有可能付出闪退。
    2.如果是同一个用户,那么她在android,ios上登录后,记录应该都是一样的。  3.一款手机软件在android系统上测试要特别注意,android手机款式多,内存,分辨率不一,所以测试难过也比较大。我们的软件有一个问题一直走不去,就是在小手机上,如果应用开多,占内存大了,就会出现闪退。
    4.有新的版本要上线前,一定要测旧的版本,不能因为新版本上线了,老版本就不能用了,用老版本的用户还是大有人在。有一次,我用新版本注册的用户去玩老版本,结果就有有错过,当然这样玩的人很少。 
    5.如果一页面里有很多条记录里,要注意上下多滑动,我在测试过程中,好几次在上下滑动中又由于数据出现错误,导致闪退,尤其是android.  
    6.到了某个页面,突然断网了,然后你在不知情的情况下,点击某个按钮想继续往下走,此时,不能出现闪退的情况,而要给出断网提示。 
    7.文本框校验时采用等价类划分法,边界值法,错误推测法与场景法,至少这些方法的概念,自己网上去搜。
    8.很多手机app在打开后,一般用户都不需要先注册登录,到了合适的地方,弹出合适的提示,很好友的让用户去登录。当然有些页面,而且有时没有判断,未登录去点一些按钮,有可能会闪退。未登录与登录显示的页面是完全不一样的,要仔细测。
    9.用户登录状态太久,cooker会过期,会出现“虽然是登录状态,系统会提示用户没有登录。” 
    10.外部软件需要更新导致自家软件闪退。我公司是一款博 彩 类软件,用户需要通过支付宝或财付通支付,有一次在用支付快捷支付时,提示我支付快捷支付需要更新,我就点了更新,更新完成后,我们的软件就异常退出了。 
    11.输入数据,点某颗按钮,会出现错误提示,有时不管这个提示,继续猛点这个按钮,会出现出人意外的结果哦。
  • 转:手机APP测试点

    2015-08-05 16:25:44

    移动互联网App测试点包括 

    1.安全测试  

    1)软件权限 

    -扣费风险:包括发送短信、拨打电话、连接网络等
    -隐私泄露风险:包括访问手机信息、访问联系人信息等 
    -新增风险项 

    2)开发者官方权限列表信息比对分析

    2.安装、运行、卸载测试  
    验证App是否能正确安装、运行、卸载,以及操作过程和操作前后对系统资源的使用情况,主要包括: 
    1)检测软件是否能正确安装、运行、卸载;
    2)安装、卸载、更新错误报告; 
    3)其他辅助信息:  
    -位置和文件夹是否合理;  
    -组件是否正确注册或删除;  
    -评估操作前后,CPU、Memory(内存占用)、Storage(磁盘占用)等系统资源的使用情况。 

    3.UI测试  

    测试用户界面(如菜单、对话框、窗口和其它可视控件)布局、风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等。 
    UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。
    确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。  

    4.功能测试  

    根据软件说明或用户需求验证App的各个功能实现,采用如下方法实现并评估功能测试过程: 

    1)采用时间、地点、对象、行为和背景五元素或业务分析等方法分析、提炼App的用户使用场景,对比说明或需求,整理出内在、外在及非功能直接相关的需求,构建测试点,并明确测试标准(若用户需求中无明确标准遵循,则需要参考行业或相关国际标准或规则)。 

    2)根据被测功能点的特性列举出相应类型的测试用例对其进行覆盖,如:涉及输入的地方需要考虑等价、边界、负面、异常或非法、场景回滚、关联测试等测试类型对其进行覆盖。 
    3)在测试实现的各个阶段跟踪测试实现与需求输入的覆盖情况,及时修正业务或需求理解错误。  

    5.性能测试  

    评估App的时间和空间特性 

    1)极限测试:在各种边界压力情况下(如电池、存储、网速等),验证App是否能正确响应。 
    2)响应能力测试:测试App中的各类操作是否满足用户响应时间要求 
    3)压力测试:反复/长期操作下,系统资源是否占用异常; 
    4)性能评估:评估典型用户应用场景下,系统资源的使用情况。 
    5)Benchmark测试(基线测试):与竞争产品的Benchmarking, 产品演变对比测试等。 
     
    6.中断测试  针对智能终端应用的服务等级划分方式及实时特性所提出的测试方法,如:App在前/后台运行状态时与来电、文件下载、音乐收听等关键运用的交互情况测试等。 

     7.兼容测试  主要测试内部和外部兼容性,包括: 与本地及主流App是否兼容; 检验在各种网络连接下(WiFi、GSM、GPRS、EDGE、WCDMA、CDMA1x、CDMA2000、HSPDA等),App的数据和运用是否正确; 与各种设备是否兼容(若有跨系统支持则需要检验是否在各系统下,各种行为是否一致)。  

    8.安全测试  

    安全测试显得尤为重要,粗心、不谨慎的数据存储或传输方式使得非法、恶意目的有可乘之机。 智能终端安全涉及各信息交互、存储接点,借鉴于网络传输和相关安全测试经验, 

    App安全测试大概划分为以下几类: 

    1)从数据的本地存储到数据的传输、处理以及远程访问等各个环节,基于相应的安全标准/行业标准评估App的安全特性; 

    2)借鉴在Web App和网络安全测试的一些成功经验在智能终**p测试中进行裁减或适配; 
    3)检测App的用户授权级别,数据泄漏,非法授权访问等; 
    4)对App的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测,以期发现潜在的安全问题; 
    5)基于各种通信协议或相应的行业安全标准检视App是否满足相应的要求。  

    9.回归测试   

    Bug修复后的回归测试,在交付前、要进行全量用例的回归测试。  

    10.升级、更新测试  

    新版版发布后,配合不同网络环境的自动更新提示,及下载、安装、更新、启动、运行的验证测试。  

    11. 用户体验测试 

    以主观的普通消费者的角度去感知产品或服务的舒适、有用、易用、友好亲切程度。 通过不同个体、独立空间和非经验的统计复用方式去有效评价产品的体验特性,提出修改意见提升产品的潜在客户满意度。 
  • 转:手机移动APP测试实用指南

    2015-08-05 16:18:25

    译者注:

    本文从测试人员的角度出发,提出了100多个在测试移动App过程中需要考虑的问题。不管你是测试人员、开发、产品经理或是交互设计师,在进行移动App开发时,这些问题都很有参考价值。我和Queen合力译出此文,分享给大家,希望有所帮助和启发。
    英文原文: http://mobile.smashingmagazine.com/2012/10/22/a-guide-to-mobile-app-testing/

     

    测试人员常被看作bug寻找者,但你曾想过他们实际是如何开展测试的吗?你是否好奇他们究竟都做些什么,以及他们如何在一个典型的技术项目中体现价值?
    作者将带你经历测试人员的思维过程,探讨他们测试移动app时的各种考虑。本文的目的在于揭示测试人员的这一思维过程,并展示他们通常所考虑内容的广度和深度。

    测试人员需要询问问题


    测试人员的核心能力在于提出有挑战性的相关问题。如果你能将调查、询问技巧和技术、产品的知识结合起来,渐渐地,你也会成为一个好的测试人员。
    比如,测试人员可能会问:
    · 这个App应该在什么平台上使用?
    · 这个App到底是干什么的?
    · 如果我这样做,会发生什么情况?
    诸如此类。


    测试人员能从各种场景中发现问题

     

    它们可能来自对话、设计、文档、用户反馈或者是产品本身。这些可能性太多了……因此,让我们一探究竟吧!



    从哪里开始测试


    理想情况下,测试人员应该掌握所测产品的所有最新细节资料。但事实上这很少见,因此,像其他人一样,测试人员只能将就使用手上有限的资料。但这不是不能测试的借口!测试人员其实是可以从内部和外部多种不同的来源处收集信息的。
    这个阶段,测试人员可以问这些问题:


    ·  有哪些信息:规格?项目会议?用户文档?知识渊博的团队成员?有支持论坛或者是公司在线论坛提供帮助?有现存Bug的记录吗?
    · 该应用是在什么系统、平台和设备上进行运作和测试?
    · 该应用是处理什么类型的数据(比如个人信息、信用卡等等)?
    · 该应用有整合外部应用(比如API和数据来源)吗?
    · 该应用需要用到特定的移动端网页吗?
    · 现有消费者如何评价这个产品?
    · 有多少时间可用于测试?
    · 测试的优先级和风险是什么?
    · 哪些用户使用起来不愉快,为什么?
    · 如何发布和更新?


    基于以上收集的信息,测试人员可以制定测试计划了。通常预算决定测试方法,一天测完,一个星期或一个月测完的方法肯定不同。当你逐渐熟悉团队、工作流程以及这类问题的解决方式时,你就更容易预测结果了。


    案例:Facebook App的社会评论


    当作为一名测试人员收集信息时,我喜欢选用Facebook App作为案例,因为用户的抱怨到处都是。以下仅仅展示了部分遇到难题的用户在iTunes App Store中发表的评论,网络上还有很多。


    iPhone上的Facebook App有很多负面的评论


    如果我接受挑战去测试Facebook这个App,我肯定会考虑这些反馈,否则就是傻子。



    测试人员的创造力


    你可能知道这个App原本想做的事,但是它究竟可以做什么事呢?用户实际上是如何使用它的?测试人员擅长作为旁观者来思考,尝试不同的事物,以及不断地询问“如果。。。会怎么样”和“为什么”的问题。
    比如,移动端的测试人员常常以不同的用户角色进行测试——当然有点夸张,但是,这种把自己当成不同用户进行思考、分析和设想的能力对测试是备受启发的。
    测试人员可能会设想自己是以下用户:
    · 毫无经验;
    · 很有经验;
    · 爱好者;
    · 黑客;
    · 竞争对手。
    当然还有更多可选的角色,这主要取决于你们所开发的产品是什么。其实除了角色特点外,其操作行为和工作流程也很重要。人们使用产品方式常常很奇怪,比如:
    · 在不应该返回的时候返回了;
    · 不耐心而且多次敲按键;
    · 输入错误的数据;
    · 不理解该怎么做;
    · 可能没有按要求进行设置;
    · 可能会自以为是地认为自己知道该怎做什么(比如通常不阅读说明)。

    测试人员遇到这些问题时,也常常发现意料之外的Bug。有时候,这些Bug微不足道,但是更深入的调查就会发现更严重的问题
    很多问题是可以被预先确定和测试的。测试移动**p时,以下的问题并不都有关,但是也可以尝试问问:
    · 是否按照所说的来做呢?
    · 是按设计完成任务的吗?
    · 不是按设计完成任务的吗?
    · 如果处于一直被使用或者负荷情况下,状况会怎么样?会反应迟钝吗?会崩溃吗?会更新吗?有反馈吗?
    · 崩溃报告会反馈到App吗?
    · 用户可能有哪些创造性的、逻辑性的或是消极的导航方式?用户相信你的品牌吗?
    · 用户的数据安全如何?
    · 有可能被中断或是被破解吗?
    · 运行到极限时会发生什么状况?
    · 会要求打开相关服务吗(如GPS、Wi-Fi)?如果用户打开会怎样?没打开又会怎样?
    · 将用户重新引向哪儿?去网页?还是从网页到App?这会导致问题出现吗?
    · 沟通过程和市场反馈是否符合该App的功能、设计和内容?
    · 登录流程是怎样的?能在App上直接登录还是要去网页端?
    · 登录是否整合了其他服务,比如用Facebook和Twitter帐号登录?



    案例:Run Keeper’s gy Update


    RunKeeper,是一款能跟踪你健身活动的App,最新发布的版本里有个“目标设置”的功能,对此我很感兴趣去体验一下,一部分从测试人员的角度来看,更多的是作为一个真心喜欢产品的用户来体验。但我发现了一些问题:
    1.   默认单位是英镑,我却想要把公斤作为重量单位;
    2.   英镑和公斤间的切换根本不好用;
    3.   当设定目标后,会导致展示错误的数据和图表,这让我很迷惑;
    4.   由于第3条,我想删除目标,但却根本找不到删除的地方;
    5.   为了解决这一问题,我不得不改变的个人体重的值,直到 “目标设置“范围之内,这样目标达到了,就能重新设定目标了;
    6.   我会再次尝试添加目标;
    正因为以上疑惑,我花了更长的时间把玩它,看能不能找到其他的问题;
    以下是一些发现问题的屏幕截图:

    该App的最新版本包含了一个新的“目标”部分。设置日期的时候,我发现开始和结束的日期都可以从公元1年开始,另外,为什么有两个1年可选(译者注:年份那列从上往下应该显示为“1、2、3”)?
    另一个Bug,是“当前体重”部分的一个拼写错误,当清空数据时会出现拼写错误的“Enter“(应用中用的是Etner),这只是一个小Bug,但是看上去非常不专业。
    发现问题没有捷径,你只能反复的慢慢的试用。每个App及其团队都会面临很多不同的挑战。但是,测试人员的典型的特点就是:超越极限,做一些非常规的、可以改变周围事物的事情,保持长时间的测试(测试几天、几个星期甚至几月,而不是几分钟就测完),即使明明知道这些事情是不可能发生的。这些也正是可以找到和引出的场景所在。



    哪儿有所有的数据?


    测试人员喜欢从数据上找问题,这让开发人员有时候很郁闷。事实上,用户或者是软件开发人员在信息流中确实太容易迷惑了,因为可能会出现很多错误,所以基于数据和云的服务更为重要
    也许你可以尝试在以下场景中检查出问题:


    ·  移动设备数据已满;


    · 测试人员移除了所有的数据;


    · 测试人员删除**p,那数据怎么办?


    ·  测试人员删除并重装**p,数据怎么办?


    ·  过多或者过少的内容导致设计和布局的改变;


    · 在不同的时间段和时区使用;


    ·  数据不同步;


    · 同步被中断;


    · 数据更新影响其他的服务(比如网页和云端服务);


    · 快速处理数据或是处理大量的数据;


    · 使用无效的数据;

    案例:Soup.me的错误

    我试用过的Soup.me, 是一个可以通过地图和颜色将个人Instagram 中的照片进行分类的网页服务,但是我却没用多久。当注册时,它提示我Instagram上的照片不够多,然而我的账号中明明有500多张照片。我并不清楚问题出在哪儿,也许是数据问题,也许是表现

    层的问题,也有可能是该App出错提示的问题。

     另一个案例:Quicklytics

     


    Quickytics是一个iPad上的网页分析应用。在使用过程中,尽管我已经从Google Analytics中删除了网站配置,但它仍然存在。这里有一些问题:
    · 我已经删除了网站配置,为什么还是有这些信息?


    · 左边模块没有解释为什么“该操作无法完成”,那么是不是可以改进以避免迷惑用户呢?


    测试人员也很喜欢测试极限数据下的情况。他们常常是作为典型用户来了解这个App,所以极限下的测试并不会花很长的时间。数据是混乱的,所以测试人员要考虑到软件的用户类型,以及在不同的数据场景下如何进行测试。


    比如,他们可能尝试以下场景:


    · 测试用户可输入的极限值;


    · 用重复的数据进行测试;


    · 在全新无数据的手机里测试;


    · 在老手机上测试;


    · 预先安装不同类型的数据;


    · 考虑聚集大家的资源来进行测试;


    · 让一些测试自动化;


    · 用一些超出预期的数据去测试,看它是怎么处理的;


    · 分析信息和数据是怎么影响用户体验的;


    · 不管用户看到的是否正确,都要一直问问题。

    查看(1016) 评论(1) 收藏 分享 管理

  • 转:APP测试流程和测试点

    2015-08-05 13:57:08

     APP测试基本流程

    1.1 流程图

    1.2测试周期测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。
    正式测试前先向主管确认项目排期。

    1.3测试资源测试任务开始前,检查各项测试资源。
    --产品功能需求文档;
    --产品原型图;
    --产品效果图;
    --行为统计分析定义文档;
    --测试设备(ios3.1.3-ios5.0.1;Android1.6-Android4.0;Winphone7.1及以上;Symbian v3/v5/Nokia Belle等);
    --其他。 

    1.4日报及产品上线报告
    1)测试人员每天需对所测项目发送测试日报。
    2)测试日报所包含的内容为:

    --对当前测试版本质量进行分级;
    --对较严重的问题进行例举,提示开发人员优先修改;
    --对版本的整体情况进行评估。

    3)产品上线前,测试人员发送产品上线报告。
    4)上线报告所包含的内容为:

    ---对当前版本质量进行分级;

    ---附上测试报告(功能测试报告、兼容性测试报告、性能测试报告以及app可用性能标准结果);

    --总结上线版本的基本情况。

    若有遗留问题必须列出并记录解决方案。 

    2 App测试点

    2.1安全测试  

    2.1.1软件权限 
    1)扣费风险:包括发送短信、拨打电话、连接网络等 
    2)隐私泄露风险:包括访问手机信息、访问联系人信息等
    3)对App的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测
    4)限制/允许使用手机功能接人互联网
    5)限制/允许使用手机发送接受信息功能
    6)限制/允许应用程序来注册自动启动应用程序
    7)限制或使用本地连接
    8)限制/允许使用手机拍照或录音
    9)限制/允许使用手机读取用户数据
    10) 限制/允许使用手机写人用户数据
    11) 检测App的用户授权级别、数据泄漏、非法授权访问等 

    2.1.2安装与卸载安全性

    1)应用程序应能正确安装到设备驱动程序上
    2)能够在安装设备驱动程序上找到应用程序的相应图标
    3)是否包含数字签名信息
    4)JAD文件和JAR包中包含的所有托管属性及其值必需是正确的
    5)JAD文件显示的资料内容与应用程序显示的资料内容应一致
    6)安装路径应能指定
    7)没有用户的允许, 应用程序不能预先设定自动启动
    8)卸载是否安全, 其安装进去的文件是否全部卸载
    9)卸载用户使用过程中产生的文件是否有提示
    10)其修改的配置信息是否复原
    11)卸载是否影响其他软件的功能
    12)卸载应该移除所有的文件

     2.1.3数据安全性
    1)当将密码或其他的敏感数据输人到应用程序时, 其不会被储存在设备中, 同时密码也不会被解码
    2)输人的密码将不以明文形式进行显示
    3)密码, 信用卡明细, 或其他的敏感数据将不被储存在它们预输人的位置上
    4)不同的应用程序的个人身份证或密码长度必需至少在4一8 个数字长度之间
    5)当应用程序处理信用卡明细, 或其他的敏感数据时, 不以明文形式将数据写到其它单独的文件或者临时文件中。
    6)防止应用程序异常终止而又没有侧除它的临时文件, 文件可能遭受人侵者的袭击, 然后读取这些数据信息。
    7)当将敏感数据输人到应用程序时, 其不会被储存在设备中
    8)备份应该加密, 恢复数据应考虑恢复过程的异常�通讯中断等, 数据恢复后再使用前应该经过校验
    9)应用程序应考虑系统或者虚拟机器产生的用户提示信息或安全替告
    10)应用程序不能忽略系统或者虚拟机器产生的用户提示信息或安全警告, 更不能在安全警告显示前,,利用显示误导信息欺骗用户,应用程序不应该模拟进行安全警告误导用户
    11)在数据删除之前,应用程序应当通知用户或者应用程序提供一个“取消”命令的操作
    12)“ 取消” 命令操作能够按照设计要求实现其功能
    13)应用程序应当能够处理当不允许应用软件连接到个人信息管理的情况
    14)当进行读或写用户信息操作时, 应用程序将会向用户发送一个操作错误的提示信息
    15)在没有用户明确许可的前提下不损坏侧除个人信息管理应用程序中的任何内容Μ
    16)应用程序读和写数据正确。
    17)应用程序应当有异常保护。
    18)如果数据库中重要的数据正要被重写, 应及时告知用户
    19)能合理地处理出现的错误
    20)意外情况下应提示用户

     2.1.4通讯安全性

    1)在运行其软件过程中, 如果有来电、SMS、EMS、MMS、蓝牙、红外等通讯或充电时, 是否能暂停程序,优先处理通信, 并在处理完毕后能正常恢复软件, 继续其原来的功能
    2)当创立连接时, 应用程序能够处理因为网络连接中断, 进而告诉用户连接中断的情况
    3)应能处理通讯延时或中断
    4)应用程序将保持工作到通讯超时, 进而发送给用户一个错误信息指示有连接错误5)应能处理网络异常和及时将异常情况通报用户
    6)应用程序关闭或网络连接不再使用时应及时关闭) 断开
    7) HTTP、HTTPS覆盖测试

    --App和后台服务一般都是通过HTTP来交互的,验证HTTP环境下是否正常;

    --公共免费网络环境中(如:麦当劳、星巴克等)都要输入用户名和密码,

    通过SSL认证来访问网络,
    需要对使用HTTP Client的library异常作捕获处理。 

    2.1.5人机接口安全性
    1)返回菜单总保持可用
    2)命令有优先权顺序
    3)声音的设置不影响应用程序的功能
    4)应用程序必需利用目标设备适用的全屏尺寸来显示上述内容
    5)应用程序必需能够处理不可预知的用户操作, 例如错误的操作和同时按下多个键 

    2.2安装、卸载测试验证App是否能正确安装、运行、卸载以及操作过程和操作前后对系统资源的使用情况
Open Toolbar