Todo List: Mobile Testing

Real busy with functional web testing so this is a todo/research list. Take into account integration existing frameworks I currently use.

http://appium.io/

https://saucelabs.com (execute appium tests)

https://code.google.com/p/robotium/

http://www.gorillalogic.com/

http://www.borland.com/products/silkmobile/

https://code.google.com/p/nativedriver/

http://www.sikuli.org/

https://github.com/xebia/FitnesseSikuli (like xebium for sikuli)

 

Posted in agile, automated, selenium, tools | Leave a comment

Execute Xebium (FitNesse) tests on your own Selenium Grid

When trying to show the benefits of running functional selenium tests with Xebium and Jenkins in post Running Xebium test suites with Jenkins (part 1) I realized I needed to explain how to configure Jenkins in a way it will execute the selenium tests created in Xebium on the right test execution slave.

I assume you know how to installl jenkins etc. Install plugin https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Plugin in Jenkins. Do NOT install other selenium plug-ins because this will break this plug-in. Got to the Selenium  grid config page and create a configuration tied to a node you know will have a browser you will use in your test case. This should be pretty straightforward. When a node connected to jenkins matches the configuration you just created, remote webdrivers will be started and you can configure your Xebium test case to connect to the Jenkins Selenium grid hub, see next section. Note you could also use SauceLabs, I will cover this later.

Execute Xebium Test case on your own Selenium Grid

Suppose you have a test case in Xebium defined that you would like to be executed on a windows xp host with IE8.

Test case to be run on windpwx xp in IE8
| import |
| com.xebia.incubator.xebium |
| library |
| selenium driver fixture |

| script | selenium driver fixture |
| start browser | {"name" : "windriver", "remote": "http://jenkins:4444/wd/hub", "platform" : "XP", "browserName" : "internet explorer", "version" : "8" } | on url | http://systemUnderTest |
| ensure | do | open | on | ${PAGE_PATH}.${PAGE_NAME} |
| check | is | waitForTitle | ${PAGE_PATH}.${PAGE_NAME} |
| ensure | do | verifyTextPresent | on | Xebium |
| check | is | verifyText | on | css=h1 | ${PAGE_NAME} |
| stop browser |

This test case will ask jenkins for a remote webdriver on a windows xp host supporting IE8. If you have connected a windows xp host with IE8 to jenkins and that matched your configuration you made in the Selenium grid configuration page  and press test in Xebium a  browser will pop-up and the test case will be executed.

cheers

Posted in automated, fitnesse, selenium, webdriver | 11 Comments

Running Xebium test suites with Jenkins – part 1

In part 1 I will discuss how to start and stop Xebium with Jenkins. In part 2 I will continue with Executing Xebium tests with Jenkins. I will publish this very soon.

Suppose you are on a team of  testers that are working on testing a web app. You want to write your test cases in a human readable format and have central automated test execution. Also would be nice to report test results in a central repository.

This is possible with Xebium in combination with Jenkins and the use of some slaves that will execute the tests.

The idea is that a tester can run his own instance of Xebium, check in some tests cases to source code management. The updated pages will get picked up by Jenkins and updates Xebium. Tests can then be scheduled to be executed. I created a little diagram a while ago:

JenkinsFitnesseSelenium

I will setup up everything on a single Linux server and connect a windows slave to Jenkins that will execute the Xebium tests, read about it in post Execute Xebium (FitNesse) tests on your own Selenium Grid

Start Xebium through Jenkins

As said, each tester works with his own copy of Xebium pulled from version control. This means there must be some coordination which tester works on which page within Xebium to prevent everyday conflicts and difficult merges.

The benefit from this approach is that you have a central repository of  “up to date test cases” ready to be executed from a central location. You can set this up from Jenkins.

Suppose you use svn for scm the configuration of the Jenkins job that will keep you instance of Xebium up to date would look something like this:

jenkins scm

Fine, we have something that will poll scm for check-ins to Xebium. Now lets have a look at the build steps. We have to have two build steps. One step for actually starting Xebium. Another step for killing the previously running instance of Xebium. This is configured in Jenkins like so in the build step section:

build steps

Step 1 will grep the running processes on the linux server for Fitnesse and kill it. Step two will start Xebium with BUILD_ID = dontKillMe. Setting the buildID to dontKillMe is very important because when the Jenkins jobs finishes it will kill all spawned processes. Setting the BuildID to dontKillMe will prevent this so that Xebium will stay running when the job finishes successfully. Read more about dontKillMe here

Executing Test Suites

see part 2 Executing Xebium tests with Jenkins

Posted in automated, fitnesse, jenkins, selenium, testing | 1 Comment

Selenium Jenkins Fitnesse integration

Download large image

2013/05/13 Update: Created a new post about this topic Running Xebium test suites with Jenkins – part 1

Posted in agile, jenkins, selenium, testing | Tagged , , , | 2 Comments

Run Xebium headless

Install on system. I was using Ubuntu server 12.10 …

sudo apt-get install openjdk-7-jdk
sudo apt-get install maven
sudo apt-get install git-core
sudo apt-get install firefox
sudo apt-get install ttf-mscorefonts-installer
sudo apt-get install xfonts-base xfonts-75dpi xfonts-100dpi
sudo apt-get install xfonts-scalable xfonts-cyrillic
sudo apt-get install xvfb gtk2-engines-pixbuf
sudo apt-get install x11-apps imagemagick

download Xebium, see here http://xebia.github.com/Xebium/ etc like so:

git clone git://github.com/xebia/Xebium
cd ~/Xebium && nohup ./run.sh > run.log &
Xvfb :1 -screen 0 1024x768x16 -nolisten inet6 &
export ‘DISPLAY=localhost:1.0′

Posted in automated, fitnesse | 2 Comments

generate pdf report from soapui test run

It really was a nightmare to get this working. Somehow this not documented on soapui website and looking around their forum gave some tips and hints but not the solution that was working.

I found that this combination of parameters when executing the testrunner works. Use it.

testrunner -r -a -freport -R"Project Report" -FPDF  -e host soapui-project.xml

 

 

Posted in automated, soapui | 1 Comment

install and configure Oracle Linux 6.3

#Config
sudo service iptables stop
sudo chkconfig iptables off
sudo vim /etc/sysconfig/network (give server proper hostname, or let DNS handle it, create sr request)

add jenkins user / add to sudoers file

sudo rpm –import http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
sudo rpm –import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
// install RPM Forge repos, needed for cabextract thats needed for msfonts
rpm -ivh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

add repor file google.repo to /etc/yum.repos.d, contents of file:
[google-chrome]
name=google-chrome – 64-bit
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
yum update

## ADDED testrunner for soapui test in /etc/profile
echo ‘pathmunge /home/qa/apps/soapui-pro-4.5.1/bin’ > /etc/profile.d/soapui.sh
chmod +x /etc/profile.d/soapui.sh

#update / install software
sudo yum upgrade
yum install rpm-build cabextract ttmkfdir wget chkfontpath
sudo yum install mysql-server
sudo yum install screen
sudo yum install ImageMagick
sudo yum install ‘graphviz*’
sudo yum -y install subversion
sudo yum install xorg-x11*
sudo yum install ant
sudo yum install gcc-c++
// repos did not work sometimes, enable and disabble seemed to work :D all software eventually installed…
sudo yum install java-1.7.0-openjdk.x86_64java
sudo yum install java-1.7.0-openjdk-devel

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm –import http://pkg.jenkins-ci.org/redhat-stable/jenkins-ci.org.key
yum install jenkins

#PEAR

sudo pear config-set auto_discover 1
sudo pear channel-discover pear.phing.info
sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover pear.pdepend.org
sudo pear channel-discover pear.phpmd.org
sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover pear.docblox-project.org

sudo pear install pear.phpunit.de/PHPUnit
sudo pear install phpunit/DbUnit
sudo pear install phpunit/PHPUnit_Selenium
sudo pear install phpunit/PHPUnit_Story
sudo pear install –alldeps phing/phing

#NODE.JS
wget http://nodejs.org/dist/[latest release]
tar zxvf node-v******.tar.gz
cd node-v0.8.15
./configure
make
sudo make install

#Software config
// Jekins
installed a lot of plugins
// SoapUI
installed mysql connector in /bin/ext
// Ant
cd /usr/lib
wget http://mirrors.supportex.net/apache//ant/binaries/[latest release]
gzip -d apache-ant-1.7.0-bin.tar.gz
tar xvf apache-ant-1.8.4-bin.tar
ln -s /usr/lib/apache-ant-1.8.4/bin/ant /etc/alternatives/ant
ln -s /usr/lib/apache-ant-1.8.4/ /etc/alternatives/anthome
ln -s /etc/alternatives/ant /usr/bin/ant

Posted in jenkins, shell | 1 Comment

run selenium test from command-line

I was using eclipse to start a single selenium test method. Sometimes it’s useful to just start it quickly from the command-line

# run test method
java -cp "lib/*:bin" org.testng.TestNG -methods om.vv.selenium.testsuite.login.wrongPassword

you can also run a whole class and exclude some methods in the meantime

# exclude groups
java -cp "lib/*:bin" org.testng.TestNG -testclass com.vv.selenium.testsuite.login -excludegroups "groupoftests"

 

Posted in eclipse, selenium, shell, testing | 1 Comment

commit db backup to svn

Simple shell script to commit db to svn

#!/bin/bash
USERNAME=username
PASSWORD=password
SVN_REMOTE="svn \
           --no-auth-cache \
           --username=$USERNAME \
           --password=$PASSWORD"
mysqldump -uphp -h [HOST] \
	[TABLE] > [FILE].sql.gz
$SVN_REMOTE commit -m "message"

 

Posted in jenkins, shell | Leave a comment

I want read local mail in a nice browser-based email client

use dovecot and roundcubemail on centos

Do the following:

sudo su
cd /var/www/html/
wget http://freefr.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.7.2/roundcubemail-0.7.2.tar.gz
tar -zxvf roundcubemail-0.7.2.tar.gz
rm roundcubemail-0.7.2.tar.gz
mv roundcubemail-0.7.2/ mail
cd mail
chmod 777 logs
chmod 777 temp
mysql -uphp -pgarage -e “create database roundcubemail”
cat SQL/mysql.initial.sql | mysql -uphp -pgarage roundcubemail
yum install dovecot
vim /etc/dovecot.conf

search for:
protocols = pop3 pop3s imap imaps
Uncomment it

search for:
mail_location =
uncomment and change to:
mail_location = mbox:~/mail:INBOX=/var/mail/%u

/sbin/service dovecot restart

Open in your webbrowser:
yourserver/mail/installer
Follow all steps. Keep everything defailt but:

  • mysql username: username
  • mysql password: password
  • mysql databasename: roundcubemail

vim /var/www/html/mail/config/main.inc.php
search for
$rcmail_config['default_host'] = ”;
change to:
$rcmail_config['default_host'] = ‘localhost';
$rcmail_config['default_host'] = ”;

 

Posted in automated, testing, tools | 1 Comment