解决白盒、mock、性能、自动化测试脚本中的数据自动生成问题——Spock-Genesis

文章目录


前言

程序的基本功能就是通过输入一组数据,得出我们期望的输出。我们测试的目标就是通过设计一组或者多组数据,得出期望的数据,通过次来验证程序功能是否满足需求。根据测试类型的分类,其中功能测试(人工)执行都是手工输入,耗时耗力。白盒、mock、性能、自动化都是通过书写脚本进行测试程序的自动执行。但是面临多组数据或者批量数据的时候,我们只能事先设计批量数据,因此脚本中就会出现大批自定义变量或者读取文本,影响脚本的运行空间以及美观易读。最重要的是这种方式也是有限度的,程序变更后修改量大且麻烦的很。因此今天给大家推荐一款数据生成器——Spock-Genesis。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Spock-Genesis是什么?

主要是使用 Spock 测试框架进行基于属性测试的惰性数据生​​成器.
提供测试数据,特别是在尝试测试广泛的输入时,如果不是不可能手工完成的话,也是很乏味的。生成输入允许进行更彻底的测试,而无需显著增加工作量。在Spock中,数据驱动测试可以使用任何Iterable提供的数据。Spock Genesis提供了一系列从Generator扩展而来的类来满足这个接口。在可能的情况下,生成器是惰性的和无限的。

二、使用步骤

1.添加Spock-Genesis依赖

<dependency>
	<groupId>com.nagternal</groupId>
	<artifactId>spock-genesis</artifactId>
	<version>0.6.0</version>
	<scope>test</scope>
</dependency>

由于Spock-Genesis是依赖于spock框架,因此需要spock框架的支持

		<dependency>
			<groupId>org.spockframework</groupId>
			<artifactId>spock-core</artifactId>
			<version>2.0-groovy-3.0</version>
		</dependency>

然而groovy语言的应用能够更加方便

		<dependency>
			<groupId>org.codehaus.groovy</groupId>
			<artifactId>groovy-all</artifactId>
			<version>3.0.7</version>
			<type>pom</type>
		</dependency>

2.示例

被测试对象Person

static class Person {
      int id
      String name
      String title
      Date birthDate
      char gender
}

测试脚本

    def 'pogo'() {
        expect:
        person instanceof Person
        person.gender in ['M', 'F', 'T', 'U'].collect { it as char }
        person.id > 199
        person.id < 10001
        person.birthDate >= Date.parse('MM/dd/yyyy', '01/01/1940')
        person.birthDate <= new Date()

        where:
        person << Gen.type(Person,
                id: Gen.integer(200..10000),
                name: Gen.string(~/[A-Z][a-z]+( [A-Z][a-z]+)?/),
                birthDate: Gen.date(Date.parse('MM/dd/yyyy'
                       ), new Date()),
                title: Gen.these('', null).then(Gen.any('Dr.', 'Mr.',
                        'Ms.', 'Mrs.')),
                gender: Gen.character('MFTU')
        ).take(3)
    }

——Java.Testing.with.Spock 示例


总结

该文章主要是让大家看一下Spock-Genesis的基本实例,后续会分批介绍一下各种数据类型如何自动生成随机数据。

上一篇:【Spock-Genesis】字符串自动生成——Gen.string


下一篇:PCB 网页WebODB++与Genesis图形同步实现方法