深聊测开领域之:Testcase中资源泄露

简介: 深聊测开领域之:Testcase中资源泄露

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、如表

image.png


image.png

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

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


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


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

image.png


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

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


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

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


目录
相关文章
|
2月前
|
中间件 测试技术 持续交付
FastAPI测试秘籍:如何通过细致的测试策略确保你的代码在真实世界的挑战面前保持正确和稳定?
【8月更文挑战第31天】在软件开发中,测试至关重要,尤其在动态语言如Python中。FastAPI不仅简化了Web应用开发,还提供了强大的测试工具。通过`unittest`框架和Starlette测试客户端,开发者可以轻松编写和执行测试用例,确保每个功能按预期工作。本文将详细介绍如何设置测试环境、编写基础和高级测试用例,并探讨中间件和依赖项测试。此外,还将介绍如何在持续集成环境中自动化测试,确保代码质量和稳定性。利用FastAPI的测试工具,你可以构建出高效可靠的Web应用。
30 0
|
存储 Java Python
PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍
PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍
102 0
|
缓存 运维 前端开发
深聊性能测试,从入门到放弃之:通过这几点获取性能需求,BOSS再也不担心用户投诉了。
深聊性能测试,从入门到放弃之:通过这几点获取性能需求,BOSS再也不担心用户投诉了。
203 0
|
设计模式 编解码 移动开发
深聊自动化测试之:小鱼整理21条避坑指南,让你完美运行自动化
深聊自动化测试之:小鱼整理21条避坑指南,让你完美运行自动化
139 0
|
存储 Python
热饭的测开成果盘点第二十二期:wqrfnium自动维护库
本期介绍的是一个组件,身为python的第三方库,已经被pypi收录,且国内镜像源也早已复制。也就是说可以通过pip install 来下载。这个组件包括:wqrfnium 和 wqrfnium_app 。他们都是基于python/selenium/appium的一个可以自动维护ui元素,抵抗ui元素定位变化的组件。
热饭的测开成果盘点第二十二期:wqrfnium自动维护库
|
存储 Unix 程序员
程序员的自白:我如何让失败项目起死回生,变成价值 270 亿美元的应用程序?
Slack 是颇受欢迎的企业沟通和协作工具,目前有 63 万企业在使用。2014 年初拿到了 4000 多万美元融资之后又完成 1.2 亿美元的融资,其估值达到了 11.2 亿美元。2015 年 2 月,slack 成立一周年日活跃用户就达到 50 万人。2019 年 6 月 20 日,创业公司 Slack 正式登陆纽交所。 这个应用起源于一个几乎已经宣告失败的游戏项目,发展成今天一家价值 270 亿美元的公司实属不易。今天,我们来听听 Flicr 与 Slack 的联合创始人 Stewart Butterfield 的轶闻趣事。
134 0
程序员的自白:我如何让失败项目起死回生,变成价值 270 亿美元的应用程序?
|
数据采集 安全 搜索推荐
程序人生 - 不要触犯法律,编写安全爬虫的几点建议
程序人生 - 不要触犯法律,编写安全爬虫的几点建议
132 0
技术分享 | 被测项目需求你理解到位了么?
技术分享 | 被测项目需求你理解到位了么?
|
Java Spring
9条消除if...else的锦囊妙计,助你写出更优雅的代码(下)
9条消除if...else的锦囊妙计,助你写出更优雅的代码(下)

相关实验场景

更多