web-dev-qa-db-fra.com

Comment intégrer soapUI avec Jenkins?

Quelqu'un connaît un bon moyen d'ajouter des tests soapUI à mes builds CI?

36
Michael

soapUI propose une automatisation des tests via Maven ou Ant. L'intégration de Maven est décrite ICI .

Je l'ai essayé il y a quelques mois mais j'ai eu des problèmes étranges avec le dépôt eviware ... Par conséquent, je lance maintenant mes tests via Ant. Ce que vous devez faire est d'appeler le testrunner.bat (ou testrunner.sh) script dans le répertoire bin de soapUI. Vous pouvez trouver les arguments disponibles ICI .

Vous devez installer soapUI sur votre serveur de build Hudson. Ensuite, vous créez simplement un nouveau travail qui est construit via Ant.

Échantillon 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>
31
Sebi

C'est assez simple ...

Créez un dépôt git avec les éléments suivants (exemple):

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

pom.xml, ajustez si nécessaire:

<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>
</project>

Créez un nouveau travail Maven dans Jenkins et pointez-le sur le dépôt git et pom.xml, comme objectif remplissez test

C'est tout le monde

5
Xiwen

Le script suivant est appelé dans le cadre d'un script de génération personnalisé dans hudson en lui passant le nom de l'hôte cible pour invoquer les tests.

#!/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: $0 target_Host"
    exit 1
fi
TargetHost=$1
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 "$0: Programming error: Report to [email protected]"
        exit -1
    fi
    exit_code=$1
    err_msg=$2
    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"
2
sweetfa

Pourquoi ne pas utiliser l'intégration JUnit? http://www.soapui.org/Test-Automation/integrating-with-junit.html

Edit: nous avons eu des chiffres de performances étranges en utilisant cette méthode (secondes au lieu de msecs), il s'avère que c'était à cause de l'utilisation de SoapUI Runner. L'exécution du même test de charge dans SoapUI a donné un résultat correct. Peut-être que nous n'avons pas utilisé l'API correctement (bien que cela semble simple). Nous sommes passés à l'utilisation de ContiPerf2 et à l'utilisation du code client (que nous devons de toute façon générer) pour exécuter les tests et obtenir des résultats normaux maintenant.

2
Nicolas Mommaerts

J'utilise le plugin soapui-extension maven - C'est beaucoup mieux que le plugin officiel Maven. Il suffit de le configurer pour produire des résultats de style JUnit afin que jenkins puisse les récupérer.

1
blank