是否有人知道script/class(最好是在PHP中)会解析给定的MySQL table's structure,然后x number of rows根据字段类型填充随机测试数据?
我从来没有见过或听说过这样的事情,并且我想在自己写一篇文章之前先检查一下.
在我的公司,我们在Java Web应用程序中使用JUnit进行了越来越多的集成测试.每个测试都使用一些特定的外部XML文件,用测试所需的数据填充数据库.问题是:
面对这个问题,我开始考虑使用自己的系统CRUD为每个测试生成测试数据.在每次测试开始时,我会运行一些方法来保存测试所需的数据.在我看来,它将解决以下所有3个问题:
但是,对我来说,缺乏开始这种方法的经验和知识.问题是:这个解决方案有效吗?这种方法会导致其他问题吗?我可以在文献中找到这种方法吗?对列出的问题有更好的解决方案吗?
java integration-testing automated-tests test-data data-driven
我目前正在研究推荐系统,并想知道其他研究人员如何获取或生成测试数据来评估系统的性能?
我有这样一堂课:
public class ViewModel
{
public IPagination<Data> List { get; set; } // interface!
public SearchFilter SearchFilter { get; set; }
public string Test { get; set; }
}
public class SearchFilter
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
应在IPagination接口周围创建动态代理,代理应填充测试数据.现在可以让AutoFixture创建一个ViewModel类型的实例吗?请注意,我只知道运行时的类型(typeof(ViewModel)).
到现在为止我知道我可以这样做:
var context = new SpecimenContext(fixture.Compose());
var value = context.Resolve(new SeededRequest(typeof(ViewModel), null))
Run Code Online (Sandbox Code Playgroud) 我已经编写了一个函数库,根据ISO/IEC 7813解析了磁道上的磁条(信用卡,ID等)中的磁道1和磁道2的数据.我希望严格测试这个磁带库的一些有效(但显然不是真正的信用卡')追踪2个数据.我只能在网上找到一些示例字符串.我的代码与这些示例完美配合,但我喜欢测试不同的卡发行商等,以确保代码真的可以用于生产.有任何想法吗?我知道http://www.getcreditcardnumbers.com/提供测试信用卡号码,类似于track2数据的东西是理想的.
包含CC号,有效期和其他信息的标准音轨2字符串如下所示:; 1111222233334444 = 9912101xxxxxxxxxxxxx?
我正在尝试创建一组新的测试来测试我正在处理的遗留网站.该站点在后端使用数据库.我打算使用SpecFlow和Selenium,但是我对处理清理数据的最佳方法感到有点困惑.
目前,我有一组数据库备份,其中包含一组样本数据,我会在每次测试运行之前将其恢复.然而,这很麻烦,因此我只想在发布之前对关键测试运行执行此操作,并使持续集成运行在两者之间的同一数据库上运行.
目前我有大量的测试,如下所示:
Secenario: Test Item Creation
Given I am logged in
When I create an item with a unique name
Then an item exists with the unique name
Run Code Online (Sandbox Code Playgroud)
when步骤使用GUID来确保名称是唯一的,然后步骤可以通过模块变量访问它以检查它是否存在.
就像我说的那样,我有很多类似的测试,我在同一个数据库上多次运行它们,所以测试系统充满了物品,这会减慢搜索速度等.
我的问题是处理这个问题的最佳方法是什么?我应该在测试中创建另一个步骤,再次删除该项目,如下所示:
Secenario: Test Item Creation
Given I am logged in
When I create an item with a unique name
Then an item exists with the unique name
Then delete the item with the unique name
Run Code Online (Sandbox Code Playgroud)
或者我的测试框架应该以某种方式处理这个问题?如果是这样,人们做什么?鉴于SpecFlow步骤的全局性,我认为如果具有父子关系的多个项目可能成为问题,则以正确的顺序获取拆除步骤.
如何在shell脚本中生成随机数字或字符填充的随机文件?我还想指定文件的大小.
我有一个带InnoDB表的MySQL数据库,其中很多都有外键.
我打算编写一个脚本来填充带有测试数据(10-20k行或更多行)的表格,但我想我应该问一下是否已经存在可以根据字段类型生成测试数据但确保关系完整性的内容同一时间?
我已经看过并已经在generatedata.com上下载了脚本,但据我所知,它很聪明但它不会读取数据库中的表并根据它找到的内容生成数据 - 你必须手动完成所有操作.
我们使用构建器模式生成测试数据.这些域对象之间存在关系.我们的功能测试要求保留这些对象.
想想这个模型:
域模型http://i34.tinypic.com/21mg1gn.png
如果我想要一个普通的CI实例 aNew().c().build()
如果我希望它坚持我做 aNew().c().saveIn(session)
如果我想要一个具有已知BI的C实例 aNew().c().with(b).build()
嗯,你明白了.我的问题是,如果我想坚持一个C,它应该坚持它的B吗?或者它应该在手前坚持下去?如果我想要一个合理的默认B呢?如果我想坚持D怎么样?它应该坚持A,B,C吗?
当然,真实的系统要复杂得多(有时带有循环引用).我正在寻找持久复杂测试数据的最佳实践.
编辑:看起来我遇到了语言障碍,我的母语不是英语,所以我很抱歉默默无闻.以下是更多信息:
PS.请不要犹豫,询问更多信息,因为我一直在努力寻找可能的最佳实践.我最接近的是:
这样可行,但我的蜘蛛感觉刺痛,我认为我做错了,因为测试代码会涉及逻辑,如果没有测试,处理起来会非常复杂.
编辑2:我会尽力让自己更清楚.当我编写/运行我的单元和一些集成测试时我没有问题,因为测试数据没有持久化,它存在于内存中.
但是当我试图坚持我的测试数据时,如果没有它的关系,hibernate将不会让我保存一个实体.
我怎样才能克服这个问题?
我正在寻找生成一些数据库测试数据,特别是包含人名的表列.为了更好地指示索引在基于名称的搜索方面的工作情况,我希望尽可能接近真实世界名称及其真实的频率分布,例如,许多不同的名称,其频率分布在某些幂律分布上.
理想情况下,我正在寻找一个免费提供的数据文件,其名称后跟每个名称的单个频率值(或等效概率).
基于盎格鲁撒克逊人的名字会很好,尽管来自其他文化的名字也会有用.
test-data ×10
testing ×5
database ×3
mysql ×2
autofixture ×1
c# ×1
credit-card ×1
data-driven ×1
dataset ×1
java ×1
mahout ×1
persistence ×1
php ×1
rdbms ×1
scenarios ×1
scripting ×1
shell ×1
specflow ×1
system ×1
teardown ×1