开发者测试进阶

——网易云课堂《开发者测试》课程笔记

这节,我给大家介绍大名鼎鼎的xUnit系列和我们的测试平台慕测。

xUnit几乎成为今天最为著名的面向开发者的测试框架,它是开源的自动化测试框架。最初它是面向Smalltalk及Sunit。我们知道,Smalltalk是一个非常著名的面向对象编程语言。Sunit是1998年由Kent Beck所开发。我们知道,Kent Beck是极限编程的创始人。所以这一点在整个xUnit系列得到非常重要的体现,帮助软件开发人员提高编码效率及质量。

而今天我们在所有的xUnit系列当中,最著名的可能是Junit。Junit是由Kent Beck和Erich Gamma共同联手开发。而Erich Gamma是设计模式的开创者之一,也是Eclipse的总设计师。所以由他们联手,开发一个非常流行非常好用的Junit,也是我们这门课的重点。

xUnit系列当中的框架有非常多,但他们几乎都遵循相同的架构,包括以下内容。

• Test runner,负责把代码和测试组装起来进行运行获得结果。 • Test case,测试用例,是指一些测试脚本,包括输入、断言等等各种处理,以进行对代码的测试。 • Test suite,测试套件是把这些测试用例组装起来,进行更加高效的有效的测试。 • Test fixture,主要是指测试的上下文及包括环境的一些封装,得到一个有效的测试结果。 • Test execution,测试执行是指控制整个测试用例执行的细节,模拟预期以完成测试任务。 • Test result formatter,是对测试结果的收集。 • Assertions,是对测试结果的分析和判断等等。 互联网上有非常丰富的xUnit的资源,有些是独立的xUnit系列网站,比如junit.org是Junit的一个资源网站。

Junit是一个非常强大的单元测试框架,但我们前面已经强调过关于单元测试的定义是可以扩展的。

Junit是有两个大名鼎鼎的人物创造的,也是所有xUnit系列当中最为成功的一个,我们这门课几乎所有的白盒测试都依赖于Junit来完成。

这节我们介绍Junit的进阶使用,我们主要包括以下内容,第一,断言,第二,参数化,第三,测试套件,第四,执行时限。

断言就是我们传统意义上的测试预言,预期输出。我们知道一个完整的测试用例通常至少包括测试数据和测试预言。也会包括一些测试环境信息我们共同封装成可用的一个测试脚本。而断言就是用来判断它的结果对还是不对的一个重要手段。

Junit提供丰富的断言机制,我们在assert后面进行各种变化。

常见的有判断:assertTrue/assertFalse,也就是判断这个条件是True or False。

同时,他提供.fail方法来进行失败的一些分析。我们还有一些等式的判断等等都在断言里面提供,对应同时提供一些对象的判别。

参数化,几乎是在所有的自动化测试中最为普遍的一个功能。今天他几乎在所有的自动化测试框架中都给以实现,我们通过一系列标注来实现自动化测试的参数化。

所谓参数化,是指我们在运行测试的脚本实现相同动作的同时要冠以不同的一个输入数据,那么这时候,我们把数据的测试和代码分离出来。以实现更好的扩展性。

测试套件是为了更有效的组织测试用例的一种方式,比如我们把不同的测试类组装起来同时运行。实现相同或者不同的一些测试目的。

执行时限也是我们在测试里面非常常见的一个功能。以防止在程序运行或者测试执行的时候过长,进入死循环等等。

我们进一步来讲解开发者测试所需要考虑的内容。主要包括,异常和Mock的处理。

异常是现代编程语言为了提高代码质量和健壮性而提供的一种机制,来处理在代码正常范围以内的意外。通常这一部分也需要测试。传统测试很难对异常部分的message进行判断。所以在Junit里面提供一个类似try/catch的机制来分析里面详细的一些状态信息。

而Mock是为了屏蔽外调的一个常用手段,也几乎在所有的自动化测试里面都提供类似的机制。

本文分享自微信公众号 - 贝克街的捉虫师(BSTester),作者:由 陈振宇 授课

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 软件测试的7个基本原则

    视频编/译自Guru99,国外的一个免费IT教育平台,很喜欢这种短而精的视频教学形式,分享给大家。本人英语水平有限,字幕是机器翻译后再修改的,不当之处敬请谅解。

    归根落叶
  • 系统测试概述

    http://mpvideo.qpic.cn/0bf24yaacaaag4advbno6bpfbzwdahtaaaia.f10002.mp4?dis_k=bfd...

    归根落叶
  • 什么是非功能测试?

    什么是非功能测试? http://mpvideo.qpic.cn/0bf2yaaacaaaeuaa44547jpfbqgdahaaaaia.f10002.mp4...

    归根落叶
  • 悄悄问女儿,圣僧美不美——记鹅厂测试人的一天

    久别重逢非昨日,万语千言不多谈。趁着年味还未散去,今天小编向您推送生活小文——记鹅厂测试人的一天,敬请欣赏 ^_^

    腾讯移动品质中心TMQ
  • 探索式测试基础系列——蜜月旅行

    探索式测试基础系列——蜜月旅行 读完上一篇《探索式测试基础系列–初恋的味道》,想必大家和探索测试一起回味过初恋的味道,那么接下来我们就和探索测试来一场蜜月旅行...

    腾讯移动品质中心TMQ
  • 【探索式测试基础系列】蜜月旅行

    读完上一篇《探索式测试基础系列——初恋的味道》,想必大家和探索测试一起回味过初恋的味道,那么接下来我们就和探索测试来一场蜜月旅行吧,在蜜月的旅途中我们能进一步增...

    腾讯移动品质中心TMQ
  • UI自动化测试最佳实践(二)

    这个规则的主要思想是,在所有目标浏览器上运行所有测试是多余和不必要的。我们需要清楚地了解通过在不同的浏览器上运行我们的测试将要实现什么。此操作的主要目的是执行浏...

    iTesting
  • 如何从测试自动化中实现价值

    如果几年前,质量管理部门都试图通过ROI指标来证明对测试的投资是合理的,那么现在情况发生了变化,是时候重新审视这个问题了。当实施连续测试,并且每天在不同的环境下...

    八音弦
  • 测试Leader应该做哪些事?

    2.根据需求,概要设计和开发计划编写项目总体测试计划,详细测试计划,测试大纲和测试文档结构表(测试计划 a.已上线产品维护以及需求变更 b.后期新项目的开发);

    小老鼠
  • 聊聊性能测试中的基准测试

    在性能测试中有一种测试类型叫做基准测试。这篇文章,就聊聊关于基准测试的一些事儿。。。

    写博客的老张

扫码关注云+社区

领取腾讯云代金券