Robot Framework自动化测试基础实战课程 2
来源:互联网 发布:税务大开杀戒 知乎 编辑:程序博客网 时间:2024/06/06 01:23
知识点--自动化测试与Robot Framework
- 自动化测试的重要性
- 了解什么是 TDD、BDD、ATDD
- 为什么选择Robot Framework
自动化测试的重要性
互连网软件产品中测试的重要性不亚于开发,尤其当架构越复杂时,子系统之间的耦合跟交互常常是影响业务端使用者体验的关键因素,自动化测试也是 DevOps 工具链中不可或缺的一环,可以说没有自动测试就无法有效率维护代码品乃至于产品质量。
下图的软体测试金字塔解释了现代软体开发测试的大类别,越底层的类别应该涵盖越细致的粒度
Unit Tests / Component Tests (单元测试):
基本上需要测试代码级别的功能是否如预期,函式的输入输出是否有问题、容错处理以及灾难恢复等逻辑,python 原生的unittest就是个完整的单元测试框架。
Integration Tests (整合测试)
现在的软体日趋复杂,如 GUI、资料库、Web 应用过于关注单元测试可能带来额外工作负担,整合测试专注在系统各元件的沟通是否如预期,进而确定元件之间的 Protocol (协定)是否正确。
Acceptance Tests (验收测试)
验收测试是系统行为与功能面的规范,用来说明某一个 user story,系统在特定情况下应该完成什麽样功能,以及针对某一些输入,应该具备怎样的输出结果。更重要的是,是从使用者的角度来检视,系统是否能正常运作(是否符合使用者的期望)。 一般来说需要 PM、RD、QA 坐下来一起讨论制定。
UI Tests (用户介面测试)
以Web应用而言用户介面攸关产品成败,除了使用整合测试确认页面上的 DOM、JavaScripts 都正常运作,更重要的是要确保页面在不同的浏览器、不同电脑跟手机屏幕上都正常显示,这时候需要真正在浏览器上操作并反馈问题,当然这些过程也都可以自动化,如老牌的Selenium就是广泛使用的 Web 测试框架,而移动 APP 介面测试则有appium。
Manual Tests (手动测试)
上面谈论的四个测试方法都可以自动化,为什么依然需要手动测试呢?因为绝大部分的系统都无法达到 100% 的 Test Coverage (测试涵盖度),尤其是加上大幅度改版时某些特别关键的功能还是需要 QA 手动确认。
什么是 TDD、BDD、ATDD
TDD
Test Driven Development(测试驱动开发)有别于传统技术人员开发常常一头钻进去撰写代码,TDD 鼓励在接收到功能需求时优先思考如何测试,譬如网站登入功能必须区分用户是否曾经注册、登入失败显示的讯息、失败次数过多时(可能是攻击行为)的措施等,TDD 常常拿来跟 User Story(用户叙述)一起使用,经由整体思考测试流程后再投入程序开发,减少开发途中遗漏重要功能。
BDD
Behavior Driven Development (行为驱动开发)是一种敏捷软体开发的技术,它鼓励软体项目中的开发者、QA和非技术人员或商业参与者之间的协作。主要是从用户的需求出发,强调系统行为。BDD最初是由 Dan North 命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应,这篇文章是 Dan North 本人对于 BDD 提出的实例。
ATDD
Aceptance Test Driven Development (验收测试驱动开发)
TDD基本上只跟开发人员有关,如果对功能需求理解错误,还是会浪费不少时间资源,所以用户/PM、RD、QA需要坐下来一起讨论制定验收 Test Case (测试案例),ATDD的重点不在 How (如何完成功能),而是 What (要达到什么功能),更重要的是测试案例是使用者最后要验收的方式,所以使用者要看的懂,这也是本实验介绍 Robot Framework 的主因。
为什么选择 Robot Framework
Robot Framework是基于python的测试框架,基本上python能做到的事情它都能做到,既然如此为什么我们不直接使用python呢? 因为ATDD主要主角是没有技术经验的用户,怎么利用好懂的自然语言让用户可以参与到测试流程之中就是Robot Framework 的一大卖点。
Robot Framework 简单来说就是一个让你撰写 keyword driven script 的 framework. 根据你想做的事情引入不同的 library 之后,就能使用各种 keyword 拼凑完成的工作。如果没有现成的 library 或 keyword 就自己写即可。例如 python 的 HTTP requests:
import requestsurl = 'http://shiyanlou.com/'resp = requests.get(url)print resp.status_code # 200
改用Robot Framework就可直接引入 RequestsLibrary 里面的关键字完成一样的步骤:
*** Settings ***Library RequestsLibrary*** Test Cases ***Post request Create Session session http://shiyanlou.com ${resp} = Get Request alias=my_session uri=/ Log To Console ${resp.status_code}
关键字撰写出来的语法十分易懂,下面是个测试网站登入页的测试案例,执行后 Robot Framework 会打开浏览器并且输入帐号密码,预期会看到登入成功后的欢迎页,最后把浏览器关掉恢复原始状态,是不是很简单呢? 后面的实验会开始实作 Robot Framework ,发掘更多好用功能!
*** Test Cases ***Valid Login Open Browser To Login Page Input Username ${username} Input Password ${password} Push Summit Button Welcome Page Should Be Open [Teardown] Close Browser
- Robot Framework自动化测试基础实战课程 2
- Robot Framework自动化测试基础实战课程 1
- Robot Framework自动化测试基础实战课程 3
- Robot Framework自动化测试基础实战课程 4
- Robot Framework自动化测试
- Robot Framework自动化测试
- 自动化测试框架Robot Framework
- Robot Framework自动化测试-初探
- robot framework 接口自动化测试
- 自动化测试平台:Robot Framework 初探
- 自动化测试robot framework学习笔记
- jenkins集成robot framework做自动化测试
- Robot Framework自动化测试---分层思想
- Robot Framework自动化测试 ---文档分享
- 自动化测试平台 Robot Framework 快速入门
- Robot Framework自动化测试框架之我见
- Robot Framework自动化测试(一)
- Robot Framework自动化测试环境搭建
- undefined reference to `clock_gettime' 链接错误问题解决
- H5实战(六):固定边栏滚动特效
- 2017.9.21
- 京东到家库存系统架构设计
- [iOS]网络之NSURLSession的数据传输
- Robot Framework自动化测试基础实战课程 2
- 进程
- hjr技巧-h5手机页面实现自适应布局
- OpenStack 'API Microversion' 实现原理
- java的深拷贝与浅拷贝
- Java中包装类型的作用
- 鸡蛋究竟宜不宜生吃?这个问题居然需要超级计算机来算?
- EBS-自动获取/创建CCID
- 【推荐】微服务大型分布式企业框架 Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis