zoukankan      html  css  js  c++  java
  • 移动测试体系

    移动测试体系

    推荐书籍:

    《移动app性能评测与优化》腾讯出品

    《App研发录》包建强

    《移动App测试实战》

    目的:好的技术推动测试行业发展。

    前言

    移动互联网公司的简化架构

    质量目标

    质量目标-更好

             需求的正确性:

                       参与需求评审,明确需求,细化测试用例设计

                       测试中与产品经理协作

             实现的正确性:

                       业务功能实现

                       专项测试,性能,稳定性,安全

                       新老版本兼容性

    质量目标-更快

             项目测试流程保证

             持续集成+自动化+工具定制

             质量监控与快速反馈

    挑战

             多段测试:android IOS web hybrid

             诸多专项:新老版本兼容 多设备兼容 性能 安全等

             专项测试技术难度大

             技术生态不完善

             测试方法陈旧

             低质量的交付、单侧不充分、业务逻辑实现多端不一致

             迭代快时间和人力资源紧张

    内容大纲

             研发阶段的质量保证

             测试阶段的测试流程

             发布后的质量监控

    一、研发阶段的质量保证

    【代码提测之前】

    1.静态分析---测试

    2.单元测试---研发执行落地,测试 提供一个机制(jenkins)。测试分层:70%

    3.代码review(代码评审)----研发 测试工程师能力要求,发现问题效果好,问题的50%

    4.自测---研发,多了解,不要被开发忽悠。

    5.自动化冒烟测试---测试

     

    一、静态分析--测试

    综合性的代码分析平台

             Sonar支持自定义规则,较多的公司使用---就可以检查下面的质量指标。支持自定义规则。手机截图

             Xcode和android studio(IDE)的自带集成工具。

    独立的静态分析工具—功能:扫描代码里面的各种隐患

             Findbugs

             Pmd

             Androidlint

             Scan-build

    静态分析关注的质量指标

    技术债

             代码规范

             代码问题---主要原因。不严谨 编码解码 会有误报,要找出关键规则

    代码重复度---越低越好,一段代码copy多次,风险有问题后只fix一处,其他处没改。

    圈复杂度---代码分支结构,内部多层if else嵌套 可能路径多 单元测试无法全部覆盖,风险

    单测的覆盖率---已覆盖,未覆盖,发现测试不充分地方,补充测试。

     

    静态代码的在线规则库

    自定义规则

    https://docs.sonarqube.org/display/DEV/Adding+Coding+Rules

    https://pmd.github.io/pmd-5.5.5/customizing/howtowritearule.html

    在线规则库

    360火线 http://magic.360.cn/

    FindBugs的规则库:http://findbugs.sourceforge.net/bugDescriptions.html

    研究规则,代码隐患,对以后分析问题有帮助。

     

    静态分析工具报告

    Jenkins集成的报告,扫描研发工程师每天提交的代码,当代码增加后,可以看得出来bug趋势。测试人员关注新增的严重的bug,找出隐患。手机截图

     

    二、单元测试--研发,测试搭jenkins

    单测研发主做,测试人员把流程搭建起来,进行快速反馈,通过jenkins每天跑单测用例。

    单测的可测性是单测成败的关键。

    合理的使用mock方法。

    建立良好的反馈机制

             jenkins 跟进【流程】测试人员把单元测试、静态分析都集成到jenkins中。用例管理。

             不要跳过测试执行---Dskip.test = true

     

    三、代码评审---最有效的质量保证手段

    防止烂代码、烂设计进入

    培养良好的代码习惯,知识和规范的传承

    借助标准的代码管理工具即可,比如gitlab的pr机制。

     

    四、自测----测试左移

    研发自测

             自查和自测试是负责的态度

             保证质量交付有助于缩短项目工期

    产品自测

             自动出包给产品

             评估产品流程和UI设计是否符合预期

     

    五、自动化冒烟测试---测试,保证提测的包不会存在低级问题

    自动打debug包

    自动化的冒烟测试手段

             前端项目--- case维护成本低        

                       Monkey健壮性测试

                       自动遍历+LeakCanary自动检测内存泄漏

                       基本的崩溃检测

                       基本的冒烟测试用例

             后端项目---接口测试

     

     二、测试阶段的测试流程

    测试准入

             自动对测试分支进行打包

             自动对测试分支进行测试

             打tag表示一个正式的提测版本

    移动端交付测试略

    内部交付

             内部测试用

             自动打包jenkins

             内部下载入口

     

    公测

    更快的手段测试包:fir.im  bugly服务,测试团队关注包的下载地址,一旦有新版本就测试。

     

    正式发布

             打包渠道包推送到各市场

             上传到app store

    内部App发布

             手机截图

     

    后端发布

    基于docker体系,省去了测试运维之苦

    内部编译和部署系统Rolling

    根据分支半自动部署环境

    后端升级自动触发接口测试

     

    测试体系

    一、客户端

    1.手工测试为主(每版本执行 成本大)

             测试组

             内测+公测:员工,产品达人,粉丝 

             灰度测试:应用市场No返回新版本Yes。比例控制 逻辑灰度:地域/年龄 逐步灰度

    手工测试依然是主角

             业务需求,交互,产品体验(工具+文档+人力)

    2.自动化测试

             (1)UI自动化测试

             (2)接口自动化测试:测试分层20%

             (3)自动遍历测试

    (1)UI自动化测试

    Android自动化测试-----手机截图

             Appium > Robotium > UI Automator

             Appium:跨平台IOS、android

    IOS自动化测试----手机截图

             Xcode8.0

             Appium>KIF(XCTest)---能力要求

    UI不足:

             复用率低:UI、流程变更。勿在浮沙筑高台。------能力:配置Object模型

             稳定性不足:-----能力:框架封装,避开80%干扰。失败重试,使case稳定

             容易被干扰

             执行慢 并发只能解决部分问题。

             技术生态不完善

    合理的UI自动化:

             侧重于主流程的回归测试

             控制规模

             降低编写用例的成本

             自动遍历+自动生成测试用例。

    (2)接口自动化测试:测试分层20%

    (3)自动遍历测试----配合UI自动化、monkey,三者配合。

    定义:通过不断遍历app中页面和路径尝试发现问题的方法

    优点:比UI自动化维护成本低、比Monkey更具可控性。(Monkey广泛应用于云测平台)。

    价值:

             ·验证UI的可用----浏览,兼容性

                       基本功能

                       兼容性

             ·自动化性能测试:结合OneApm,NewRelic界面切换速度、后端接口响应(代理技术也可以发现后端问题)。

             ·内存泄漏:借助LeakCanary(手工测试中,自动提醒发现内存泄漏)和MLeaksFinder(IOS)

    ·稳定性问题:长时间浏览,卡顿,崩溃问题。

    ·崩溃的分析与统计:Flurry  Bugly  Fabric SDK级,多了解集成,学会如何从Bugly上去找某一个用户的crash,取top10发给研发。分析平台数据的质量价值,堆栈信息。  

             ·UI Diff验证新老版本的功能差异

    百度:smartMonkey,在云测平台。

    腾讯:newMonkey,未开源。

    思寒开发的工具:appcrawler工具

             ·支持遍历控制,支持monkey,支持android和IOS,支持native和hybrid,支持微信和微信webview。

             ·自动遍历的报告:手机截图*3

             ·不足:验证码,短信验证搞不定,写数据,等交互的交给手动。

     

    3.专项测试(间或版本执行)

    (1)App端性能测试

             ·冷启动+热启动:响应时间

             ·界面切换和交互体验:FPS(流畅度)

             ·接口性能

             ·流量

             ·电量

             ·内存和CPU占用---后果,流畅度、crash、卡顿。

    性能分析自动化相关技术

             Adb:android   instrument:IOS

             录屏:逐帧分析加载过程

             H5:remote debug协议、ChromeF12工具。

    内存问题检测:

             问题:---crash,,卡顿

             测试手段:

                       开启LargeHeap

                       Android Studio的Monitor监控各种资源使用情况+MAT+LeakCanary

                       IOS+instruments套件(多指标监控)

                       优秀实践:自动遍历+ LeakCanary----全面发现内存问题

    公司内部Log分析、数据收集等平台,定位一些问题。

    (2)H5性能

    手机截图—google

             Webpagetest平台

                       多浏览器、多地域、可访问性、访问速度

             Hybrid的性能分析

             微信webview的性能分析----了解H5的渲染机制。

    H5性能关注指标

    统计指标:

             首字节时间

    传输时间

    白屏时间

    首屏时间

    策略(结合绿书p69

             数据压缩,,大数据不压缩,提bug

             Cache策略,关键资源大资源要做cache,不做提bug。

     

    (3)弱网测试---电梯、地铁

             弱网模拟:

                       树莓派(废弃)

                       代理工具:FiddlerCharlesBurpsuite

                       IOS开发者工具

             重要场景:

                       支持超时 网速 异常模拟,看app的反应!

                       可以篡改数据验证健壮性,比如字段类型和null类型(异常处理)

     

    (4)安全测试---能力

    端安全

    包的破解,反编译和重新打包

    包的关键api被hook篡改

    服务器安全

    接口业务安全,提交数据合法性

    数据安全,数据泄露和撞库风险---暴力拆解

    通用做法

    加强通用防护手段、请安全咨询团队

    Zap WVS等工具的自动化扫描

     

    (5)兼容性测试

    质量问题

    某些设备的安装失败、crash

    某些设备的功能不可用

    某些设备的UI错乱

    影响因素

    OS的版本间差异--Android4.0开始关注,IOS8.0开始关注

    Rom定制差异

    硬件差:GPU(游戏公司) CPU 内存 屏幕尺寸

    商业服务方案

    Testin---monkey,安装卸载

    MQC---阿里巴巴

    MTC---百度

    优测---腾讯

    私有部署方案

    OpenSTF 定制

    手机截图测试研发一起用,几十台手机,远程的交互,速度快,支持自动化adb开放出来,远程测试。

    Appium grid方案

     

     

    二、接口测试----合理分层测试(Unit>>Service>>UI)

    1.接口性能

    接口测试的范围和层次

    手机截图

    质量维度

    功能,保持新老版本的兼容--API

    性能,单次请求的响应跟总体的qps相关

    变更检测 字段缺失,字段的类型变更

    异常和健壮性测试

    质量体系

    构建接口层的快速稳定的质量保证体系

    构建接口监控体系---保证服务器接口对老版本用户的兼容。

    接口测试流程

    接口的范围---哪些接口要测试,top10访问。

    接口分析---输入输出

    接口测试框架---擅长的框架

    测试用例维护----写代码

    持续集成----jenkins

    质量监控

    接口测试框架

    Rest-assured优秀的接口测试开源方案---集大成者!!Python,java,ruby都可以调。

    Jmeter,性能测试工具,改进也可测接口。支持单测管理,实践较少。

    Gatling,性能测试工具,同上,与单测结合没有

    SOAPUI,接口测试工具,商业付费,方案臃肿,开源不积极

    PostMan,接口测试工具,手工测试,node.js开发的,不能构建接口测试体系,有问题。

    Swagger,javaAPI管理整体解决方案

    Capybara-json,ruby开发,类似七牛的接口测试方案

    定制化,定制化方案,基于各种语言自身的xUnit+httpclient封装。

    录制和自动生成测试用例---到StuQ接口测试去找

    推荐的接口测试落地手段

    选择优雅的接口测试框架

    录制+生成测试用例

    基于har或者tcpdump的数据源

    直接生成接口测试框架代码模板

    基于FiddlerCharles所提供的hal数据,直接生成接口测试的测试用例。

    数据驱动,excel yaml,维护简单。文件读取,提高效率,自动拼装测试数据。

    新老版本之间的接口对比分析

    结构对比---一个接口字段减少了,字段类型变更,会影响客户端。老版本出错。

    重构时的数据对比---检查服务端的返回数据不要发生变化。

    推荐开源的Rest-assured手机截图

    简约的接口测试DSL,get post请求的参数,清晰的API

    支持xml json的结构化解析

    支持xpath jsonpath gpath等多种解析方式

    对spring的支持,mock??

    Diff方案---能力,没讲

    Gor导流压测+Twitter的Diffy

    局限

    只支持get请求

    涉及资源太多 早期没有推起来

    接口测试框架Diff功能

    三、发布后的质量监控

    内测质量分析与监控

             OneAPM---SDK级别,监控平台,手工测试时帮我抓出app性能数据,定位性能问题       Bugly---监测崩溃SDK级别。

    NewRelic性能测试工具、SDK级别。

            

    整体测试流程

    持续交付流程

             自动化打包

             UI自动化测试

             半自动部署

             接口自动化

    项目测试流程

             2-4周迭代

             测试用例+测试报告

     

    不懂代开发的测试工程师生存空间越来越小。

    测试工程师首先是一个工程师,作为一个工程师如果你不懂一门开发语言,其实你称不上是一个工程师。人和电脑是通过开发语言进行沟通的,想说话一样。如果你不懂开发语言,你就不能指导计算机帮你去做事。

    手动+UI自动化+第三方工具+脚本。

    大量工具的使用:批量的测试数据的生成,分析等。

    学Python,学java,不要学Robot Framework局限。

     

    开发模式

    1.App是一个空壳,里面内嵌的webview,直接浏览在线网站。没有本地的东西,想浏览器一样。Url是远程。

    2.把所需要的资源放到本地解析,不做任何网络请求,直接访问本地的html,渲染出来。Url是本地。

    3.H5去做开发,但是输出给用户仍然是原生的控件,自动化框架可以解析。

    4.原生。

  • 相关阅读:
    fedora上部署ASP.NET——(卡带式电脑跑.NET WEB服务器)
    SQL Server 请求失败或服务未及时响应。有关详细信息,请参见事件日志或其它适合的错误日志
    8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
    FTP 服务搭建后不能访问问题解决
    指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
    Linux 安装MongoDB 并设置防火墙,使用远程客户端访问
    svn Please execute the 'Cleanup' command. 问题解决
    .net 操作MongoDB 基础
    oracle 使用绑定变量极大的提升性能
    尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
  • 原文地址:https://www.cnblogs.com/vmorgen/p/testerhome.html
Copyright © 2011-2022 走看看