自动化测试设计与敏捷实践_第1页
自动化测试设计与敏捷实践_第2页
自动化测试设计与敏捷实践_第3页
自动化测试设计与敏捷实践_第4页
自动化测试设计与敏捷实践_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动化测试设计与敏捷实践一、初识自动化测试概念介绍自动化测试范围敏捷测试自动化的原则自动化测试的好处自动化测试的局限内容提要概念介绍测试自动化测试自动化是使用特殊的软件来控制测试用例的执行,并比较期望结果与实际结果。测试自动化就是任何使用工具辅助测试的做法。测试自动化扩大了测试人员的能力范围。自动化测试范围范围越大,越有信心端到端场景测试用户界面测试速度更快,成本更低,缺陷更易定位/单独的功能

服务范围服务测试(API层面)单独的函数或⽅法单元测试自动化测试的好处缩短测试周期降低测试成本提⾼资源利⽤率可以更频繁的测试,提⾼了覆盖率更⽅便重现软件缺陷扩展测试⼯程师的能⼒范围降低新⼈参与实际测试⼯作的⻔槛自动化测试的局限前期投⼊⼤后期维护开销⼤不适⽤于业务规则复杂易变的测试不适⽤于涉及⼈体感官和物理交互相关的测试敏捷测试自动化的原则分配时间用于测试自动化对测试生命周期自动化让自动化测试成为一种团队行为持续开发和测试自动化代码持续回归测试用敏捷方式开发测试工具/框架二、自动化测试的设计与实现自动化测试的设计与实现流程自动化测试之前的考虑常见自动化测试方式自动化测试工具内容提要自动化测试的设计与实现流程·选择适合自动化的测试用例·设计测试方法·选择测试工具·选择合适的用例编写方式·监控方式·收集统计数据·测试结果通知·管理测试记录·问题管理搭建环境执行用例调试分析·申请机器·执行方式实现用例

·调度与触·辅助调试方式设计用例

资源·管理测试环境监控过程记录数据发用例执行·录制与重放·准备测试数据做自动化测试之前的考虑适合自动化的测试不适合自动化的测试单调、重复的测试工作可用性测试单元测试与组件测试API接口测试探索性测试一次性测试负载压力测试长时间不间断测试GUI底层的测试GUI测试?不可测的遗留系统功能和界面不稳定特别复杂的业务逻辑自动化测试之前的考虑测试人员的技能水平需要的软硬件资源自动化方案的实现时间能否提高测试有效性、发现更多问题维护自动化测试的开销组织层面的支持On实际案例:GUI控件自动化回归测试1•ꢀ

每次回归测试产生441(147*3)个执行记录⾃动化时间成本度量352400300200100024277•ꢀ

基于经验估算:自动化一个执行记录需要0.9小时,手动执行一次需要0.17小时20212752-233•

准备自动化测试的时间:441*0.9=397小时,ꢀ-98123动测试时间:441*0.17=75小时-100-200-300-400-248-323•ꢀ

忽略提交bug与重现问题的时间回归测试次数常见自动化测试编写方式测试脚本

(Test

Script)数据驱动

(Data-Driven)关键字驱动

(Key-Driven)行为驱动

(Behavior-driven)混合模式

(Hybrid-Driven)常见自动化测试方式测试脚本×Test

ScriptTestxxx(){settimeout30spawnrlogin-luserhostnameexpect"Password:"{send”password\r"}sleep2expect"#"send"mkdir-pdir1/dir2\r"expect"#”send"echo\$\?\r"send"echo\$\?\r"expect"0"expect"#"send"rm-rfdir1\r"expect"#“send"exit\r"expecteofexit}常见自动化测试方式数据驱动×Test

Restful

APIs-test:#createentity-name:"Basicget"-url:"/api/person/"-test:#createentity-name:"Getsingleperson"-url:"/api/person/1/"-test:#createentity-name:"Getsingleperson"-url:"/api/person/1/"-method:'DELETE'-test:#createentitybyPUT-name:"Create/updateperson"-url:"/api/person/1/"-method:"PUT"-body:'{"first_name":"Gaius","id":1,"last_name":"Baltar","login":"gbaltar"}'-headers:{'Content-Type':'application/json'}-test:#createentitybyPOST-name:"Createperson"-url:"/api/person/"-method:"POST"-body:'{"first_name":"Willim","last_name":"Adama","login":"theadmiral"}'-headers:{Content-Type:application/json}常见自动化测试方式关键字驱动×***Settings

***LibraryResource

%{ENV_ROBOT_PATH}/resource/resource.robotTestTimeout

1minutesShellCommandSuiteTeardown

GUILogout***Variables

***${ENV_HOST_URL}

***Test

Cases

***TerminalTestIssueShelllistVersionShouldMatchRegexp

%{Shell_OUTPUT}

HostVersionGuiTestGUILoginViewHostPage……常见自动化测试方式行为驱动×#

mthread_server_static.feature@multiFeature:MultithreadedHTTPServerBackground:Giventherootpathis"http://localhost:8088"Scenario:GetthetestpageWhenIvisit"/test.html"ThenIshouldsee"Atestpage"Scenario:GettheLorempageWhenIvisit"/lorem.html"ThenIshouldsee"Quisquesitametcongueelit”Scenario:CheckCGIWhenIvisit"webclock"ThenIshouldsee"00+0000"实际案例:CC标准测试开始#1:#2:#3:#4:完全⼿动运⾏⼯作量:3

*6

*50=900⼩时⼩时⼩时⼩时部署环境编写少量⼯具执行用例:

3*4*45

=540⼯作量获取测试结果⼯具集成,数据参数化2*4*40=320⼯作量:成功与历史结果对比失败90%⽤例基于关键字模型⾃动化上传测试结果1*4*40=160⼯作量:结束选择自动化测试工具功能性可⽤性灵活性性价⽐可维护性兼容性三、自动化测试的管理与调度测试资源的管理为测试提供数据测试用例的管理内容提要测试用例的组合方式测试用例的执行方式测试执行过程的录制与重放测试执行的触发机制与调度模式自动化测试与持续集成内容提要测试资源的管理测试资源分时段分集群调度物理机按需分配服务器虚拟机/容器的管理方式虚拟设备租租用物理设备移动设备/PC测试资源的管理一个测试集群的组成控制机:发起或停止自动化测试。监测机:监控测试过程与结果,检查测试机健康状况。测试机:虚拟机、执行测试用例。数据存储:存储测试数据、脚本、环境配置。共享存储:存储测试过程产生的log和dump。测试环境的管理环境配置版本管理测试环境监控重要的环境配置文件参数化环境配置通过自动化工具布署测试环境为测试提供数据避免在测试脚本中将数据硬编码为每次测试新建、销毁数据录制工具脚本程序使用内存数据库(文件系统)或者SSD加速测试利用专用测试工具/包自动生成数据的方式调用产品接口生成数据Fuzzing(半随机化)数据库为测试提供数据⽣成测试⽂件正规表达式⽣成ODM利⽤

技术从NoSQL获取数据测试用例的管理Testcase测试单个功能点或接口TestsuiteTag测试一系列功能点或接口测试用例的粒度Workload测试系统某部分组,规模较大TagGroup/Category对Workload按重要性、组件、部门分类实际案例:自动化回归测试工具·测试用例分类管理·环境配置参数化·利用虚机运行回归测试集·事件/定时调度测试行为·实时监控测试进度·及时收集第一手问题数据(FDDC)测试用例的组合方式组合自动化测试用例的好处·快速生成新的用例·回归测试排序,早发现问题·动态调整测试对象和测试强度·提高覆盖率组合方式·顺序组合·标签选取(Exclude/Include)·根据分组与标签组合·普通随机·随机组合·带权值的随机·混合方式测试用例的组合方式同时利用Lotteryscheduling算法和Tag组合用例测试用例集成模板×#TemplateforUSSComponent#SetupJobs&Commands[[SETUPBEGIN]]SUBMIT’SETUP.JCL(SETUP)'SUBMIT’SETUP.JCL(WORKLOAD)'[[SETUPEND]]ꢀꢀ#Environmentparameters[[ENVBEGIN]]SUBMIT’SETUP.JCL(SETENV)‘

[[ENV:LOWMEM]]SUBMIT’SETUP.JCL(SETENV)'

[[ENV:64bit]]SUBMIT‘SETUP.JCL(ISETENV)’

[[ENV:32bit]][[ENVEND]]ꢀ#Testsuite[[TESTSUITEBEGIN]]KERNEL

[[TICKETS:50]][[TAG:UNIX]]FILESYS

[[TICKETS:10]][[TAG:64bit]]……[[TESTSUITEEND]]测试用例的执行方式·一次执行一个用例:常用于单元测试与功能测试、确保100%的成功率·一次执行多个用例:压力测试\负载测试\并行测试·多核执行:性能测试·分布式执行工具(Ex.SeleniumGrid)·分布式执行

·Docker容器集群·测试云实际案例:并行执行GUI回归测试并行执行GUI回归测试,加快反馈周期SeleniumGrid多机环境:单机环境:TEST

ServerSeleniumServerSeleniumGridSeleniumNodeSeleniumNodeSeleniumNodeHeadlessSelenium测试执行过程的录制与重放录制重放方式·日志录制与重放·打点记录过程·网络流量或者IO行为的录制与重放·将测试环境与录制脚本绑定·自动化测试脚本!=录制/重放工具带来的好处·模拟用户行为·收集数据做Mock·重现问题·验证补丁测试执行的触发机制与调度模式人工触发·代码提交之后执行单元测试·构建之后执行功能测试·自定义事件事件触发·执行一次(Once)无人值守定时触发·重复执行·按日、周、工作日(Daily,Weekly,WeekDays)·重复次数·根据配置文件设定多种调度方式·支持ISO8601(时间日期表示标准)测试执行的触发机制与调度模式调度工具CrontabChronos(分布式环境)CI工具,如Jenkins编程实现调度实际案例:TestHub通过模板跨团队共享测试集根据标签和权重随机生成测试负载读取测试log重放测试过程用于执行长时间运行的回归测试通过定时任务向多台机器提交测试任务以模板的方式管理测试用例和测试环境实际案例:TestHub自动化测试与持续集成·保证快速反馈·高覆盖率的单元测试和接口测试·适当引入自动化验收测试·防止引入不稳定的测试用例·设立提交阶段失败标准WatchCodeꢀ·运行自动化测试集之前检查环境·运用虚拟化技术(虚机/容器)并行测试·持续调整集成测试的方式BuildꢀProductꢀPublishꢀResultsꢀ·需要持续做压力测试和负载测试?RunꢀTestsꢀ四、自动化的监控与记录测试过程监控测试结果通知辅助调试手段内容提要测试记录的管理问题管理测试过程监控结果监控内容·测试用例运行状态·被测系统运行状态·底层操作系统/中间件/硬件运行状态监控相关技术·测试用例运行状态:框架提供支持,在测试脚本里加入Hook·系统状态监控:Zabbix/Nagios以及各种Agentless工具·日志收集与分析:ELK(ElasticSearch+Logstash+Kibana)·Metric收集与显示:InfluxDB+Grafana测试过程监控InfluxDB+Grafana“We

found

a

BUG

this

week

that

literally

would

have

taken

usweeks

or

months

to

discover

if

we

didn’t

have

Grafana”——BretCopeland,

Team

Lead,StackOverflow测试脚本×#!/bin/shTIMESTAMP=`date+%s`METRIC=metric.test.thingVALUE=10echo$METRIC$VALUE

$TIMESTAMP

|ncHOST_OR_IP_OF_INFLUXDB_SERVER2003……InfluxDBꢀ测试过程监控操作记录Runlog人工记录自动记录-机器人程序自动收集监控数据测试结果通知Dashboard网页聊天机器人邮件测试结果移动端设备实际案例:zMobile运用云计算与移动技术实际案例:zRobot&Gust•ꢀ

更友好的人机对话界面•ꢀ

更直观的信息集成方式•ꢀ

执行自动化脚本,返回测试结果•ꢀ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论