51Testing软件测试论坛

标题: 如何构建大量的测试数据?(10-04-26)(获奖名单已公布) [打印本页]

作者: 默默巫    时间: 2010-4-26 17:42
标题: 如何构建大量的测试数据?(10-04-26)(获奖名单已公布)
在测试中我们经常需要大量的历史数据或者测试用的数据来验证系统能否正确的执行,少量的数据我们可以通过手工来实现,但是如果我们需要构建大量的(几年的历史数据)测试数据,应该如何处理呢?

如果你也有问题想提出来和大家一起讨论,请点击此处>>
说不定下期讨论的问题就是由你提出的哦,请快快参与吧!



获奖名单
奖项
获奖名单
奖励
答案链接
二等奖
shwonder
300论坛积分
16#

作者: asrb007    时间: 2010-4-26 19:03
标题: 这个应该看情况而讨论吧
如果在数据库里面,可以写存储过程吧,循环插入数据
作者: applejuzi    时间: 2010-4-26 19:25
写脚本,用自动化实现了。
作者: msnshow    时间: 2010-4-26 21:47
方式有很多种,例如:
1、直接使用SQL语句插入
2、使用程序批量插入
3、使用数据生成工具直接生成(如datafactory等)
4、使用压力测试脚本生成(如LR脚本等)

当然最快的应该来说还是使用数据生成工具了
作者: zxh    时间: 2010-4-27 09:55
个人觉得用自动化脚本生成,例如做性能测试,录制LR脚本
作者: dumb_dora    时间: 2010-4-27 13:23
之前自己也问过这个问题,无非就是楼上说的办法了
作者: b45993e    时间: 2010-4-27 16:50
顶下了,关注。
作者: pacey_peng    时间: 2010-4-28 13:22
学习!
作者: rolei    时间: 2010-4-28 15:30
标题: 测试数据构建
1、测试数据分析:根据实际的测试需要,对测试数据进行分类。
区分正常测试用例数据和异常测试用例数据,并以此将测试数据的各项组成划分,并根据实际情况对各测试项数据进行组合。(数据项等价类划分)

2、测试数据样例:根据实际的测试数据分析,构建所要的测试数据样例。
所构建的测试数据样例可以作为功能测试所需的测试数据。
构建测试数据样例时需要重点考虑测试数据的格式组成(数据库、XML、文本等)

3、生成大量测试数据
根据测试数据样例和测试数据格式要求,通过技术手段生成指定数量的测试数据。
存储过程是针对数据库生成大批量测试数据最好的方法。
文本格式或XML格式的数据文件,可以使用现成的工具或是自己编写工具来实现。

[ 本帖最后由 rolei 于 2010-4-30 14:38 编辑 ]
作者: maxwell12    时间: 2010-4-29 10:33
标题: 构建有效的测试数据
首先,分析测试数据的需求.每个测试环节对测试数据的需求.需要什么类型的数据,需要多少数量级的数据,哪些环节需要非正常数据.

其次,收集以往开发同类项目的历史数据情报,对其分析,确定是否适合本次测试的需求.或自己根据测试数据需求建立测试数据摸版.

最后,测试数据的实现.向数据库导入数据或生成需求的数据类.生成方式手工或自动化生成都有.用哪种方式实现都可以.无论是脚本文件或数据库作为数据的存储源都可以互相对导数据,很方便就能实现.
作者: liusiyan    时间: 2010-4-29 10:56
根据需要,使用相应工具都可以实现的
作者: xiaobao0614    时间: 2010-4-29 14:16
#9
说的非常的全面
作者: 梧桐落叶    时间: 2010-4-29 14:16
顶chimera
作者: june.diny    时间: 2010-4-29 14:35
原帖由 maxwell12 于 2010-4-29 10:33 发表
首先,分析测试数据的需求.每个测试环节对测试数据的需求.需要什么类型的数据,需要多少数量级的数据,哪些环节需要非正常数据.

其次,收集以往开发同类项目的历史数据情报,对其分析,确定是否适合本次测试的需求.或自 ...


支持这位仁兄的观点。 应该先分析需要什么类型的测试数据,确定需求,再选择工具
作者: shwonder    时间: 2010-5-1 23:51
既然提到这个话题,就一定有构建大量测试数据的需求——我们团队常把这一类测试叫做“大数据量测试”。从过去的项目情况来看,我们仅有大概20%项目需要这做方面的测试,且侧重于产品。扯远了。
       开篇说到,构造海量数据来验证系统是否能正确执行。怎样才算正确的执行呢?定义一个清晰的、可测量的标准很重要。在进行大数据量测试之前,首先对测试需求做清晰的分析。我们一般很少从功能评价的角度进行这项测试,更多的时候是考查系统性能和效率。假设一个本科院校的学籍管理系统,主要是用来管理学生的,学生在系统中的生命周期一般是4年,根据学校现有的在校生数以及未来五年每年的招生数据,基本上可以分析出需要构造的各个学年下的学生数。这样一来,原来在单个学期能正确执行的功能(功能、性能、效率都满足需求,这个需求可以作为大数据量测试时的参考标准),在处理4个学年的数据(8个学期)时,各个业务的功能、服务器性能、业务执行效率(如查询、统计、数据挖掘等)还能满足需求吗?根据业务特点,数据在系统中总是有一个相对确定的生命周期的,我们需要构造的往往是这些全生命周期的数据,注意不同的业务模块生成的数据量是不一样的。没有必要去构造不符合实际情况,数量级过大的测试数据。
       对测试需求做了准确清晰的分析之后,接下来对输入的测试数据进行分析。一方面,我们要求测试数据要尽可能的与生产环境数据一致,尽可能是有意义的数据,可以通过分析使用现有系统的数据或根据业务特点构造数据。另一方面,我们要求测试数据输入要满足输入限制规则,尽可能覆盖到满足规则的不同类型的数据。我们遇到最多的还是在数据库中构造的测试数据,也包括磁盘文件(附件)。
       最后一步就是生成测试数据了。生成测试数据的方法无外乎编写sql脚本(存储过程)在数据库端直接生成、编写程序代码生成(实际上也是要写sql)、使用批量数据生成工具(DataFactory、PL/SQL Developer、TOAD等都可以)、使用工具录制业务参数化之后长时间运行来生成(如4楼的仁兄所说)。不过个人觉得使用sql来做是最灵活的,尤其是涉及到业务数据相互转换需要充分考虑到内部处理逻辑及约束时。
       补充一点,大数据量测试同时也是检测服务器性能的好时机(例如执行数据转换、统计分析的业务过程),包括磁盘的I/O性能、内存、CPU等,甚至也是对数据增长预测的一个验证。
作者: mxmeng    时间: 2010-5-5 16:18
我们一般是把线上的数据导出来,再导入到测试库中
作者: blackn72    时间: 2010-5-6 10:30
要先分析一下业务,明确哪里需要进行大数据量的测试。比如哪里的数据量增长快,哪里的数据操作频繁。
然后选取最容易造成压力的数据输入。一般采用SQL就可以了,如果有相互关联,最好调用存储过程。要更接近真实情况的话,就是采用模拟程序,模拟大量用户进行操作。
作者: soulresisdent    时间: 2010-5-7 13:46
标题: 瞬联,中软
借大哥一席之地,我想问个问题,瞬联跟中软哪个更好的,让我过去都是做手机测试的,谢谢
作者: 测试王国    时间: 2010-5-7 14:11
关注下。
作者: 测试王国    时间: 2010-5-7 14:11
关注下。
作者: blackseven    时间: 2010-5-7 17:56
其实在项目测试时,如果涉及到了大数据量的测试,一般情况下,直接从客户那里获得客户的原始数据肯定是第一选择.但一般的时候客户那里可能并没有原始数据.所以我们就需要自己创造大数据量数据.创造的方法其实无外乎楼上诸位提到过的SQL脚本,程序代码,造数工具等.大数量造数的难度其实在于我们创造的数据与客户实际的数据的存在较大的差距,从而造成测试结果的偏差.
    如果创造和客户实际数据尽可能符合的数据呢,其实可以分析客户的或者实际的能够获得的部分数据.我们在分析时,主要是分析在我们要造的数据中哪些值或者列是关键的,是必须正确的或者符合一定的要求的,哪些是必须随机的,哪些是必须等于固定值的,哪些是必填的,而哪些是完全可以由我们自由创造的.而这些信息的获得一部分是从客户那边获得,一部分要靠我们对测试软件业务的了解和经验的积累.所以造数简单,但是造出符合实际,符合测试要求的数难.
    其实在分析过后,我们会发现许多的数时有规律的或者是固定的,有些我们根本不需要去管的,从而能够减少我们的工作量.
    以上拙见,请各位批评
作者: tiankong912    时间: 2010-5-9 16:49
生成测试数据的方法无外乎编写sql脚本(存储过程)在数据库端直接生成、编写程序代码生成(实际上也是要写sql)、使用批量数据生成工具(DataFactory、PL/SQL Developer、TOAD等都可以)、使用工具录制业务参数化之后长时间运行来生成(如4楼的仁兄所说)。不过个人觉得使用sql来做是最灵活的,尤其是涉及到业务数据相互转换需要充分考虑到内部处理逻辑及约束时。
作者: dennyqiang    时间: 2010-5-10 10:16
大家都提到使用sql是比较灵活的,这一点实在难以认同。如果直接使用SQL语句产生数据(数据生成工具,程序级SQL,存储过程等)是没有办法完成业务逻辑的处理的,这样产生出来的数据是没有太多实用价值的,最多只能充量,而不具有测试性。

好的方法当然还是写代码,只不过不是SQL代码,而是(业务逻辑+多线程),我们产生数据的代码必须要实现业务逻辑,商业流程,多线程当然只是为了生成时速度更快,不是这里主要考虑的。而怎么样可以完全按照业务逻辑来生成数据呢,有两种方法:如果熟悉软件开发的代码或者API,直接调用封装好的API实现。或者使用诸如LoadRunner一类的性能测试工具从客户端的角度开发测试脚本,以此产生大量数据,这样产生出来的数据才是正确的数据,才有质量。
作者: liaoxj    时间: 2010-5-10 13:22
大量数据的构建,在我测试中一般应用在性能测试和报表功能测试中。构建数据我们重点考考虑“量”(数据多少)还是“质”(量多的同时,又考虑复杂的逻辑关系)

如果考虑以量为主可以使用一工具(datafactory,QTP,lr)和存诸过程
如果考虑质与量并重,有两种方法:
    最好可以获取实际项目(客户)的正式数据。但是往往又会碰到版本问题,那这必须版本进行改造,如表结构不一致。客户的数据是sql,现在是oralce那么进行相应的转换。
    如果没有或者没法获取实际项目(客户)的正式数据,那么使用工具时参数化时,要详细考虑表之间的关系以及业务关系,如果表的主外键,业务逻辑状态,数据值正常值,跨月,跨年情况,已达到近似(客户)的正式数据。
作者: changyi_lfx    时间: 2010-5-10 15:25
同意楼上分为量和质的处理方式。
作者: changyi_lfx    时间: 2010-5-10 15:35
首先根据系统特点,区分被测程序到底是需要“量”的数据或是“质”的数据,从而策划不同书数据填充处理方式,
如果是做行业软件,每个行业都有一些特殊之处,要注意搜集并汇总,这样干满几年,不管是什么数据,对你来说都是很轻松的事情。所以要注意搜集和整理。
1、量:
   如果当前数据只是对量要求,那么就可以使用sql、程序、某些软件自动生成批量的书记即可;
2、质:
   需要根据行业特点,当前系统数据库结构、系统用户提出的特殊要求模拟出易测、易发现问题的数据。
作者: mcfnhm    时间: 2010-5-10 16:14
应自动化工具 写脚本
作者: liuchunyanli    时间: 2010-5-11 11:29
这个问题没营养
作者: dlh2002    时间: 2010-6-25 16:13
别YY了,居然用sql去做,估计大家都没做过吧,在大型的系统这个是行不通的,最简单最有效的方法是用API,
作者: steven_xia    时间: 2010-6-25 17:09
学习了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2