测试数据生成(内容、方法、示例、工具)
作为测试人员,您可能会认为“设计测试用例已经够难了,所以为什么要关心像测试数据这样的小事”。本教程的目的是向您介绍测试数据及其相关性,并提供实用的技巧和策略来有效地生成测试数据。那么,让我们开始吧!
什么是软件测试中的测试数据?
软件测试中的测试数据是在测试执行期间传递给软件程序的输入。它表示在测试期间影响或受程序执行影响的数据。评估数据用于正测试以检查函数是否为给定输入生成预期结果,用于负测试以测试软件处理奇怪、异常或意外输入的能力。
在测试人员的日常工作中,经常使用“测试数据”这个词。他需要在运行测试用例时输入某些数据才能达到预期的结果。使用数据加载程序(负载测试)或评估应用程序的断点(压力测试)通常需要大量数据。此信息可能正确或不正确。简而言之,测试数据是在任何被测软件应用程序中正确执行测试用例和验证预期结果所必需的信息。
构建不良的测试数据可能无法测试所有可能影响产品质量的可行测试情况。
这有什么意义?
这个例子说明了对测试数据的需求。假设您想测试移动软件应用程序。要测试移动应用程序,您需要各种输入数据,例如各种格式的图像、支持和不支持格式的音乐文件、视频、联系人文件和各种电子邮件等。如果没有这些测试数据,测试者将无法继续测试,也不会得到预期的结果。
测试数据类型
测试数据可分为以下几类-
术语“空白文件”或“无数据”是指没有数据的文件,即没有程序输入,这确保应用程序处理异常并抛出适当的错误。
术语“有效的测试数据集”是指应用程序的有效或支持的文件。当作为输入提供时,它们应该产生预期的结果。
术语“无效的测试数据集”是指所有不受支持的文件格式,这些文件格式用于确保程序正确处理它们并用适当的错误消息提醒用户。
负载、性能和压力测试的大量测试数据无法在执行期间创建,必须在设置测试环境时准备好。例如,为了加载应用程序,测试人员可能需要多达10,000个不同格式的文件,这些文件可能是使用自动化脚本或现有测试数据生成的。
测试数据中包含具有所有可能的边界值排列的数据,以确保满足所有边界标准。例如,如果文本框可以容纳数字2-20,则输入2(最小值)和20(最大值)值。边界值是所有那些勉强适合程序管理的值;如果测试人员通过它们,应用程序就会中断。
理想的测试数据包含所有可能的数据排列,确保不会忽略任何严重缺陷。
什么是测试数据生成?为什么要在测试执行之前生成测试数据?
每个人都知道测试是一个创建和消耗大量数据的过程。测试中使用的数据指定了测试的开始环境,是测试人员更改程序的渠道。这是大多数功能测试的关键方面。
根据您的测试环境,您可能需要创建测试数据(大部分时间)或至少为您的测试用例选择合适的测试数据(如果测试数据已经生成)(测试数据是否已经创建)。
通常,测试数据是与要使用的测试用例同步准备的。
可能会生成测试数据-
手动
从生产环境到测试环境的大量数据传输
来自旧客户端系统的大量测试数据副本
自动化测试数据生成工具
通常应该在开始执行测试之前生成样本数据,否则很难处理测试数据管理。因为在许多测试环境中,生成测试数据需要大量的准备工作或非常耗时的测试环境设置。.此外,如果在测试执行阶段完成了测试数据的创建,则可能会超出测试期限。
下面介绍了多种测试类型,以及有关其测试数据需求的一些想法。
白盒测试的测试数据
在白盒测试中,测试数据管理是通过对要测试的代码的直接研究获得的。可以通过考虑以下事项来选择测试数据-
希望覆盖尽可能多的分支;可以开发测试数据,以便程序源代码中的所有分支至少测试一次
路径测试:程序源代码中的所有路径至少检查一次-可以完成测试数据准备以覆盖尽可能多的实例
负面API测试-
测试数据可能包括用于调用单独方法的不正确参数类型
测试数据可能包含用于调用程序方法的错误参数组合
性能测试的测试数据
性能测试是为了评估系统在特定工作负载下的反应速度而进行的测试。这种形式的测试的目的不是发现缺陷,而是减少瓶颈。
性能测试的一个基本特征是所使用的样本数据集合必须非常接近生产中使用的“真实”或“实时”数据。出现以下问题:“好吧,使用实际数据进行测试非常好,但我如何收集这些数据?”解决方案非常简单:来自最了解的人——消费者。他们可能能够提供一些他们已经拥有的数据,或者,如果他们没有现有的数据集合,他们可能会通过提供建议真实世界数据外观的评论来帮助您。
如果您在维护测试项目中,您可能会将数据从生产环境传输到测试台上。推荐的做法是在生成副本时匿名(打乱)敏感的客户数据,如社会安全号码、信用卡号码、银行详细信息等。
用于安全测试的测试数据
安全测试是检查信息系统是否保护数据免受有害意图的过程。为了充分评估软件安全性而需要开发的数据收集必须包含以下主题-
机密性-客户提供的所有信息均以最高机密性维护,不会与任何其他方共享。举一个简单的例子,如果应用程序使用SSL,您可以构建一组测试数据,以确认加密已成功完成。
完整性-确定系统提供的信息是否准确。要开发相关的测试数据,您可以从深入了解设计、代码、数据库和文件结构开始。
身份验证-表示建立用户身份的过程。测试数据可以构建为用户名和密码的独特组合,其目标是确保只有授权人员才能访问软件系统。
授权-告诉给定用户的权限是什么。测试数据可能包含用户、角色和动作的不同组合,以确认只有具有适当权限的用户才能执行特定操作。
黑盒测试的测试数据
在黑盒测试中,测试人员无法访问代码。您的功能测试用例可能包含满足这些要求的测试数据--
无数据-未提供数据时检查系统反应
有效数据-在提供有效测试数据时检查系统响应
Invaliddata-当提供InValid测试数据时检查系统响应
非法数据格式-当测试数据格式无效时检查系统反应
边界条件数据集-满足边界值条件的测试数据
等价分区数据集-验证您的等价分区的测试数据。
决策表数据集-验证您的决策表测试方法的测试数据
状态转换测试数据集-满足您的状态转换测试方法的测试数据
用例测试数据-与您的用例同步的测试数据。
注意-根据要测试的软件程序,您可以使用部分或全部上述测试数据创建
自动化测试数据生成工具
为了生成不同类型的数据,您可以使用各种自动化测试数据生成技术。以下是此类工具的一些示例-
DTM测试数据生成器是一个完全可配置的程序,它为数据库测试(性能测试、QA测试、负载测试或可用性测试)的原因创建数据、表(视图、流程等)。
Datatect是BannerSoftware的SQL数据生成器,以ASCII平面文件提供一系列真实的测试数据,或直接为Oracle、Sybase、SQLServer和Informix等RDBMS生成测试数据。
结论
总之,精心设计的测试数据可帮助您发现和纠正运行中的严重问题。必须在多阶段产品开发周期的每个步骤中重新评估所选择的测试数据。所以,要时刻关注它。