Показаны сообщения с ярлыком perl. Показать все сообщения
Показаны сообщения с ярлыком perl. Показать все сообщения

четверг, 11 июня 2009 г.

Загадочное про perl модули а также про то как круто учиться :)

Недавно я выкладывал пост как создавать репорты в ексель на перле
Для этого я написал отдельный перл модуль generateBuildReport.pm
Я не ахти какой перл программер , как говорится , только учусь , поэтому получилось что нашел я у себя критическую ошибку)
При включении моего модуля в код другого перл скрипта

use generateBuildReport.pm;


У меня в этом скрипте начинает некорректно работать функция system в ниже приведенной функции.Perl интерпретатор просто крашится и вылетает при ее выполнении.Надо сказать что в IBM clearquest perl не стандартный, а скомпилированный IBM и называется он cqperl.Возможно в этом дело

#executes selected manual test script in Rational manual tester
sub runRationalManualTester {
my ($script_name) = @_;
logger("\nRun the Rational manual tester");
chdir($manualTesterPath);
system( $rmt_binary. " -x " . "\"" . $script_name . "\"" . " -" );
}

Местный гуру посоветовал не юзать модули , если ты сам не гуру :)
В итого переписал , чтобы использовать репорт как обычный скрипт со входными параметрами
А вот и код generateBuildReport.pl

Вторая проблема что поймал , это создание массива с билдами и тесткейсами через указатели, получилась такая фишка что при создании массива в цикле использовал линки на реальные значения , а не их самих. В итого во все элементы массива вставились одни и теже значения , ибо ссылка была всегда на один и тот же тесткейс.Ниже код , где закоментарено как цикл на работал и показан работающий вариант :)

#create an array of build hash objects.Every build object contains hash with testcases were executed on this build
sub getTestCasesByBuild {
#list of tests which are executed on every build
my @tests = @{ getTestCasesList(@configuration) };
#list of available builds
my @builds = @{ getAutomatedBuilds() };
foreach my $build (@builds) {
logger( "Create testcases list for the build " . $build->{'name'}, true );
#list of testcases which were executed or not executed on this build
my @testcasesList;

foreach my $test (@tests) {
my $verdictRec = getLatestVerdict( $test->{'id'},
$Iteration, $build->{'id'} );
my %tc = %$test;
#$test->{'result'} = $verdictRec->{'result'};
#$test->{'resultId'} = $verdictRec->{'dbid'};
$tc{'result'} = $verdictRec->{'result'};
$tc{'resultId'} = $verdictRec->{'dbid'};
push (@testcasesList, \%tc);
#push (@testcasesList, \%test);
}
push (@{$build->{'tests'}}, @testcasesList);
}
return \@builds;
}
Опять же , весь код доступен тут :generateBuildReport.pl

понедельник, 8 июня 2009 г.

Автоматическое создание excel репортов для clearquest test manager на perl

На работе я занимаюсь автоматизацией тестирования.
И вот мы дошли до той стадии автоматизации на проекте , когда необходимо генерировать красивые репорты о выполнение тестов и высылать их на емейл. Итак задача есть.
На входе:
1. clearquest test manager 7.0.1 - Это довольно мощный тул , который идет eclipse плагином к различным средствам тестирования от IBM (как clearquest , functional tester , manual tester).В нем мы храним все результаты тестов
Его основное преимущества :
  • предоставляет готовую схему базы в виде объектов тесткейса , бага , реквайримента,билда.Позволяет по этим объектам легко строить запросы , писать свои объекты , писать свои поля в объектах. Вобщем очень мощный тул.Если вы пользуетесь какими-то средствами тестирования от IBM , то рекомендую поставить.
  • Предоставляет api на perl , vb , языках поддерживающих com для запуска выборок из базы , создания отчетов , построения графиков и много другое :)

2. Rational Functional Tester - тул , в котором у нас собственно написаны автоматические тесткейсы.

И что у нас получилось на выходе:
  1. На выходе получился perl script, который
  • Соединяется с clearquest testmanager базой и вытягивает из нее все тесткейсы , сортирует их запуски по билдам. То есть для каждого билда берутся последние запуски для данного тесткейса
  • Открывает заранее сохраненный excel темплейт с пустым графиком.Создает и заполняет таблицу в тестами по вертикали и с билдами по горизонтали.Строит график по этой таблицу.Причем каждый раз при генерации репорта добавляются новые тесты или билды , если они появились
  • Отсылает полученный excel репорт на емейл. Самое приятное , Вот как он выглядит :


Из того , что тут показано :
Фильтр по фичам динамически меняет график.То есть на графике показывается только конкретная фича
Линки на тесты.При клике на результат теста открывается http линка на детализированый лог , сохраненный в clearquest test manager .Да, cqtm позволяет получить к нему доступ через web

Итак , вот линка на perl модуль дл ясоздания этой красоты http://showmecode.com
/code/9578/
Вот ссылочка на excel template

Все это может пригодится , если вы решите разобраться как:
1. Генерировать правильные тест репорты
2. работать с clearquest test manager perl api
3. Работать с excel через perl ole интерфейс
4. Отсылать емейлы с атачами при помощи perl