干货满满!测试的时候如何构造各种测试数据?

干货满满!测试的时候如何构造各种测试数据?,第1张

功能测试的测试数据,一般是 手工构造

如果需要构造大量数据,要分析测试需求,准确清晰的分析之后,再对输入的测试数据进行分析。

一方面,我们要求测试数据要尽可能的与生产环境的数据相一致,尽可能是有意义的数据,可以通过分析使用现有系统的数据或根据业务特点来构造颂扰数据。

另一方面,我们要求测试数据输入要满足输入限制规则,尽可能覆盖到满足规则的不同类型的数据。

生成测试数据的方法:

①编写sql脚本(存储过程)在数据库端直接生成;

②编写程序代码生成(实际上也是要写sql);

③使用批量数据生成工具(DataFactory、PL/SQL Developer、TOAD等都可以);

④使用工具录制业务参数化之后长时间运行来生成。

不过野悉旦使用sql来做是最灵活的,尤其是涉及到业务数据相互转换需要充分考虑到内部处理逻辑及约束时。

我们做软件测试的时候,经常需要页面有点数据,特别是涉及到一些数据统计的测试用例的时候,更是需要源源不断的测试数据让前端页面生成对应的报表测试统计的数据正确性。如果我们通过手工的方式 *** 作业务流程来实现数据的构造的话,少量数据或许还可以,数据一多就会让测试效率直线降低了。

所以作为测试,我们经常需要用一些工具来模拟业务流程,发送一些流量,从而构造出前端页面显示的数据。

那么,可以构造出流量的工具其实很多:

比如接口测试的时候,Jmeter 工具就可以通过 CSV 的方式,读取文件进行数据构造;

比如压力测试的时候,Loadrunner,Jmeter 或者 avalanche 和 Ixia 这些工具,都可以实现不同数量级的数据构造,来实现对产品持续的压力;

比如还可以通过 SQL 脚本来直接在数据库里添加数据,构造海量数据;

......

当然,这些工具和方法,每一个都可以列为一个专业测试领域,比如接口测试、性能测试、大数据测试等;我们今天要讲的陆让方法,是相对来说比较轻量级的一些工具,大家比较容易掌握,也比较容易上手,可以直接通过 Linux 命令发送流量,简单便捷迅速!

你好!测试程序负责给编写好的程序提供样本数据,自动收集运行结果,并根据结果作出反馈。

测试程序可以单独写,也可以做为模块整合在源程序中。

像我数敬纤们熟知的debug语句,就是测试的最简单例子。在没有“断电查看”这一功能之前,为了监测程序每步执行后变量的结果,往往加入一些输出关键变量的语句。

例如以下程序:

#incldue<iostream>

using namespace std

#define DEBUG

int main(){

int n

#ifdef DEBUG

cout<<n<<endl

#endif

n = 3

cout<<n<<endl

return 0

}

此处DEBUG的作用是薯仿查看未初始化的变量n的值。通常会显示-89******00(0xcccccccc).

一般这样的语句还会出现在对指针进行 *** 作之后,用debug语句输出指针所指向内存的内容等。

这只是测试程序的一个功能。正如前面提到的,测试程序应该提供数据以检测程序的健壮性和安全性,以及用海量数据对执行效率进行检验等。

测试数据的选择有以下几个要点,分别检测程序的不同特性:

@ 尽可能包括输入集合内所有可能出现的元素,观察程序能否给出正确结果。(Authenticity)

比如:有一个程序输入给定迷宫平面图,要测试稿庆出最短路径长度。那么输入的迷宫应该包括各种可能:有通路的和没有通路的,有死胡同的和没有的,有回路的(避免搜索时出现死循环),出口在左上角,右上角的等,都要考虑进去。程序应该对每种情况都做出正确的反应。

@ 注意测试极端情况以及临界情况。(Security)

这是为了检测程序的健壮性,用户不可避免地会做出不合法的举动,程序需要有足够的防护强度来应对这些意外。

比如:如果编写了一个简易的计算器,那么一定要检查除数为0的情况;一个程序的功能是将一片文档的内容链接到另一个文档内,那么一定要检查自己链接自己的情况;等等。

@ 注意输入数据的规模以及随机性。(Efficiency)

衡量程序效率的标准应该考虑大规模数据下的表现。数据需要有足够的随机性以避免意外情况。

比如:比较几种不同排序算法的效率时,选用的数据应该是随机顺序的。在顺序数据的情况下:冒泡算法显然比快排还快,但这是偶然情况。

@ 如果有可能,还可以检测程序的通用性及扩展性(Versatility &Compatibility)

好的程序应该易于扩展,可利用价值高。大多数软件都在不停的打补丁,而不是推倒重写。

测试程序一般无法直接检测这两种特性。然而,测试中出现的错误有时可以帮助我们提升程序的质量。

我曾经写过一个类似于美图秀秀的图像处理程序,C++写的,相当粗糙。输入还要用命令行控制。当时我用各种图片进行了测试,包括纯色的,有明显背景色调的,以及完全混乱的噪声点。前面的图片表现都很好,但处理最后一张图片时程序抛出了异常——经过检验发现,我的处理程序是基于24位图片写的,而最后一张图片是32位的。类似的情况还有32位系统和64位系统下程序运行的问题等,在此就不赘述了。

要编写测试程序,一般分为两个模块:数据生成和结果检测。

测试程序的第一部分将生成的数据写入一个文件,让程序读取文件并运行后,再将结果写入另一个文件,之后由测试程序的第二部分比对输出文件和标准答案。

对于检测健壮性的测试程序,只需有第一部分即可,待检测程序在处理数据时如果发生异常,就根据结果作相应的修改。

测试效率的程序,可以在待检程序内加入计时模块。具体写法如下:

#include<ctime>

#define CHECK_TIME

int main(){

//....intput

#ifdef CHECK_TIME

clock t start = clock()

#endif

#ifdef CHECK_TIME

cout <<"Execution Time: " <<clock() - start <<" ms." <<endl

#endif

嗯,就是这么多啦,希望对你有帮助!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12559403.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存