Как интегрировать soapUI с Jenkins?

кто-нибудь знает хороший способ добавить тесты soapUI в мои сборки CI ?

5 ответов


soapUI предлагает автоматизацию тестирования через Maven или Ant. Интеграция Maven описывается здесь.

Я пробовал это несколько месяцев назад, но имел некоторые странные проблемы с репозиторием eviware... Поэтому я запускаю свои тесты теперь через Ant. Что вам нужно сделать, это позвонить testrunner.bat (или testrunner.sh) скрипт в каталоге soapUI Бен. Вы можете найти доступные аргументы:здесь.

вы должны установить soapUI на вашем сервере сборки Hudson. Тогда вы просто создайте новое задание, построенное с помощью Ant.

пример build.xml:

<project name="IntegrationTest" default="soapui-tests" basedir=".">
    <description>Runs the soapUI integration tests</description>
    <property file="build.properties"/>

    <target name="checkos">
        <condition property="testrunner.cmd" value="${soapUI.home}/bin/testrunner.bat">
                <os family="windows" />
        </condition>
        <condition property="testrunner.cmd" value="${soapUI.home}/bin/testrunner.sh">
                <os family="unix" />
        </condition>
    </target>

    <target name="soapui-tests" depends="checkos">
        <exec executable="${testrunner.cmd}"
              failonerror="yes"
              failifexecutionfails="yes"
        >    
            <arg value="-e ${service.endpoint}"/>
            <arg value="-P dbUrl=${db.Url}"/>
            <arg value="-rajf"/>
            <arg path="${report.dir}"/>
            <arg path="${soapui.project.folder}"/>
        </exec>
    </target>
</project>

- Это довольно просто...

создайте репозиторий git со следующим (пример):

├── pom.xml
├── RestAPI-negativeTestSuite.xml
└── RestAPI-positiveTestSuite.xml

пом.XML-код, поправим:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<name>Test soapui</name>
<groupId>tdrury</groupId>
<artifactId>com.example.soapuitests</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<description>blah blah</description>
<build>
    <plugins>
        <plugin>
            <groupId>com.smartbear.soapui</groupId>
            <artifactId>soapui-maven-plugin</artifactId>
            <version>5.0.0</version>

            <executions>
                <execution>
                    <id>RestAPI-positiveTestSuite</id>
                    <configuration>
                        <projectFile>RestAPI-positiveTestSuite.xml</projectFile>

                        <outputFolder>target/surefire-reports</outputFolder>
                        <testSuite>Positive cases</testSuite>

                        <junitReport>true</junitReport>
                        <exportwAll>true</exportwAll>
                        <printReport>true</printReport>
                        <testFailIgnore>true</testFailIgnore>
                    </configuration>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <phase>test</phase>
                </execution>
                <execution>
                    <id>RestAPI-negativeTestSuite</id>
                    <configuration>
                        <projectFile>RestAPI-negativeTestSuite.xml</projectFile>
                        <outputFolder>target/surefire-reports</outputFolder>
                        <testSuite>Negative tests</testSuite>

                        <junitReport>true</junitReport>
                        <exportwAll>true</exportwAll>
                        <printReport>true</printReport>
                        <testFailIgnore>true</testFailIgnore>
                    </configuration>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <phase>test</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

создайте новое задание Maven в Jenkins и укажите его на репозиторий git и pom.xml, как цель заполнить test

Это все люди


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

#!/bin/bash -x

#
#   Regression Test Script for performing regression testing
#   
#   Note: Caution should be exercised where more than one set
#   of test suites exist in the same soapui project
#
#   Script invokes SOAPUI testrunner to perform tests
#
#   Script arguments:
#       target host
#

if [ $# -ne 1 ];
then
    echo "Usage:  target_host"
    exit 1
fi
TargetHost=
curdir=`pwd`
ProjectFile=$curdir/testing/SoapUI/YourProject.xml
SOAPUI_HOME=/soapuipath/soapui
TEST_RUNNER=testrunner.sh

if [ ! -f "$ProjectFile" ];
then
    echo "Project File does not exist"
    exit 1
fi
###############################################################################################
## Check the status of the last shell operation and if failed exit
###############################################################################################

## --------------------------------------------------------------------------------
##  Return the operating system pathname for the datafiles for the specified database
##
##  Arguments:
##      The return value to check.  zero indicates all is good.  Non-zero indicates error
##      The error message to display when exiting
##      
##  Exits if error detected
check_status()
{
    if [ $# -ne 2 ];
    then
        echo ": Programming error: Report to sysadmin@yourdomain.com"
        exit -1
    fi
    exit_code=
    err_msg=
    if [ $exit_code -ne 0 ];
    then
        echo $err_msg
        exit $exit_code
    fi
}


cd $SOAPUI_HOME/bin
bash -x ./$TEST_RUNNER -s"TestSuite 1" -c"TestCase 1 - Sanity Tests" -ehttps://$TargetHost:port/testurl "$ProjectFile"
check_status $? "Failed to pass regression testing "

cd "$curdir"

Почему бы не использовать интеграцию JUnit? http://www.soapui.org/Test-Automation/integrating-with-junit.html

Edit: у нас были некоторые странные номера производительности, используя этот метод (секунды вместо мсек), оказывается, это было из-за использования SoapUI Runner. Запуск того же нагрузочного теста в SoapUI дал правильный результат. Возможно, мы неправильно использовали API (хотя это кажется простым). Мы переключились на использование ContiPerf2 и использование клиентского кода (который мы должны генерировать в любом случае), чтобы запустить тесты и получить нормальные результаты сейчас.


Я использую soapui-расширение Maven плагин - это намного лучше, чем официальный плагин Maven. Это просто вопрос настройки его для получения результатов стиля JUnit, чтобы Дженкинс мог их забрать.