Gamma阶段测试报告

测试计划及结果

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

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

单元测试

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

自动化测试

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

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

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

场景测试

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

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

兼容性测试

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

测试结果如下:

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

安装失败

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

UI异常(黑屏)

出现黑屏的机型分布在各个版本和机型。经过我们的排查,测试平台将我们的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)

云端的监控:

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

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为时延

服务器端的监控:

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

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)

Android 逆向分析

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

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

代码安全?

如果代码没有加混淆,反汇编结果是这个样子的:

各种类名,继承关系,函数调用都暴露在外。

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

加入代码混淆:

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

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

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

回答问题

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

没有新bug

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

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

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

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

  • 针对模糊识别

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

4.给出你的测试矩阵

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

手机品牌 型号 系统版本
Meitu M6 6
华为 荣耀畅玩4C 增强版/电信4G 4.4
华为 VCE-AL00 9
华为 P8 mini 电信版 4.4
Meitu M6S 6
Vivo V1813BA 8.1
华为 荣耀平板2 6
OPPO N1 Mini 4.3
华为 P9 Plus 6
酷派 大神F2 HD 4.4
三星 GALAXY Grand 2 联通版 4.3
华为 荣耀 Note8 全网通 6
三星 GALAXY Note 2 4.3
三星 Galaxy Note 5 6
ONEPLUS 1 4.4
三星 GALAXY Mega 4.3
华为 荣耀V8 高配版/全网通 8
360 N5S 7.1
三星 GALAXY Note 8 7.1
魅族 M3X 6
华为 P9 标准版 7
小米 4c 5.1
努比亚 Z11 标配版 6
华为 Mate S 臻享版 双4G 6
三星 GALAXY J7 5.1
华为 荣耀9 全网通 7
Meitu M8s 7.1
三星 GALAXY On7 5.1
小米 MI PLAY 8.1
华为 nova 2 全网通版 7
魅族 15 7.1
三星 GALAXY J3 Pro 电信4G 5.1
华为 荣耀Magic 6
金立 金立天鉴W909 5.1
三星 GALAXY S5 6
华为 荣耀V8 /双4G 7
华为 Mate S 臻享版 电信4G 6
ZUK Z2 7
HMD Global Oy 6 全网通 7
华为 nova 2 Plus 移动版 7
华为 P8 青春版 移动4G 5
努比亚 M2 6
小米 4S 5.1
Philips X598 7
华为 畅享7S 高配版 全网通 9
YOTA Y3 7.1
tencent WeTestE9 7
三星 Galaxy S10 9
三星 Galaxy S9 移动联通电信4G 9
华为 荣耀6 Plus移动4G 4.4

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

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

gamma测试报告的更多相关文章

  1. 【Gamma】PhyLab 测试报告

    PhyLab Gamma测试报告 测试中发现的bug Gamma阶段新Bug Bug 可能原因 部分错误码设置与原先抛异常的逻辑冲突 原先代码中使用了一些特殊的办法处理异常 Beta未发现Bug Bu ...

  2. 【Gamma】“北航社团帮”展示博客

    目录 团队介绍 项目愿景 整个项目的预期典型用户 功能展示 原预期用户数量 项目使用情况数据分析 用户量变化 学生认证人数 社长认证人数 入社申请数 活动发布 新闻发布 网页端使用情况 小程序打开次数 ...

  3. BuaaRedSun团队博客目录——北航社团项目

    目录 一.Scrum Meeting 1. Alpha 2. Beta 3. Gamma 二.测试报告 三.发布说明 四.技术博客 后端 前端 五.习得的软工原理/方法/技能? Alpha Beta ...

  4. Scrum Meeting 博客汇总

    Scrum Meeting 博客汇总 一.Scrum Meeting 1. Alpha 第一次 Scrum Meeting 第二次 Scrum Meeting 第三次 Scrum Meeting 第四 ...

  5. [Gamma阶段]测试报告

    [Gamma阶段]测试报告 博客目录 测试方法及过程 在正式发布前,为检验后端各接口功能的正确性,后端服务器对压力的耐受程度,以及前端各页面.功能的运行情况,我们对我们的服务器及小程序进行了多种测试. ...

  6. 【Gamma】“北航社团帮”测试报告——小程序v3.0

    目录 测试计划.过程和结果 后端测试--单元测试与覆盖率 后端测试--压力测试 展示部分数据 平均数据 前端测试--小程序v3.0 新功能 各页面均可正常打开,跳转,回退 授权登录与权限检查 页面数据 ...

  7. Gamma阶段测试报告

    测试计划 Gamma阶段依然以场景测试为主.我们归纳了三条场景主线: 一.典型用户:查看 访问排名页面 / 搜索课程 查看课程页面 查看教师页面 为他人评论点赞或点踩 二.典型用户:评论 登录网站 搜 ...

  8. 【Gamma】测试报告

    测试方法及过程 在正式发布前,我们对后端代码.前后端接口.服务器以及前端的页面和功能做了多种测试,主要包括对后端代码的单元测试.针对接口的测试.压力测试以及功能测试. 后端代码单元测试 该部分测试主要 ...

  9. [Gamma]阶段测试报告

    后端测试 我们进行了覆盖性测试,覆盖率达到77%. Beta阶段发现的Bug 项目显示的图片错误 无法使用搜索框 发布实验室项目的按钮点击无法跳转 连续点击发帖按钮可能发出多个相同的帖子 不需要点击我 ...

随机推荐

  1. [原创]Spring-Security-Oauth2.0浏览器端的登录项目分享

    1.简介 ​ CitySecurity项目为正式上线项目做得一个Demo,这里主要介绍浏览器端的登录.本项目使用了SpringSecurity实现表单安全登录.图形验证的校验.记住我时长控制机制.第三 ...

  2. 微信小程序报thirdScriptError Cannot read property 'setData' of undefined

    用onLoad: function (options) {} 加载页面缓存的数据的时候报错   修改为          

  3. 记录一次OracleJDK开发的项目发部到Linux中使用OpenJDK启动后失败的错误的解决方案

    一.现象 基于JAVA SpringBoot2.0.4的项目,发部后项目发部后,放到OpenJDK环境中运行时,提示下列错误: 2019-10-22 10:03:55 [main] WARN  o.s ...

  4. python \r与\b的应用、光标的含义

    参考链接:https://www.jianshu.com/p/eb5c23cd6e34 \r 能将光标定位到当前行的行首 \b则是将光标回退一位 光标的含义: 光标后面的输出内容均会消失,光标回退后, ...

  5. Mac下Appnium的Android的UI自动化环境搭建

    1. 安装jdk:略 检查是否安装:执行命令java -version admindeMacBook-Pro-2:~ $ java -version java version "1.8.0_ ...

  6. cin快读

    ios::sync_with_stdio(false); \\取消同步,cin,cout的速度就不慢了!!

  7. bugku——宽带信息泄露(RouterPassView 查看路由器配置信息)

    题目地址:http://ctf.bugku.com/files/5986768ca8b96cead45aec16a88431b5/conf.bin 下载之后发现是个后缀名为bin的二进制文件,其实这个 ...

  8. Spark GraphX图计算核心源码分析【图构建器、顶点、边】

    一.图构建器 GraphX提供了几种从RDD或磁盘上的顶点和边的集合构建图形的方法.默认情况下,没有图构建器会重新划分图的边:相反,边保留在默认分区中.Graph.groupEdges要求对图进行重新 ...

  9. 在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记

    第一章:Maven概述 (1)Maven是一个项目构建工具,由apache提供,用Java开发的 (2)构建工具:Ant(蚂蚁),Maven(专家) (3)构建工具作用:帮助程序员进行项目的创建,目录 ...

  10. 【MySQL】自增步长调整

    mysql> show variables like '%increment%'; +-----------------------------+-------+ | Variable_name ...