请选择 进入手机版 | 继续访问电脑版
查看: 1181|回复: 1

[分享] Unit Test随手测试

[复制链接]

8

主题

11

帖子

146

积分

超级版主

Rank: 8Rank: 8

积分
146
QQ
发表于 2019-7-25 12:35:12 | 显示全部楼层 |阅读模式
本帖最后由 scott.chiu 于 2019-7-25 11:05 编辑

1、概念
Unit Test是面向业务逻辑的测试,在KB中主要针对procedure、DataProvider 以及Bussiness Transaction。
Unit Test属于开发过程中的自我测试,也就是说一般在代码写完后即由开发人员进行自测。——对于比较重要的或者复杂的业务逻辑,需要编写批量化、重复的输入数据,丢给后台的自动化测试。
Unit Test属于技术层面的工作,在GeneXus中主要是进行结果比较测试,一般测试下列项目:
A、数据返回值对比,包括数据接口、数据库接口、内部函数处理等等的预期返回值与实际返回值对比;
B、Variable数据类型以及精度异常测试,——注意此类错误导致测试过程没有返回值直接报错
C、内部控制或循环的测试
D、运行时长的测试

2、测试框架
在GeneXus IDE中,如果你通过菜单“新建”-->“对象”-->“Unit Test”也可以建立一个单元测试对象,然而这中方法建立的仅仅是一个特殊点的procedure而已
实际上,GeneXus提供的是一个完整的自动化测试框架,就Unit Test而言,他包括:测试对象、数据结构、批量可重复输入/输出/异常信息、测试执行/断言、性能统计。
我们提倡在KB知识库中通过右键点击测试对象生成测试框架,如下图:


提示信息
正在处理文件'C:\Program Files (x86)\GeneXus\GeneXus16\Packages\TestFiles\ExternalObject.xpz'...
检查导入引用...完成
正在读取导入文件对象...完成
创建备份...
导入External Object 'UITest'...成功
文件C:\Program Files (x86)\GeneXus\GeneXus16\Packages\TestFiles\ExternalObject.xpz加载成功。
为了很容易地使用多个数据集运行生成的单元测试'strConcatUnitTest' ,创建了一个SDT (strConcatUnitTestSDT)和一个Data Provider (strConcatUnitTestData)
重新加载Unit Test 'strConcatUnitTest'...已完成

当然,如果某个Procedure中包含的业务逻辑非常简单——属于“一眼看穿”的那种——我们不建议用测试框架

3、创建了Unit Test之后,需要做的事情修改Data中的代码,可以重复录入。在本次的样例中,data文件名为strConcatUnitTestData。我们试着修改一下:
strConcatUnitTestSDT
{
        str1 = "GeneXus"
        str2 = "China"
        ExpectedconcatResult = "GeneXus China"
        ErrorMsgconcatResult = "错误!请检查程序或则输入参数!"
}
// Add more rows to test using different data
然后试着运行一下测试。
结果:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

11

帖子

146

积分

超级版主

Rank: 8Rank: 8

积分
146
QQ
 楼主| 发表于 2019-7-25 13:46:07 | 显示全部楼层
4、批量数据测试
考虑多种场景,输入数据如下:
strConcatUnitTestSDT
{
str1 = "GeneXus"
str2 = "China"
ExpectedconcatResult = "GeneXus China"
ErrorMsgconcatResult = "错误!请检查程序或则输入参数!"
}
//测试一下中文组词
strConcatUnitTestSDT
{
str1 = "中国"
str2 = "上海"
ExpectedconcatResult = "中国 上海"
ErrorMsgconcatResult = "错误!请检查程序或则输入参数!"
}
strConcatUnitTestSDT
{
str1 = "123456"
str2 = "China"
ExpectedconcatResult = "0123456 China"
ErrorMsgconcatResult = "错误!请检查程序或则输入参数!"
}

输出结果:
多条测试数据中有一项测试错误,则整个测试结果标记为错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|GeneXus中国

GMT+8, 2019-10-14 12:53 , Processed in 0.064986 second(s), 20 queries .

 

© 2019 GeneXus中国

快速回复 返回顶部 返回列表