分层测试架构

如何评价一个项目的过程质量?是从代码的层面,还是从发现的 BUG 来统计,或者是其他信息。如何有效记录并分析每个测试阶段(冒烟测试、系统测试等等)的问题以及反馈提测质量?

今次的目标是:打通整个软件生命周期

分层自动化的目标

实现代码、服务、界面分层自动化的整体架构目标,满足金字塔式一体化分层管理

20180730215739.png

20180730:图中,待实现的 sonar, gatest均已实现,且mock service 统一为go mock

优势

  1. 各层测试目标清晰,资源统一管理;
  2. 代码层级持续日构建,支持 merge 后自动构建,作为冒烟测试检查手段
  3. 可以集成新测试工具和测试框架,展现测试报告,提升管理效率,利于各层各节点质量数据统计分析
  4. 统一自动化测试入口,便于测试、开发自测统一管理(基础建设完成后,后期考虑)。

基于现状,有必要提高开发自测参与度,从【单元测试】和【接口测试】层面都需要更自动化,给到测试更多的质量反馈数据。接着,渐进式的改进测试流程的状态,最终完成实现平台化,完成测试平台入口的统一

测试散点态 ----> 测试流程化 ----> 测试平台化
20180730220001.png

分层测试设计思想:

测试基础服务

主要是指:持续构建服务(Jenkins)、静态代码分析服务(Sonar)、配置管理服务(Git)、统一构建工具管理(Maven),可以使用 Docker 来构建。

20180730:目前CI 采用 gitlab Runner ,也未使用 Maven

测试基石层

主要是指:Unit Test

在该层,通过自动化单元测试的持续构建,可以作为测试阶段的第一道关卡,完成冒烟测试工作。流程要以下步骤实现:

  1. 建立提测项目的单元测试环节,在 Gitlab CI上完成构建;
  2. 构建项目,进行代码编译,执行不通过,打回,要求开发人员修复直到构建成功为止,并且记录打回节点和原因,作为提测质量的依据
  3. 单元测试,单元测试失败、覆盖度不符合标准,打回,要求开发人员修复直到单测成功为止,并且记录打回节点和原因,作为提测质量的依据;只有通过第一轮 UnitTest 冒烟测试之后,才能进入下一个环节;
  4. 静态代码分析,对源代码进行度量分析,比如代码风格、单元测试覆盖率、圈复杂度、耦合度等,如不通过,记录打回节点和原因,作为提测质量的依据,自动化审核工具运行通过后,才有获得提测准入资格

流程上 —— 增加 Sonar 静态代码分析测试

目前第1-3步,主要依赖开发自主完成,但是目前缺少必要的工具,无法做到有效监控,所以,暂时先从简单的第4点入手。

Sonar 具有代码静态检查、单元测试覆盖率分析、代码复杂度分析、jar依赖关系分析等多种功能;提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。

Go 可用 go report ,sonar 在18年5月份开始支持go

测试中坚层 Service & Integration Test

主要是API测试,缓存服务,日志服务等。API 测试包括 HTTP、CBin 协议等。

测试用例完全掌握在测试人员手里,开发修复 BUG 之后,只能等待测试人员验证,交付过程效率低。正确的姿势是开发、测试协同工作,开发人员修复 BUG 后即可通过平台执行用例,快速回归,实现 0 等待,驱动过程质量的提升。

因此,必要的API 冒烟测试显示尤为重要,开发自助执行测试提供的冒烟测试用例。如果此环节不通过,会记录节点并且发送邮件通知开发人员,开发人员根据测试报告,排查存在问题的API,进行修复之后,再次提测,直到通过为止。

测试技术实现上

  1. 针对 HTTP API,如支付网关,支付 PHP API,采用 SoapUI 工具生成用例,以 XML 方式存储,进行测试。
  2. 针对 CBin 协议等,例如账号网关,采用新的 PHPUnit 框架下,引入旧协议 lib 包进行测试。
  3. 针对 gRPC 服务,采用开发功能代码与 go test 结合的方式进行测试。—— 待优化

流程上 —— 增加冒烟测试

重大变化的点:流程上,测试人员需要在开发完成任务前给到 API 测试用例

引入冒烟测试的目的:

  • 提升QA概念,纳入质量监控
  • 提高准入标准
  • 减少时间损耗
  • 快速响应
  • 理清接口数量,服务数量,版本个数,应用场景,冒烟用例数

流程实施分两个阶段,分步前进:

  1. 第一阶段,测试点覆盖,Xmind 给出功能点,开发进行冒烟测试

人工统计节点数据。可能存在的痛点是,提测,冒烟,打;再提测,再冒烟,再打回,而在上线时间紧凑的情况下,这样的流程会增加开发的处理时间,压缩测试时间。

  1. 第二阶段,系统评估质量和执行用例

设定由开发、测试都认可的预设条件作为冒烟测试阶段,通过之后则相当于具备了正式提测条件。如未通过,则打回,同时记录打回的节点,作为提测质量依据。开发自助通过冒烟测试,完成冒烟阶段的任务,可双向节省时间,更加关注业务实现。

但是,此阶段测试给出的测试功能点,旧接口有现成的测试用例可以直接部署,新接口需要Mock Service 才能实现。因此,我们的流程上还需要将 Mock Service 纳入考虑范围。

方案传送带:http://gitlab.xxx.cn/testing-group/base/issues/20

新增 Mock Server

Mock Server 在们的支付网关测试和新接口开发过程中,显示尤为重要,最突出的一个贡献应该是可以解决接口只在文档中定义,而实操中界限不清,逻辑含糊模糊不清,人工沟通出现纰漏不断的问题。如,常见的返回格式,编码不统一,类型出错,多版本逻辑,返回码定义模糊。当存在这样一个Mock系统时,我们随时可以告知任何人,按照我们的要求来接入。

方案传送带:http://gitlab.xxx.cn/testing-group/base/issues/18

新增统一 API 管理平台

方案传送带:http://gitlab.xxx.cn/testing-group/base/issues/18#note_35670

测试表现层

UI 测试的投入需要非常慎重。如果页面元素频繁变动,一般不建议马上开展UI自动化测试,但可以转变测试思想:

  • 业务主要入口和页面样式兼容性可以与业务逻辑分离,只做页面版本检查。利用生成的快照,在上下两个版本之间进行对比,如此,只需要在大版本需要切换时,做基准数据准备即可。日常兼容性校验均可由检测快照来完成自动化 check 工作。技术方案采用 Selenium。
  • 长期(6 个月以上)稳定的功能,并且页面元素有清晰的定义,可以投入核心业务的UI自动化测试。区分主要业务逻辑和分支结构,进行常规元素检查。可使用关键字驱动,也可采用行为驱动 BDD 的方式。目前我们采用Cucumber。

方案传送带:http://gitlab.xxx.cn/testing-group/base/issues/19

结尾

各层的测试报告单独给出,每层测试报告中汇总测试的功能模块,测试用例,通过率等。

每个点的数据统计。----[数据服务需要修改的内容]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容