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
原创粉丝点击