gamma测试报告

Gamma阶段测试报告

测试计划及结果

我们针对测试做了比较多的改进。

测试代码分为针对纯java部分的单元测试和需要android运行环境的自动化仪器化测试

单元测试

这一部分基本继承Beta阶段的框架,使用junit框架,达到了80%以上的覆盖率。

1632375-20190617191820944-1615016811.png

自动化测试

除了beta阶段的单元测试以外,我们新增了自动化测试。

使用google官方提供的espresso框架进行模拟点击,输入,监听等事件。

另外兼容性测试中也有一部分的自动化测试,是利用monkey脚本测试应用在随机场景下的反应。

场景测试

为了保证我们应用的实用性,我们模拟了室外的场景测试。具体手段是在寝室里利用电脑产生的噪声伪装干扰,模拟室外的噪声,然后测试常用命令的输入准确性。

不同类别的背景噪声下识别率差别较大,没有形成有效数据。但是可以基本得出结论50分贝的背景噪声基本没有影响,60分贝会对识别率造成巨大波动,70分贝以上几乎无法有效识别。所以建议使用时背景噪声控制在50分贝一下。

兼容性测试

我们使用了腾讯的wetest平台进行了多种机型的兼容性测试。

测试结果如下:

1632375-20190613012942481-1571731119.png

我们在所有的50种机型的随机测试中一共出现了两个问题

安装失败

1632375-20190613012956525-1856708732.png

可以发现出现问题的机型全部是低于安卓5的古老版本,这一点在我们的预料之中,我们的发布说明中有指明应用主要适配安卓7.0以上的机型。在实际试用中我们发现安卓5,6也能成功安装,但是只能使用前端的编辑器功能,无法使用后端shell(因为后端使用的包编译指定最低运行API版本是24)。可以把我们的应用当作一个语音记事本使用。

UI异常(黑屏)

1632375-20190613013009198-1983128407.png

出现黑屏的机型分布在各个版本和机型。经过我们的排查,测试平台将我们的shell界面识别成了黑屏,造成了这次乌龙。

应用在其他手机上运行良好,所以我们可以初步判定我们通过了兼容性测试。

压力测试

nginx 压力测试
工具 ab:
  This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
测试对象:

http://butubs.cn: 腾讯云,1 核 2 GB Intel(R) Xeon(R) CPU E5-26xx v4 网络带宽 : 1 Mbps

ab -c 500 -n 2000 http://butubs.cn/
  Server Software:        nginx/1.14.0 # 代理软件
  Server Hostname:        butubs.cn # 服务器主机名
  Server Port:            80 # 默认端口 html 80端口
  
  Document Path:          /  # url 请求路径
  Document Length:        388 bytes
  
  Concurrency Level:      500  # 一次请求的并发量,由-c指定
  Time taken for tests:   19.253 seconds # 测试总共耗时
  Complete requests:      2000 # 总共请求的数量,由-n指定
  Failed requests:        0  # 是被的请求的数量
  Total transferred:      1050000 bytes # 传输字节数
  HTML transferred:       776000 bytes # HTML字节数
  Requests per second:    103.88 [#/sec] (mean) # 平均每秒完成103.88个请求
  Time per request:       4813.203 [ms] (mean) # 平均每个请求完成时间为4813.203毫秒
  Time per request:       9.626 [ms] (mean, across all concurrent requests)# 如果按照并发数来算的话,平均每个请求的完成时间就只有9.626毫秒
  Transfer rate:          53.26 [Kbytes/sec] received # 数据率,达到了1Mbps一般的带宽
  
  Connection Times (ms)
                min  mean[+/-sd] median   max
  Connect:       45  203 832.8     47    7268
  Processing:    46 2805 4899.4    112   19099
  Waiting:       46 2789 4907.9    105   19099
  Total:         91 3007 4979.3    276   19148
  
  Percentage of the requests served within a certain time (ms) # 请求处理时间的分布
    50%    276 #  50% 的请求在 276 ms内处理完毕
    66%    895 #  60% 的请求在 895 ms内处理完毕
    75%   2554
    80%   7846
    90%  12285 #  90% 的请求在 12285 ms内处理完毕
    95%  14020
    98%  14821
    99%  15818
   100%  19148 (longest request)

云端的监控:

ab500_2000.png

可以看出每秒处理一百多个请求还是很轻松的

ab -g result.txt -t 50000 -c 1000 -n 5000 http://butubs.cn/
  Concurrency Level:      1000
  Time taken for tests:   54.514 seconds
  Complete requests:      4973 # 存在丢包情况,测试使用的北航校园网有点堵,但是不影响压力测试
  Failed requests:        0
  Total transferred:      2610825 bytes
  HTML transferred:       1929524 bytes
  Requests per second:    91.22 [#/sec] (mean)
  Time per request:       10962.023 [ms] (mean)
  Time per request:       10.962 [ms] (mean, across all concurrent requests)
  Transfer rate:          46.77 [Kbytes/sec] received
  
  Connection Times (ms)
                min  mean[+/-sd] median   max
  Connect:       45  149 931.9     47   15407
  Processing:    46 7201 14740.4    106   53519
  Waiting:       45 7183 14748.6    105   53519
  Total:         91 7350 14773.2    158   53573
  
  Percentage of the requests served within a certain time (ms)
    50%    158
    66%    891
    75%   1990
    80%   7850
    90%  31691
    95%  46402
    98%  50941
    99%  52577
   100%  53573 (longest request)
  

画一个简图:x为请求数,y为时延

result_1000_5000.png

服务器端的监控:

圆圈所在处,带宽占用达到0.692Mbps, CPU占用8.5%

ab_1000_5000_a.png

ab_1000_5000_b.png

ab -c 1000 -n 10000 http://butubs.cn/

再继续增加请求总数的话,丢包就比较严重了,带宽曾被占满,单纯就负载而言,nginx完全处理得过来,是带宽限制了处理请求的上限。

  Concurrency Level:      1000
  Time taken for tests:   94.015 seconds
  Complete requests:      9337
  Failed requests:        0
  Total transferred:      4901925 bytes
  HTML transferred:       3622756 bytes
  Requests per second:    99.31 [#/sec] (mean)
  Time per request:       10069.075 [ms] (mean)
  Time per request:       10.069 [ms] (mean, across all concurrent requests)
  Transfer rate:          50.92 [Kbytes/sec] received

  Connection Times (ms)
                min  mean[+/-sd] median   max
  Connect:       45  103 595.4     47   15533
  Processing:    46 2430 9815.4    104   89275
  Waiting:       45 2407 9820.5    102   89275
  Total:         91 2532 9840.1    151   89325

  Percentage of the requests served within a certain time (ms)
    50%    151
    66%    387
    75%    400
    80%    892
    90%   3872
    95%  13729
    98%  31785
    99%  61269
   100%  89325 (longest request)

ab1000_10000a.png

ab1000_10000b.png

Android 逆向分析

最简单的逆向方式: Android Studio 逆向

as0.png

  • 53% 资源,大小9.4MB, 有不少多余的资源占用
  • 30.7%lib,大小5.4MB, 包含了实际上很少使用到的x86体系的lib,市面上基本没有x86架构的android手机了,基本上都是aarch64
  • 12.4%class, 大小2.2MB, 这是类文件
  • 其他占用很小
代码安全?

如果代码没有加混淆,反汇编结果是这个样子的:
各种类名,继承关系,函数调用都暴露在外。

as1.png

可以发现Activity的onCreate方法完全可以被找到,代码逻辑稍微梳理一下就能够弄清,这样的产品很很容易被截取核心技术。

加入代码混淆:

加了代码混淆的部分,包名\文件名\代码全都变得完全难以辨识, 能够有效保护代码和技术。

as2.png

ab3.png

不过混淆通常只能防住静态分析

如果有熟悉动态调试的人员,同样可以在classes.dex加载到内存中时,找到合适的入口,篡改文件,达到想要的效果。不过我们毕竟是一个开源的项目,也没有什么需要保密的技术,所以有了代码混淆就足够了。

idapro.png

回答问题

1.在测试过程中发现了多少Bug

没有新bug

2.你是怎么进行场景测试(scenario testing)的?包括你预期不同的用户会怎样使用你的软件?他们有什么需求和目标?你的软件提供的功能怎么组合起来满足他们的需要?(仅描述新功能即可

场景测试可以参见测试计划及结果的场景测试部分。我们新增了软件对于噪音的抗干扰能力的分析。

角色使用需求新增功能设计
张三 手部残疾,初学者低门槛我们新增了对于部分命令的模糊匹配,比如python会被识别成派森等,我们会将这种错误识别重定位成python。分析了适合语音识别功能使用的最佳场景。
李四 程序猿功能专业且方便我们新增了文件管理功能,方便用户在GUI场景下管理自己的文件脚本,对文件进行复制剪切粘贴等操作,替代命令行操作。
王五 普通人使用简单,界面友好我们新增了夜间模式,方便普通人在多种场景下的使用。

3.你是否有回归测试确保新功能的加入没有影响已有功能?

  • 针对模糊识别
    • 为了保证模糊识别不影响正常的语音识别,我们首先在实现上进行了保证。首先模糊识别只有在shell模式下被识别成非英文输入时才会发挥作用。因为shell命令基本都是英文的,识别成的非英文大概率是错误识别,这个时候才会尝试进行模糊识别。而在编辑器中可能出现中英文混杂的情况下不会进行模糊识别,防止错误。
    • 在shell模式和编辑器模式下分别使用语音输入我们已经进行模糊识别的关键词,然后查看识别的正确率。
  • 针对文件管理
    • 新建文件和文件夹,然后通过各种复制粘贴剪切得到多个脚本。先在GUI下测试,然后在shell模式下运行。能正常运行视为通过了回归测试。
  • 针对夜间模式
    • 夜间模式和软件的基本功能基本独立,没有依赖性。所以经过兼容性测试,可以视为通过了回归测试。

4.给出你的测试矩阵

详见测试计划及结果的兼容性测试部分。使用腾讯的wetest平台进行多种机型的测试。具体矩阵如下:

手机品牌型号系统版本
MeituM66
华为荣耀畅玩4C 增强版/电信4G4.4
华为VCE-AL009
华为P8 mini 电信版4.4
MeituM6S6
VivoV1813BA8.1
华为荣耀平板26
OPPON1 Mini4.3
华为P9 Plus6
酷派大神F2 HD4.4
三星GALAXY Grand 2 联通版4.3
华为荣耀 Note8 全网通6
三星GALAXY Note 24.3
三星Galaxy Note 56
ONEPLUS14.4
三星GALAXY Mega4.3
华为荣耀V8 高配版/全网通8
360N5S7.1
三星GALAXY Note 87.1
魅族M3X6
华为P9 标准版7
小米4c5.1
努比亚Z11 标配版6
华为Mate S 臻享版 双4G6
三星GALAXY J75.1
华为荣耀9 全网通7
MeituM8s7.1
三星GALAXY On75.1
小米MI PLAY8.1
华为nova 2 全网通版7
魅族157.1
三星GALAXY J3 Pro 电信4G5.1
华为荣耀Magic6
金立金立天鉴W9095.1
三星GALAXY S56
华为荣耀V8 /双4G7
华为Mate S 臻享版 电信4G6
ZUKZ27
HMD Global Oy6 全网通7
华为nova 2 Plus 移动版7
华为P8 青春版 移动4G5
努比亚M26
小米4S5.1
PhilipsX5987
华为畅享7S 高配版 全网通9
YOTAY37.1
tencentWeTestE97
三星Galaxy S109
三星Galaxy S9 移动联通电信4G9
华为荣耀6 Plus移动4G4.4

5.你的软件Gamma版本的出口条件

通过beta,Gamma阶段的种种功能测试和兼容性测试,具备我们规划中的全部功能。

转载于:https://www.cnblogs.com/bingduoduo/p/11013818.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值