测试数据生成(是什么、如何操作、示例、工具)
作为测试人员,你可能会想到:“设计测试用例已经够难了,为什么还要在意像测试数据这样的小事?”本指南将概述测试数据,解释其重要性,并向你展示一些有效的创建方法。
软件测试中测试数据是什么意思?
“测试数据”是指在测试过程中输入软件应用程序的实际信息。它代表在测试期间影响或受软件执行影响的信息。正向测试使用测试数据来确保函数为指定的输入提供预期结果,而负向测试使用测试数据来评估程序对异常情况的响应。
如果可用测试数据未涵盖所有可行的测试用例,则程序的质量可能会受到影响。
这有什么重要性?
测试数据至关重要,此示例说明了原因。假设你对移动应用程序测试感兴趣。在测试移动应用程序时,重要的是使用各种输入数据,包括不同文件格式的图片、受支持和不受支持格式的音乐文件、视频、联系人文件和示例邮件。如果没有这些数据,测试人员将无法继续进行测试,也无法获得预期的结果。
测试数据类型
有多种方法可以对测试数据进行分类。
使用“空白文件”或“无数据”可以确保应用程序能够处理错误并抛出正确的错误,因为程序没有获得任何可处理的信息。
“有效的测试数据集”是可以被软件读取和处理的一组文件。作为输入使用时,它们应该按预期工作。
“无效的测试数据集”是一组不受支持的文件格式,旨在验证应用程序是否可以读取它们,并在遇到错误时显示准确的错误消息。
负载、性能和压力测试需要大量的数据,这些数据不能在执行期间动态生成,而必须提前准备。例如,要加载应用程序,测试人员可能需要多达 10,000 个唯一格式的文件,其中任何一个文件都可能是由自动化脚本或预先存在的测试数据生成的。
测试数据旨在通过包含具有所有可能的边界值组合的数据来确保满足所有边界条件。例如,对于接受 2 到 20 之间的整数的文本框,输入 2(最小值)和 20(最大值)。这些值是软件可以处理的限制,如果测试人员超过这些限制,程序将崩溃。
理想的测试数据集将包含所有可能的组合数据,从而不可能错过任何重大缺陷。
“测试数据生成”究竟是什么?为什么在测试执行之前创建测试数据很重要。
众所周知,测试会生成和使用大量数据。测试的初始条件由测试中使用的数据定义,测试人员通过此数据修改程序。它在大多数功能测试中扮演着重要角色。
根据测试环境的性质,你可能需要从头开始开发测试数据(这很可能是这种情况),或者只选择适合你的测试用例的测试数据。
通常,测试数据是根据将要使用的测试用例创建的。
测试数据可以生成:
手动
从生产环境大量转移数据到测试环境
从旧客户端系统大量复制测试数据
自动化测试数据生成工具
如果不首先创建样本数据,就无法管理测试数据,这应该在实际测试执行开始之前完成。因为许多测试环境需要广泛的预处理过程或冗长的测试环境配置才能生成测试数据。此外,如果你等到测试执行阶段才创建必要的测试数据,则有可能会超出时间安排。
下面提供了各种测试类型及其各自的数据需求的一些推测。
白盒测试的测试数据
白盒测试中的测试数据管理是从对源代码本身的深入分析中获得的。选择测试数据时,请考虑以下事项:
最好测试程序源代码中尽可能多的路径,因此可以创建测试数据来确保已探索代码中的每条路径。
测试每条可能的程序执行路径,并且可以优化测试数据以涵盖尽可能多的用例。
负面 API 测试:
可能使用了不正确的逻辑类型来调用测试数据中的多个方法。
在测试过程中,可能使用了不正确的参数组合来调用程序的方法。
性能测试的测试数据
性能测试的目的是确定系统从施加的负载中恢复的速度。这种测试并非旨在查找错误,而是旨在消除瓶颈。
性能测试的一个关键方面是,用于模拟生产条件的数据应尽可能接近实际生产数据。好的,使用真实数据进行测试很棒,但是我该如何获得一些数据呢?这是一个自然出现的问题。答案直接来自最了解这个问题的人:客户。他们或许能够与你分享他们已经拥有的数据,如果他们没有,他们或许能够通过评论真实世界的数据如果存在会是什么样子来帮助你。
在维护测试项目中,通常的做法是将生产数据复制到测试平台。敏感的客户信息(例如社会安全号码、信用卡号码、银行账户详细信息等)应在复制前进行匿名化(混淆)。
安全测试的测试数据
测试信息系统中的安全漏洞称为渗透测试。为了对软件安全进行彻底评估,有必要收集以下数据:
所有客户信息都将被严格保密,绝不会泄露给第三方。例如,如果你的应用程序使用 SSL 加密数据,则可以创建一组测试数据来验证加密是否正确执行。
检查系统的可靠性以确保其完整性。要创建有用的测试数据,首先需要检查体系结构、程序、数据源和文件。
“身份验证”是指用于验证用户声明身份的步骤。测试数据的目的是确保只有授权用户才能访问系统,测试数据可以创建为用户名和密码的唯一组合。
授权过程会传达用户拥有的权限。为了确保只有拥有必要权限的用户才能执行特定活动,测试数据可能包括用户、角色和活动的唯一组合。
黑盒测试的测试数据
在执行黑盒测试时,测试人员无权访问源代码。你可以在功能测试用例中使用满足以下条件的测试数据:
验证系统在没有输入时如何响应
验证系统对已知良好测试数据的反应
无效测试数据 验证系统对无效测试数据的反应
验证在给出不正确数据时测试系统会发生什么。
满足边界值条件的测试数据 - 边界条件数据集
验证等价划分中的等价划分数据集的测试数据。
决策表数据集中验证决策表测试策略的测试数据。
状态转换测试数据集中用于状态转换测试策略的测试数据。
与你的用例相对应的用于测试目的的数据。
自动生成测试数据的工具
您可以使用多种自动化测试数据生成工具来生成各种类型的数据。下面列出了一些此类工具的示例:
DTM测试数据生成器是一个高度可定制的应用程序,可以生成数据和表(视图、过程等),这对于数据库测试(性能测试、质量保证测试、负载测试或可用性测试)非常有益。
Banner Software的Datatect是一个SQL数据生成器,它可以创建各种格式的测试数据,包括ASCII平面文件和各种关系数据库管理系统(RDBMS)的原生格式,包括Oracle、Sybase、SQL Server和Informix。
结论
高质量的测试数据对于识别和修复操作中的根本问题至关重要。在多阶段产品开发周期的每个阶段,都应重新评估测试数据的选择。因此,请确保定期监控它。