目前在备考华为云的devops认证考试,特把近期的笔记整理好,方便复习
文章目录
-
- 目标
- 敏捷测试内容
-
- 1. 敏捷软件测试理念、方法与实践
-
- 测试概念及分类
- 敏捷测试宣言
- 完整的测试过程
-
- 测试设计
- 测试执行类型
- 测试报告内容范围
- API接口测试
-
- API接口测试的重点:
- 分类:
- API接口测试三原则:
- API接口测试设计过程
- API接口测试自动化流程
- 性能测试
- 契约测试
- webUI测试
- 软件可靠性
- 持续安全与审计
-
-
- devops给安全带来的挑战
- 安全最佳实践
- 操作全程可管控
- 资源操作可管控
- 态势感知SA
- 云审计服务
- 云堡垒机CBH
- 安全编码
- 漏洞
- SQL注入
- 跨站脚本
- 华为云租户业务防护方案
目标
- 了解敏捷测试的重要性和基本理念
- 掌握敏捷测试概念、流程和方法
- 掌握华为云的测试能力,如测试管理、接口测试、性能测试的基本操作
- 学会如何应用敏捷测试,保持项目整体测试的高质量高效率
敏捷测试内容
1. 敏捷软件测试理念、方法与实践
测试概念及分类
什么是测试?
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
测试分类
- 测试方法:黑盒测试、白盒测试
- 测试类型:功能测试、系统测试、极限值测试、性能测试
- 测试阶段:单元测试、集成测试、系统测试、回归测试
为什么需要敏捷测试?
项目执行过程中因为赶进度,测试周期被压缩,测试人力也不足,要求测试人员提升技能,同时通过高度的自动化、测试左移等方法,尽早发现问题。
什么是敏捷测试?
敏捷测试是一种遵循敏捷软件开发原理的软件测试实践。敏捷测试涉及跨职能敏捷团队的所有成员,这些团队具有测试人员的特殊专业知识,以确保以可持续的速度定期提供客户期望的业务价值。注重以人为本,快速迭代。
敏捷测试宣言
- 测试是个活动 胜过 测试是个阶段
- 预防缺陷 胜过 发现缺陷
- 做测试者 胜过 做检查者
- 帮助构建最好的系统 胜过 破坏系统
- 团队为质量负责 胜过 测试为质量负责
测试左移和测试右移
测试左移
- 测试左移,鼓励开发者自测,开发阶段尽早开展测试,使用测试驱动开发,行为驱动开发,强制在编码之前就充分的考虑测试,通过契约测试和mock机制,解耦服务间的依赖,提升测试速度和稳定性
- 测试右移,发布阶段和线上阶段进行测试,测试类型主要包括灰度测试,在监控测试类型主要包括灰度测试、在线拨测、在线监控
灰度测试指灰度发布过程中进行的测试
在线拨测是主动监控,持续高频的对被测系统常见功能进行测试;在线监控,以各种系统指标为核心进行被动监控,在真实环境快速发现问题,快速反馈并闭环问题。
完整的测试过程
测试策略
- 明确测试范围
- 指定测试计划
- 明确测试目标
- 组件测试团队
- 准备工具、环境
测试设计
测试执行
测试报告
测试策略
测试策略描述测试工程的总体方法和目标。描述目前在进行哪一阶段的测试以及每个阶段内在进行的测试种类(功能测试、性能测试、覆盖测试等) 以及测试人力安排等。
5W1H法
- why 测试目的
- what 测试内容及范围,测哪些,确定测试的重点
- when 测试的起止时间,考虑影响时间的因素
- where 相关文档的存放位置,缺陷的存放,环境地址
- who 测试人员的安排
- how 选用何种工具及方法进行测试
测试设计
什么是测试设计?
将软件需求转换为测试需求,并最终形成测试用例的过程
测试设计常用方法
- 等价类划分法 把所有可能的输入数据划分为若干个子集,之所以叫等价,每个子集都是有代表性的
- 边界值分析法 等价类的补充
- 因果图法 图解输入各种组合情况,从而设计测试用例的方法
测试执行类型
回归测试和新功能测试
测试报告内容范围
用于记录测试过程,总结各轮次的测试情况,分析测试数据,归纳测试工作中暴露的问题和遗留的风险,给出相应的测试建议以供后续项目参考
包含:
产品版本说明 测试环境描述 测试结论 关键风险 不对外发布特性【可选】
受限发布特性【可选】 产品全量质量评价 产品结束指标评价
缺陷分析 覆盖率分析 测试策略回顾【可选】 测试过程评估【可选】
测试结果统计数据 遗留问题清单 其他
API接口测试
是测试系统组件间接口的一种测试,主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口
API接口测试的重点:
- 检查接口参数传递的正确性
- 接口功能实现的正确性
- 输出结果的正确性
- 对各种异常情况的容错处理的完整性和合理性
分类:
- 单API接口测试:主要关注单个功能的各种取值和各个参数取值的组合
- 组合API接口测试:主要关注功能的完整性和正确性,一个业务逻辑,调用多个API实现
API接口测试三原则:
- 同源:设计、开发、测试三个活动基于同一源头开展,最好基于完备的API定义文档
- 独立测试:devops模式,创建mock服务使得环境解耦
- 100%自动化测试:在开发自测试阶段,开发人员时间有限,为提高转测效率应尽量高效使用自动化
API接口测试设计过程
- 接口梳理:参考接口设计文档、业务流图等,从功能流程、接口参数、数据遍历、组合交互4个方面开展功能测试分析
- 功能流程:分析业务功能流,从流程分支的角度分析设计
- 接口参数:从接口的参数组合进行分析和覆盖
- 数据遍历:通过合理取样,完成对接口数据的覆盖遍历
- 组合交互:多接口间交互影响,组合测试分析
- API接口参数分析:熟悉接口参数类型和每个参数的作用
- 业务场景梳理:业务场景分析、涉及的API组合、业务逻辑关联等
- 单接口测试设计:单接口单参数取值、单接口多参数组合、测试输入数据设计、返回检查点设计等
- 多接口组合场景设计:多接口组合调用,还原真实业务场景
API接口测试自动化流程
基于接口进行测试用例设计、建模,通过APItest实现接口封装调用,脚本开发,集成到流水线,实现单服务测试
如下步骤:
- 参考接口设计文件,进行接口分析
- 进行接口用例设计
- 对接口调用进行封装
- 开发接口用例脚本
- 执行接口自动化用例
AW(action Word,关键字)自动生成与共享–>自动化用例脚本快速调试–>自动化用例拖拽式开发
使用云测,devcloud测试工具APITest进行接口和接口级场景功能自动化测试。
性能测试
各行各业都面临性能问题,典型业务场景如线上大促用户打不开页面、热门直播视频卡顿、股票、游戏等
传统测试:
- 工具链复杂、从环境准备到测试执行到问题定位都非常耗时
- 人员要求较高,开源工具门槛很高,测试模型设计和测试用例编写需要对工具非常的熟悉,性能问题的定位更是需要测试人员有丰富的性能测试经验
总结:不够快、不会测、难定位,难以满足云化系统测试需求。
华为CPTS云测
- anywhere,支持多种协议,满足各行业
- anyone,低门槛免编码开展各层次性能测试
- anytime,即开即用,任何时候开展测试
契约测试
背景:微服务,被周边众多服务依赖和调用
契约测试(contract testing)
- consumer:service的使用者,向provider发起http请求来获取数据
- provider:service的提供者,接收consumer的http请求并返回数据
- contract:契约,定义在consumer和provider之间的交互方式
契约测试是一种针对外部服务的接口进行的测试,能够验证服务是否满足消费方期待的契约。该契约包含对输入和输出的数据结构的期望,性能以及并发性。
两种关键技术:
- 通过mock技术解除consumer对provider的依赖
- 通过契约测试保证provider的修改对consumer保持一致
mock测试:在测试过程中,对于某些不容易构造或不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
mock测试的目标:
- 服务解耦:通过mock解除对其他服务的依赖
- 分层测试:微服务接口测试,服务组集成测试,场景测试等
- 精准测试:通过mock技术精准模拟其他服务的返回
- mock自服务:将服务自己对外提供的接口mock化,从而达到与yaml(API接口定义文档)同源
webUI测试
场景:
- 冒烟测试(主业务流程)
- 新功能测试
- 回归测试
- 兼容性测试(一套测试脚本,多个浏览器执行)
- 完成手动测试无法完成的工作下班后无人值守测试
web自动化测试
selenium+testNG的webUI自动化框架
云测,一站式web全自动化测试,无需编码,手工操作一遍,脚本自动生成
软件可靠性
指的是软件在所规定的环境条件下和规定的时间内正确的完成任务的能力
可靠性测试方法主要有两种类型
- 基于操作剖面开展测试
- 基于故障注入开展测试
持续安全与审计
devops给安全带来的挑战
- devops提高了速度并扩张了规模,让安全团队面临新的挑战
- 安全从业人员必须将devops原则引入工具和工作流,以便跟上现代应用交付的步伐
- 安全解决方案应该使用devops所热衷的模块化、自动化和可扩展的技术进行构建和部署
- devops的概念,如标准化配置、不变的基础设施以及镜像系统等都有助于减轻安全问题的复杂性
- devops风格的透明性和问责制是确保在安全团队内进行有效合作的关键
安全最佳实践
- 安全控制尽可能的自动化和模块化
- 对所有的应用实施一个轻量化的威胁建模
- 通过IAM和基于角色的权限控制来实现职责分离
- 在开发过程中扫描开源软件
- 在开发过程中扫描漏洞和配置文件
- 扫描自定义的代码、应用和API
- 将脚本、模板作为敏感代码进行对待
- 衡量系统完整性并确保加载正确
操作全程可管控
- 风险可识别:预先定义风险高危操作行为,对于高危行为进行权限控制,限制低权限人员执行高危操作
- 操作可审计:记录操作人员的字符(telnet、SSH)、图形化操作(RDP\VNC),操作过程可回放,实现事后追溯和举证
- 安全策略:通过严格的策略限制可访问业务资源环境的人员,杜绝越权访问
资源操作可管控
- 风险可识别:SA-云服务基线管理,提供身份认证、访问控制、日志审计、数据安全、基础防护五方面的风险
- 操作可审计:云审计服务(cloud trace service,CTS),通过配置追踪器云审计服务可实现安全审计>问题定位>资源追踪
- 安全策略:统一身份认证(identity and access management,IAM);策略根据授权的精细程度,分为细粒度策略和role-based access control(RBAC)策略
态势感知SA
态势感知(situation awareness,SA)是可视化威胁检测和分析的平台,能检测超过20大类的云上安全风险,利用大数据分析技术,可对攻击事件、威胁告警和攻击源头进行分类统计和聚合分析,为用户呈现全局安全攻击态势。
云审计服务
日志审计模块是信息安全审计功能的核心必备组件,是企事业单位信息系统安全风险管控的重要组成部分。
云审计服务CTS是华为云安全解决方案中的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景
功能:
- 记录审计日志:支持记录用户通过管理控制台或API接口发起的操作,以及各服务内部自触发的操作
- 审计日志查询:支持在管理控制台对7天内操作记录按照事件来源、事件名称、操作类型、资源名称/ID、事件状态和时间范围等多个维度进行组合查询
- 审计日志转储:支持将审计日志周期性的转储到对象存储服务(object storage service,OBS)下的OBS桶,转储时会按照服务维度压缩审计日志为事件文件
- 事件文件加密:支持在转储过程中使用数据加密服务(data encryption workshop, DEW)中的密钥对事件文件加密
- 关键操作通知:支持在检测到部分关键操作时,使用消息通知服务(simple message notification,SMN)向用户发邮件、短信通知
云堡垒机CBH
目前支持云堡垒机实例和运维专家服务两大服务模块
云堡垒机实例对应一个独立运行的云堡垒机系统,云堡垒机系统具备核心系统运维和安全审计管控功能,符合安全合规的审查要求,为用户提供安全统一的运维管理平台
- 运维人员一次登录,可对多台资源进行一站式管理
- 实时记录所有运维操作和日志,便于审计
- 符合“网络安全法”等法律法规,满足合规性规范审查要求
运维云堡垒机体用用户管理、用户组管理、角色管理,认证方式支持账号和密码、USBKey和动态令牌多种令牌认证模式
云堡垒机提供访问控制策略、命令控制策略和改密策略三种方式
安全编码
C/C++案例:
- 字符串操作不当带来的风险
- 源字符串长度大于目标缓冲区
- 危险的堆操作及带来的风险
- 命令注入
- 不安全函数使用
java案例:
- mybatis使用不当导致SQL注入风险
- OS命令注入
- 字符串操作不当带来的风险
- 目录遍历攻击
- XML文件使用相关安全风险
危险的堆操作:
- 内存拷贝时未判断目标内存长度的有效性(目标内存过小)
- 内存申请完毕后未判断空指针(空指针引用)
- 使用已经释放的内存
- 调用不匹配的内存管理操作(new、delete与malloc、free混用)
- 重复释放内存(double free)
堆管理不当带来的风险
- 拒绝服务攻击:由于堆被破坏,可导致程序崩溃
- 执行任意代码:攻击者输入的恶意数据被当做指令执行
不安全函数如memcpy、strpy,linux系统都整理输出替换的安全函数集,如memcpy替换为memcpy_s,通常以_s结尾
漏洞
漏洞或脆弱性vulnerability,是指计算机系统系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制等面临威胁
常见漏洞三类:
- 主机漏洞:内存破坏类漏洞、CGI类漏洞、输入验证类漏洞、配置错误类漏洞、系统本地补丁、常见协议弱口令、木马病毒
- web漏洞:SQL注入攻击、跨站脚本、文件包含、远程代码执行、主流CMS漏洞
- 数据库漏洞:常见类型数据库漏洞,如Oracle、mysql等
- 经常听到的如SQL注入、XSS漏洞,是2种web应用上的漏洞;永恒之蓝漏洞,发生在windows系统上的越权漏洞,0-day漏洞,是已经被发现,而官方还没有相关补丁的漏洞;镜像漏洞,指docker这类容器化技术中镜像包含的漏洞
OWASP(open web application security project)非盈利组织,致力于应用软件的安全研究,OWASP Top10会统计当年10大web安全威胁
SQL注入
指将不受信任的数据作为命令或查询的一部分发送到解析器,会产生注入缺陷。攻击者的恶意数据可诱使解析器在没有适当授权的情况下执行非预期命令或访问数据
常见防御措施:
- 净化用户输入
- SQL语句使用参数化查询
- 利用存储过程动态拼接查询语句
- 对SQL语句采用预编译
跨站脚本
跨站脚本XSS是近年来最为流行的网络攻击方式之一,从本质上看实际是一种恶意代码执行的方式。主要原因在于网站对用户提交的数据过滤不严格。
- 反射型:跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码一般不存储到服务端
- 存储型:利用起来最方便的跨站类型,跨站代码存储于服务端(如数据库中)
- DOM型:om xss是基于dom文档对象类型,前端脚本通过dom动态修改页面,由于不与服务端交互,且代码可见,从前端获取dom中的数据在本地执行,常见的可操纵dom的对象:URL、location、referrer等
华为云租户业务防护方案
漏洞发现:漏洞扫描服务具有web网站扫描和主机扫描两种扫描能力
主机防护:企业主机安全服务(host security service, HSS)是一个用于保障主机整体安全的安全服务
容器防护:容器安全服务提供镜像漏洞管理、容器安全策略管理和容器逃逸检测功能
web防火墙:通过web应用防火墙,轻松应对各种web安全风险