当前位置:   article > 正文

4.3 常见的测试方法_as2001.4.3 测试方法

as2001.4.3 测试方法

4.3常见的测试方法

一、API接口测试

1. 定义:

是测试系统组件间接口的一种测试。主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口。

2.重点:

1. 检查接口参数传递的正确性
2. 接口功能实现的正确性
3. 输出结果的正确性
4. 对各种异常情况的容错处理的完整性和合理性
  • 1
  • 2
  • 3
  • 4

3.接口测试分类:

在这里插入图片描述

- 单API接口测试:主要关注参数取值和参数取值的组合。
- 组合API接口测试:主要关注功能的完整性和正确性。
	- 完整性: 完成一个特定功能
	- 正确性: 执行结果正确,满足测试要求
  • 1
  • 2
  • 3
  • 4

4.在微服务中接口测试面临的挑战

- 服务不具备独立验证能力
- 自动化用例开发效率低
  • 1
  • 2

5.接口测试的三原则

原则:同源、独立测试、全自动化测试
  • 1

1). 同源:设计,开发,测试三个活动基于同一源头
在这里插入图片描述

2). 独立测试DevOps模式下,50%+服务涉及服务依赖,服务自测试前移到开发自测试阶段开展,创建mock服务使环境解耦,否则微服务独立测试难以开展

3). 100%自动化测试:在开发自测试阶段,开发人员时间有限,为了提高转测效率应该尽量高效的使用自动化,也就是说能自动化解决的工作尽量自动化解决,就是我们倡议的100%自动化

6.API接口测试设计过程

在这里插入图片描述

步骤解释
接口梳理参考接口设计文档,业务流图等
接口参数分析熟悉接口参数和作用
业务场景梳理业务场景分析、涉及的API组合、业务逻辑关联等
单接口测试设计业务场景分析、涉及的API组合、业务逻辑关联等
多接口组合场景设计单接口单参数取值,单接口多参数组合,测试输入数据设计,返回检查点设计等

7. API接口测试自动化流程

基于接口进行测试用例设计、建模,通过APItest 实现接口封装调用,脚本开发,集成到流水线,实现单服务测试。
在这里插入图片描述
在这里插入图片描述

8.云测-APITest接口自动化测试

在这里插入图片描述

二、性能测试

性能问题会严重影响用户体验,而导致用户流失

1. 传统性能测试活动看云化挑战

  • 缺点:工具链复杂,人员要求高,不够快,不会测,难定位。

2.华为云CPTS云性能测试服务设计理念

提供低门槛,低成本的一站式云化性能测试解决方案

  • Anywhere: 支持多种协议,满足各行各业
  • Anyone: 低门槛编码开展各层次性能测试
  • Anytime: 即开即用,任何时候开展测试

3.CPTS云化性能测试解决方案

在这里插入图片描述

4.华为云测功能

  • 并发,TPS,时延,时延区间, TP9X, 错误细分,带宽等多个维度性能测试指标统计,真实反馈高并发下用户体验
  • 面向节点、应用的200+资源统计指标,测试过程中的资源瓶颈一目了然
  • 调用链跟踪,测试过程中发现的问题可分钟级定位至出错函数
  • 服务间调用统计,准确分析应用间调用时延,并提供更多的SQL级分析

三、契约测试

1. 背景

MicroService是一种架构风格, 将单个应用设计成一组服务集合。优点是:高度模块化,可独立部署,技术多样性,但是管理复杂性高,服务以服务之间的依赖高,要测试各个服务的难度大。

2.如何测试微服务 - 契约测试

3. 定义

契约测试时一种针对外部服务的接口进行的测试,他能够验证服务是否满足消费方期待的契约。这个契约包含了对输入和输出的数据结构的期望,性能以及并发性
在这里插入图片描述

4. 为什么要开展契约测试

  • 验证provider 是否按照期望的方式与consumer进行交互
  • 为consumer驱动提供质量保证

5. 契约测试的实践方式

  • 三个环境
- 产品环境:消费者与生产者的调用关系
- consumer测试环境
- provider测试环境
  • 1
  • 2
  • 3
  • 两种关键技术
- 通过Mock技术解除Consumer对Provider的依赖
- 通过契约测试保证provider的修改对consumer保持一致
  • 1
  • 2
  • mock技术的概念
mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
  • 1
  • 微服务测试面临问题 - 使用mock解决
    1、如何实现环境无依赖,服务间无依赖。
    2、如何实现快速测试,支撑服务快速上线。

  • mock测试目标

1、服务解耦: mock解除微服务之间的依赖
2、分层测试,自动化一切: 微服务接口测试和服务组集成测试都可以
3、精准测试: mock精准模拟其他服务的返回
4、Mock自助服务(yaml同源):将服务自己对外提供的接口进行mock化,从而达到与yaml(api接口定义文档)同源
  • 1
  • 2
  • 3
  • 4

测试金字塔:
在这里插入图片描述

6.云测Mock优秀实践

在这里插入图片描述

APIManger通过yaml文件来对API接口进行定义,当yaml文件变更(api变更),会将新的yaml文件推送给mock服务,mock服务感知到变更后会通过Mock流水线进行自动升级,部署,以更新mock实例。从而实现mock服务于yaml文件同源。

四、WebUI测试(mock测试)

1.WebUI测试的场景

新功能测试:需求不稳定,不适合进行自动化测试
回归测试和兼容性测试:前者需要执行大量的回归测试用例,而后者需要将这些用例在不同的浏览器中重复执行。因此可以利用自动化测试工具,将重复,低效,易错的工作进行自动化。

- 冒烟测试
- 新功能测试
- 回归测试
- 兼容性测试(一套测试脚本,多个浏览器执行)
- 完成手动测试无法完成的工作,下班后无人值守测试
  • 1
  • 2
  • 3
  • 4
  • 5

2.Web自动化测试

  • 优点
- 更快的速度
- 更高的覆盖率
- 更好的稳定性和可扩展性
  • 1
  • 2
  • 3
  • Selenium+TestNG的WebUI自动化测试框架
    在这里插入图片描述
TestNG:
- DataProvider:使用同一种方法的测试覆盖变得非常容易,非常适合边界测试
- BaseCase:提供基础的方法和框架
- 结果报表:运行后默认生成两种测试报告html/xml, 位于test out-put下
Selenium:
- 结果校验库:执行过程中添加检查点进行校验
- 业务封装库:封装成共有方法供大家公用
- UI Map: 生成脚本必须的map文件,日志库
- 日志库:执行日志
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3. 云测-一站式Web全自动化测试解决方案

  • Selenium+TestNG需要基本的编程经验,而且需要查阅大量的API说明,不利于手工测试人员快速上手。
  • DevCloud的Web自动化满足手工测试人员期望的“不用编码就能实现Web自动化测试”。具体方案如下图:
    在这里插入图片描述

4. DevCloud云测流程

解决方案:先进行人工录制测试用例,DevCloud自动生成测试序列和自动化执行脚本,然后执行测试用例,最后生成测试报告。
在这里插入图片描述

5. 图形化编排-可视化脚本编写方案

  • 为自动化测试降低门槛,不需要Java基础
  • 提高测试开发效率:通过可视化拖拽方式编写脚本
  • 业务流程清晰,直观:所见即所得,可视化通过业务KW组装成用例
    在这里插入图片描述

6. 云测WebUI自动化测试优秀实践

  • 工具:DevCloud-ARTBot
  • 体现:测试用例免代码编写,录制回放机制生成脚本,基于脚本模块组装编排、管理WebUI自动化测试用例。
  • 优点:
- 简单:
0编码成本、0环境搭建成本、3步生成WebUI脚本、1步WebUI自动化执行
- 高效:
可视化编排测试用例、测试关键字批量复用、云端弹性资源池、实时反馈测试结果
- 专业:
高级测试场景编排、定制化用户数据配置、固化常用步骤、流水线持续自动化测试
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

五、可靠性与安全性测试

1. 软件可靠性

1)定义
软件可靠性:软件在所规定的环境条件下和规定时间内正确的完成任务的能力。
  • 1
2)测试方法
(1)基于操作剖面开展测试
是按照软件操作剖面对软件进行随机测试的一种测试方法
  • 1
(2)基于故障注入开展测试
采用人工的方法将故障注入到特定的目标系统中,同时采集系统所注入故障的反应信息
  • 1
  • 软件故障注入技术
    定义:软件故障注入是通过软件方法,在机器指令可以访问到的范围内,通过修改硬件或软件的状态变量或数据来模拟故障的产生,加速系统的失效
    优点:与其他可靠性测试相比,故障注入方法能方便灵活、便捷有效地处理各种可靠性问题。
    分类:模拟实现的故障注入,硬件实现的故障注入,软件实现的故障注入。
    方法:通过软件方法,在机器指令可以访问到的范围内,通过修改硬件或软件的状态变量或数据来模拟故障的产生,加速系统的失效
软件故障注入:
- 静态故障注入:主要通过程序变异的方法,通过改变原程序,使被测系统文件静态的存在错误,从而使其运行时出现故障
- 动态注入:是在被测系统正常运行过程中,在特定的状态或条件下,通过一定的机制修改被测系统的二进制映像,从而实现故障注入。由于注入故障前被测系统的二进制映像不被改变,因此它能逼真地模拟被测系统的运行。另外,由于该种方式是根据被测系统的运行状态或条件注入故障的,所以它具有灵活性。
  • 1
  • 2
  • 3
3) 可靠性设计-测试指标
  • 类别:数据可靠性,系统可用性,升级部署,业务可用度
    在这里插入图片描述
  • Chaos混沌测试
混沌测试是检测分布式系统不确定性、建立系统弹性信心的一种非常好的方式
  • 1

2.软件安全性-DevSecOps

  • 什么时DevSecOps
    通过给开发或运维角色加强或建立安全意识,或是在产品团队中引入一个安全工程师角色,在产品设计中找到安全问题,从而将安全要求汇聚在Devops中。

  • DevSeOps-安全测试云服务框架

主机漏洞扫描组件:
secVas: 自动化的web漏洞扫面工具
openvas:开放性漏洞评估系统,核心部件是一个服务器,一套望楼漏洞测试程序。可以检测远程程序和应用程序的安全问题。
Nexpose:漏洞扫描工具
RSAS:绿盟科技远程安全评估系统,自动诊断漏洞

web漏洞扫描:
secScan: 自动化主机漏洞扫描工具
Burpsuite: web渗透扫描工具
Appscan: web项目的安全测试工具,扫描网站所有url
AWVS: web漏洞扫描工具

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

六、在线测试

在线测试是指在生产环境中开展的,或者利用生产环境数据开展的各种类型的测试活动。

1. 疑问

· 如何构造生产环境数据进行测试?
· 灰度发布应该观察多久,需要观察哪些数据?
· 如何模拟现网用户真实使用场景测试?
· 现网架构越来越复杂,如何保证系统时时刻刻都是可用的?
  • 1
  • 2
  • 3
  • 4

2. 在线测试包含的活动

在这里插入图片描述

1) 导流测试:
  • 原理:
将生产环境用户真实数据引流至研发去验证环境,通过对比研发区的验证结果与生产环境的真实结果对比,判断新版本是否存在潜在问题。
  • 1
  • 测试要点
1.请求收集:收集生产环境用户真实请求
2.数据同步:生产环境冷备DB数据,同步至A/B两套环境
3.流量回放:将真实流量回放到A/B两套环境
4.结果对比:比对A/B两套环境流量执行结果
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

2) 部署测试
  • 原理:
部署在生产环境之后,快速启动基于现网真实数据对该发布版本进行快速验证,保证新版本重要功能运行正常。
  • 1
  • 测试要点:
1.测试时机:在生产环境部署后快速启动部署测试
2.测试数据:基于生产环境的真实数据
3.测试范围:核心功能和常用功能所对应的测试用例
4.测试结果:核心功能或常用功能用例执行失败立即定位解决或回退版本
  • 1
  • 2
  • 3
  • 4
3) 在线持续测试
  • 原理:
产品、服务发布后,在生产环境对产品/服务重要功能进行7*24小时持续拨测以便尽早或先于用户发现问题并协助研发人员快速修复上线。
  • 1
  • 测试要点:
1. 筛选用例:重要功能对应测试用例
2. 定时拨测:定时对重要功能进行拨测
3. 现网告警:拨测用例执行失败并发送告警短信,提示告警等级
4. 处理上线:研发人员根据告警快速处理并快速上线
  • 1
  • 2
  • 3
  • 4

3.云测在线持续测试优秀实践

  • 在线测试案例:应用市场-开展7*24小时在线测试,发现复杂场景性能问题。
  • 关键技术:
1. 用例共享:研发、在在线测试用例资源共享,提供研发效率
2. 执行方式灵活:用例按节点区域、并行串行、定时执行等多种执行策略,满足不同测试需求
3. 模拟全球用户持续发起在线测试:跨区域持续测试被测服务,实现分布式部署,实时发起线上真实请求并收集数据。
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/599578
推荐阅读
相关标签
  

闽ICP备14008679号