Автоматизированное тестирование в RPG (или других языках ILE)

у нас тут довольно много RPG-программ, и мы проводим много автоматизированного тестирования, но пока не очень хорошо совмещаем эти два. Существуют ли хорошие способы автоматического тестирования программ RPG или любых других программ ILE, если уж на то пошло?

Я знаю о проекте под названием RPGUnit, но последнее его обновление датировано 2007 годом. все еще используется, так как RPG Next Gen в настоящее время работает над его включением.

Какой у вас опыт с ними? Есть ли что-то еще, что мне не хватает, например, какой-то отличный программный инструмент, который Google не может найти?

Я заинтересован в модульном тестировании, а также в интеграционном тестировании полных проектов. Приветствуется все, что интегрируется с такими инструментами, как jenkins. Если речь идет о IBM Rational Developer или System i Navigator, это тоже нормально.

Мы находимся на ранней стадии создания новых планов тестирования для нашего процесса разработки RPG, и я не хочу, чтобы он с самого начала пошел в неправильном направлении.


person kratenko    schedule 20.06.2012    source источник
comment
Вероятно, более важный вопрос: есть ли у вас архитектура для модульного тестирования? Похоже, что язык активно поощряет написание программ, которые затрудняют хорошую инкапсуляцию (т. е. программы, содержащие все, от доступа к базе данных до вывода на экран, в одном файле).   -  person Clockwork-Muse    schedule 20.06.2012
comment
@X-Zero, если вы решите это сделать, вы можете получить сепер   -  person WarrenT    schedule 21.06.2012
comment
@x-zero ILE Moduled может обеспечить инкапсуляцию, даже на разных языках, и все это связано в одной программе.   -  person WarrenT    schedule 21.06.2012
comment
@WarrenT - Да, может. Но вы должны активно писать свои программы, чтобы воспользоваться этим фактом. Традиция, кажется, диктует, что все должно быть в одном файле, и учитывая, насколько устойчивы некоторые компании к изменениям. А с модулями ILE вы должны быть осторожны, иначе процедуры могут появиться из ниоткуда (здесь есть несколько программ без каких-либо включений или чего-либо еще, это обрабатывается исключительно группой активации, а это означает, что вам нужно искать по всей кодовой базе, чтобы найти способ...)   -  person Clockwork-Muse    schedule 21.06.2012
comment
«...вы должны активно писать свои программы, чтобы воспользоваться этим фактом...» Это верно для всех языков, всех платформ. Ошибки программиста не являются ошибками языка. «... этим занимается исключительно группа активации...» Это не совсем точно. Иногда программист (см. выше) связывает процедуру путем копирования и делает это с помощью CRTPGM MODULE(), а не связывает по ссылке (служебная программа) и каталогу привязки. Слишком часто программист выбирает соглашение об именах, из-за которого трудно узнать, из какого исходного члена исходит данная процедура. Плохой программист   -  person Buck Calabro    schedule 22.06.2012
comment
@ X-Zero Да, я знаю об этих проблемах, но во многих случаях мы этого не знаем. Тем не менее, мы хотим достичь этого с новыми проектами, но это не так просто, если мы не найдем способ заполнить пробел, который я пытался указать в своем вопросе.   -  person kratenko    schedule 22.06.2012
comment
@kratenko Не привязывайте по копиям, кроме сервисных программ. Используйте для них скрипт make. Для программ используйте спецификацию каталога привязки H. Назовите модуль, исходный элемент и включаемый файл одинаковыми. Модуль в QRPGLESRC, включить в QPROTOSRC. Все имена совпадают, легко найти. Ищете конкретный процесс? Сканировать QPROTOSRC; член, имеющий эту процедуру, будет иметь соответствующий член в QRPGLESRC, у которого есть код процедуры.   -  person Buck Calabro    schedule 22.06.2012
comment
@Buck Спасибо за советы. Во всяком случае, это близко к тому, как я пытаюсь кодировать свою RPG. Но это не особо помогает в моей проблеме.   -  person kratenko    schedule 22.06.2012


Ответы (2)


Вы, наверное, уже знаете, насколько обширной может быть тема «тестирование». У IBM есть продукт под названием Rational Function Tester (я им не пользовался) http://www-01.ibm.com/software/awdtools/tester/functional/ Я сам использую RPGUnit. Нет, он не обновлялся в последнее время, но в нем все еще есть все части, необходимые для тестирования подпроцедур таким же образом, как и методы Java.

Честно говоря, это самая легкая часть. Трудная часть — создать тестовую базу данных и поддерживать ее в актуальном состоянии, чтобы она соответствовала производственной базе данных. У Rodin есть некоторые инструменты для работы с базами данных, но у меня нет на них бюджета, поэтому я создаю свои собственные более или менее вручную. Я использую множество операторов SQL в программе CL для извлечения производственных данных, чтобы поддерживать ссылочную целостность. Затем я использую еще немного SQL, чтобы добавить свои исключительные тестовые случаи — те отношения, которых нет в производственных данных, но которые необходимо проверить. Затем я делаю полную копию тестовой базы данных в качестве точки отсчета. Затем я запускаю свои тестовые примеры, которые обновляют тестовую базу данных. Я написал самодельную утилиту CMPPFM, которая позволит мне сравнить эталонную базу данных с уже измененной тестовой базой данных. Это покажет изменения, но по-прежнему требуется много ручного труда для проверки сравнений, чтобы убедиться, что правильные строки получили правильные обновления. Я еще не прошел лишнюю милю, чтобы автоматизировать это. Одно большое предостережение: есть некоторые столбцы, которые вам не нужны, например метка времени изменения.

person Buck Calabro    schedule 20.06.2012
comment
Спасибо за понимание до сих пор. Так что RPGUnit полезен, это хорошая новость. Судя по списку функций, Functional Tester не имеет никаких функций RPG или ILE, у него есть только другие части для организации тестов (я не думаю, что мы купим что-то для этой части). - person kratenko; 22.06.2012
comment
так как это хороший ответ, и, похоже, я не получу что-то еще, я мог бы принять это... - person kratenko; 04.06.2014

Мы выбрали RPGUNIT и сочли его хорошей основой для работы, но в итоге значительно расширили его, чтобы связать с нашей системой управления изменениями и с тем, как мы работаем. О том, что мы пробовали, я писал здесь: http://www.littlebluemonkey.com/blog/my-rpg-unit-test-journey

person Little Blue Monkey    schedule 24.06.2014
comment
Спасибо, что позволили нам принять участие в вашем путешествии. Похоже, вам это удалось! Это будет полезно, когда мы решим потратить время на реальное тестирование RPG. - person kratenko; 24.06.2014