Unit testing RPG(或其他ILE语言)中的自动测试

Unit testing RPG(或其他ILE语言)中的自动测试,unit-testing,integration-testing,ibm-midrange,automated-tests,rpgle,Unit Testing,Integration Testing,Ibm Midrange,Automated Tests,Rpgle,我们有相当多的RPG程序,我们做了很多自动化测试,但我们还没有很好地结合这两个。有没有好的方法可以在RPG程序或其他ILE程序上进行自动测试 我知道一个名为的项目,但它的最后一次更新是在2007年。然而,它似乎仍在使用,因为目前正在进行一些工作,包括它 你对这些有什么经验?还有什么我遗漏的东西吗,比如谷歌找不到的一些很棒的软件工具 我对单元测试以及完整项目的集成测试感兴趣。任何与工具集成的东西都是受欢迎的。如果它涉及IBM的Rational Developer或System i Navigato

我们有相当多的RPG程序,我们做了很多自动化测试,但我们还没有很好地结合这两个。有没有好的方法可以在RPG程序或其他ILE程序上进行自动测试

我知道一个名为的项目,但它的最后一次更新是在2007年。然而,它似乎仍在使用,因为目前正在进行一些工作,包括它

你对这些有什么经验?还有什么我遗漏的东西吗,比如谷歌找不到的一些很棒的软件工具

我对单元测试以及完整项目的集成测试感兴趣。任何与工具集成的东西都是受欢迎的。如果它涉及IBM的Rational Developer或System i Navigator,也没关系


我们正在为我们的RPG开发过程创建新的测试计划的早期阶段,我不希望它从一开始就朝着错误的方向发展。

你可能已经知道“测试”这个主题有多广泛了。IBM有一个名为RationalFunctionTester的产品(我没有使用过),我自己使用的是RPGUnit。不,它最近没有更新,但它仍然拥有测试子过程所需的所有部分,就像测试Java方法一样


坦率地说,这是最简单的部分。最困难的部分是创建一个测试数据库,并使其保持足够的最新状态,以代表生产数据库。Rodin有一些数据库工具,但我没有这些工具的预算,所以我或多或少都是手工操作。我在CL程序中使用了许多SQL语句来提取生产数据,因此我可以保持引用完整性。然后,我使用更多的SQL来添加我的异常测试用例——那些在生产数据中不存在但需要测试的关系。然后我制作一个完整的测试数据库副本作为参考点。然后我运行测试用例,它将更新测试数据库。我已经编写了一个自行开发的CMPPFM实用程序,它允许我将参考数据库与现在修改的测试数据库进行比较。这将显示更改,但仍需要大量人工来检查比较,以确保正确的行得到正确的更新。我还没有做更多的工作来实现自动化。一个重要的警告是,有些栏目您并不关心,比如更改时间戳。

我们使用了RPGUNIT,发现它是一个很好的工作基础,但最终扩展了很多,以配合我们的更改管理系统和工作方式。我已经写过我们在这里尝试过的东西:

可能更大的问题是。。。你有单元测试的架构吗?这种语言似乎积极鼓励以一种使良好的封装变得困难的方式编写程序(即,在一个文件中包含从数据库访问到屏幕输出的所有内容的程序)。@X-Zero如果您选择这样做,您可以seper@x-零ILE模块化可以提供封装,即使使用不同的语言,合二为一program@WarrenT-是的,可以。但是你必须积极地编写你的程序来利用这个事实。传统似乎规定所有东西都要放在一个文件中,而且考虑到一些企业对变革的抵制程度。对于ILE模块,您必须小心,否则过程可能会突然出现(在这里,有一些程序没有任何包含或任何内容,它完全由激活组处理,这意味着您必须搜索整个代码库才能找到方法…)“……你必须积极地编写你的程序来利用这一事实……”这适用于所有语言、所有平台。程序员的错误不是语言的错误。。。它完全由激活组处理…“这不太准确。有时,程序员(见上文)会通过拷贝绑定过程,并通过CRTPGM MODULE()进行绑定,而不是通过引用(服务程序)和绑定目录进行绑定。程序员经常选择一种命名约定,这使得很难知道给定过程来自哪个源成员。糟糕的程序员谢谢你到目前为止的洞察力。所以这是有用的,这是最好的部分。从功能列表来看,Functional Tester看起来没有任何RPG或ILE功能,它只有“其他部分”来组织测试(我不认为我们会为该部分购买一些东西)。因为这是一个很好的答案,而且它看起来没有什么功能,所以我会得到更多的信息,我还是接受吧…谢谢你让我们参与你的旅程。看来你成功了!一旦我们决定花时间做真正的RPG测试,这将是很有帮助的。