Pertanyaan Bagaimana mengintegrasikan soapUI dengan Jenkins?


Adakah yang tahu cara yang bagus untuk menambahkan tes soapUI ke build CI saya?


32
2017-07-11 09:35


asal


Jawaban:


soapUI menawarkan otomatisasi tes melalui Maven atau Ant. Integrasi Maven dijelaskan SINI.

Saya mencoba beberapa bulan yang lalu tetapi memiliki beberapa masalah aneh dengan repositori eviware ... Oleh karena itu saya menjalankan tes saya sekarang melalui Ant. Yang harus Anda lakukan adalah memanggil testrunner.bat (atau testrunner.sh) skrip dalam direktori bin soapUI. Anda dapat menemukan argumen yang tersedia SINI.

Anda harus menginstal soapUI di server pembuatan Hudson Anda. Maka Anda cukup membuat pekerjaan baru yang dibangun melalui Ant.

Mencicipi 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>

30
2017-07-11 11:04



Ini cukup sederhana ...

Buat git repo dengan yang berikut (contoh):

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

pom.xml, sesuaikan jika diperlukan:

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

Buat pekerjaan Maven baru di Jenkins dan arahkan ke repo git dan pom.xml, sebagai tujuan mengisi test

Itu semua orang


5
2017-09-22 12:50



Skrip berikut ini dipanggil sebagai bagian dari skrip pembuatan kustom di dalam hudson yang meneruskannya nama host target untuk menjalankan pengujian terhadapnya.

#!/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 sysadmin@yourdomain.com"
        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
2017-07-11 21:29



Mengapa tidak menggunakan integrasi JUnit? http://www.soapui.org/Test-Automation/integrating-with-junit.html

Edit: kami memiliki beberapa angka kinerja aneh menggunakan metode ini (detik bukan msec), ternyata itu karena menggunakan SoapUI Runner. Menjalankan tes beban yang sama di SoapUI memberi hasil yang benar. Mungkin kami tidak menggunakan API dengan benar (meskipun tampaknya mudah). Kami beralih menggunakan ContiPerf2 dan menggunakan kode klien (yang harus kami hasilkan) untuk menjalankan tes dan mendapatkan hasil yang normal sekarang.


2
2017-07-19 09:23



Saya menggunakan plugin maven soapui-ekstensi - Jauh lebih baik daripada plugin Maven resmi. Ini hanya masalah konfigurasi untuk menghasilkan hasil gaya JUnit sehingga jenkins dapat mengambilnya.


1
2018-04-15 14:29