23.03.2013 Views

Agile Performance Testing - Testing Experience

Agile Performance Testing - Testing Experience

Agile Performance Testing - Testing Experience

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

init_server<br />

The init server job helps to clean up and restart the application<br />

server (websphere, weblogic, jboss, tomcat). It was not easy to get<br />

this one stable, as the ANT job that starts the server on the remote<br />

node got killed once the parent Hudson job returned to server.<br />

The solution here is to add an environment variable BUILD_<br />

ID=dontKillMe to this job, so that child jobs stays alive.<br />

The logic that defines which server needs to be started, and where<br />

the server is located, is actually not visible here, but hidden in our<br />

test framework. We just call the ANT target clean-start-server,<br />

and the rest will be handled locally on the node. In future, we<br />

want to integrate Cargo into our ANT task, as it allows for easy<br />

server start and deployments.<br />

Install<br />

The install job installs the software, compiles the updated test<br />

software, configures the client-server set-up and deploys the<br />

server part on the application server. All these tasks have been<br />

integrated into a single ANT job “ant testenvir”, so the Hudson job<br />

just needs to call this ANT target, with some additional environment<br />

specific ANT properties.<br />

Runtest<br />

Our runtest jobs do the real test execution. We use separate build<br />

Test report<br />

Image8: SVN repositories<br />

Image9: Generate report<br />

The result of the testing is sent by mail. The report shows failures<br />

and errors per test suite, for each individual environment.<br />

steps in one single job:<br />

• On Windows we call a Windows batch script to map network<br />

drives<br />

• We call ANT target “setup-minimal-audittrail” to set up our<br />

database<br />

• We call ANT target “runsuite” to start our test<br />

• We call ANT target “load-all” to load the results of the unit<br />

tests into a database. We have some Java jobs that parse the<br />

unit .xml files, store them into a database schema to facilitate<br />

good comparison and reporting afterwards.<br />

The ANT jobs above all require their own specific environment<br />

settings, which we supply as a parameter in the ANT properties.<br />

Each node will get its own environment setting.<br />

Report<br />

The Hudson job “report_reg_trunk” has a script execution build<br />

step, that starts a Python script. The script reads test results from<br />

the database, both for the current and for the previous version,<br />

and writes output to the console. The job also has an additional<br />

email configuration that creates a mail with the console output<br />

and sends it to the QA department.<br />

It also compares the results of this build against the results of<br />

the previous build. Analysis of the report still takes time, but the<br />

comparison helps.<br />

30 The Magazine for Professional Testers www.testingexperience.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!