• 1
  • 0
分享

1 引言

执行测试时离不开测试用例,测试用例辅佐执行测试,这就好比皇帝与宰相,需要的是相辅相成。

既然相辅相成,那是不是就可以高枕无忧了?

其则不然,任何事情都会有出错的可能,所以,测试用例也不列为。

我们今天来看看,测试用例是如何出错。

2 何为资源泄露

2.1 资源泄露定义

1、什么是资源泄露:

资源泄露是指程序在使用完自己获取的资源之后,没有及时释放。

资源泄露可能导致系统资源耗尽,造成程序不稳定甚至崩溃。

2、举例

内存是一种资源,内存泄露bug,常常是造成程序out of memory的罪恶魁首。

2.2 TestCase 中资源泄露

1、TestCase的稳定性

自动化测试的稳定性由多方面决定,包括被测软件的稳定性、测试环境的稳定性和测试用例自身的稳定性等。

资源泄漏,是造成测试用例自身不稳定的重要因素。

2、出现原因:

当用例执行结束时,如果没有删除用例执行过程中向数据库插入的数据,可能就会导致数据泄漏。

数据泄漏可能造成后续用例执行失败(当后续用例试图创建同样的数据时),也可能造成用例在重复执行一定次数之后突然失败(数据量超出一定限制时)。

3 避免资源泄露

3.1 如何避免资源泄露

在实际情况中,我们如何避免资源泄露,提升自动化用例稳定性?

很简单,只需要做一件事:在测试用例结束前,清理不必要的资源。

尤其是当用例出现异常情况(例如执行失败)时,我们要保证清理资源的操作得到执行。

这也就是说,我们在设计自动化框架或者写自动化脚本,最后都需要teardown 或者close的原因。

3.2 自动化执行顺序

1、自动化执行顺序

自动化用例的执行顺序不完全是线性的:初始化资源 -> 测试步骤 -> 释放资源,

而有一定的非线性特征:[Setup] 初始化资源 -> 测试步骤 -> [Teardown] 释放资源。

2、如下:

    setup     testsuit     teardown

    成功         成功             执行

    成功         失败             执行

    失败         不执行         不执行

通过上组示例,可以看出,无论测试步骤成功与否,teardown都一定会执行;

我们应当将释放资源的步骤放置在teardown中,从而确保资源在用例结束前得到释放。

注意到,基于setup、teardown的自动化用例编写方式,与通用编程语言(例如Java、Python、JS等)提供的try — catch – finally语法有异曲同工之妙。

3、try – catch – finally 执行 流程图

1.png

无论程序是否出现异常,finally模块都会执行。

因此,最佳编程实践告诉我们,通过将关闭资源的操作放置在finally语句块中,我们可以确保资源得到关闭,从而提升代码的健壮性。

我们可以看到,编写高质量代码与编写高质量测试用例其实是相通的。

灵活运用setup、teardown,像写clean code一样写自动化用例,是我们提升自动化测试稳定性的重要方法。

关注我,带你学习更多测试开发知识。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 注册功能测试:首先要分析需求,web端/APP端?账号的规则?1、账号为手机号:利用等价类边界值划分有效等价类和无效等价类;如图所示:功能测试用例:(1)输入已注册过的手机号获取验证码再次注册;(2)输入不符合手机号规则的号码获取验证码进行注册;(3)输入欠费的手机号获取验证码进行注册;(4)输入10位数字获取验证码进行注册;(5)输入12位数字获取验证码进行注册;(6)输入11位字母获取验证码进行注册;(7)输入半角字符获取验证码进行注册;(8)输入全角字符获取验证码进行注册;(9)不输入任何内容获取验证码点击注册;(10)输入空格获取验证码点击注册;(11)输入表情符号获取验证码点击注册;...
            13 13 3154
            分享
          •   大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。  测试大纲法适用于有多个窗口,每个窗口有多个动作,每个动作之间有相互的联系的场景,比如说一个手机壳定制功能。  下面我们来说一下步骤:  列提纲  将每个窗口及窗口的动作都列出来。  共有7个页面主页、手机品牌及型号选择页、手机壳外观选择页、提交成功页。  主页的动作有:在线客服、系统使用说明、开始定制。  手机品牌及型号选择页:提交、上一页、下一页。  手机壳外观选择页:提交、上一页、下一页。  提交成功页...
            0 0 1145
            分享
          •   北京时间6月1日早间消息,据报道,法国奢侈品巨头LVMH集团在巴黎的股价下跌2.6%,公司创始人贝尔纳·阿尔诺(BernardArnault)让出全球首富宝座,马斯克再次登顶。  阿尔诺现年74岁,今年二人争夺全球首富头衔,彼此交替,针锋相对。去年12月阿尔诺超越马斯克,因为当时通胀飙升,科技股低迷,奢侈品行业却拥有更强的抵抗力。LVMH旗下拥有LouisVuitton、Fendi和Hennessy等品牌。  现在经济呈现衰退迹象,投资者对奢侈品行业的信心开始下滑。自4月以来LVMH股价已经下跌10%,阿尔诺的净资产曾在一天之内蒸发110亿美元。特斯拉(203.93,2.77,1.38%)...
            0 0 966
            分享
          • 1、列表和元组的区别答:列表是动态的,长度可变,可以随意地增删改元素。列表的存储空间略大于元组,性能略逊于元组。元组是静态的,长度大小固定,不可以对元组元素进行增删改操作。元组对于列表更加轻量级,性能稍优。 测试面试宝典2、字典的原理答:python中的字典底层依靠哈希表(hash table)实现, 使用开放寻址法解决冲突。哈希表是key-value类型的数据结构, 可以理解为一个键值需要按照一定规则存放的数组, 而哈希函数就是这个规则。字典本质上是一个散列表(总有空白元素的数组, python至少保证1/3的数组是空的), 字典中的每个键都占用一个单元。一个单元分为两部分, 分别是对键的引...
            0 0 1639
            分享
          • 读者提问:如何区分前后端 BUG?阿常回答:这个问题我从三方面回答:1、为何要区分前后端 BUG;2、前后端 BUG 各有的特点;3、如何区分前后端 BUG。一、为何要区分前后端 BUG如果是大规模团队、多人开发的系统,测试不能明确到底是谁的 BUG,将 BUG 提交给了错误的开发人员,再加上人都有依赖心理,这个 BUG 就会被当皮球一样踢来踢去,极大增加了沟通成本,影响 BUG 修复时效。二、前后端 BUG 各有的特点前端 BUG:界面相关、布局相关、兼容性相关、交互相关。后端 BUG:业务逻辑相关、性能相关、数据相关、安全性相关。三、如何区分前后端 BUG一)经验法平时工作中多注意积累总结...
            0 0 1239
            分享
      • 51testing软件测试圈微信