The Set-Up by Igor

SalesForce Recruiting application can be created using instructions from this book on a platform with a registration page located here. SalesForce periodically revises Recruiting application book following changes in the platform and/or Recruiting application. We decided to upload version we use on our server just in case future revisions of the book will be different from current.

Application consists of three main components. Company needs to fill a ‘Position’.


Fig. 1 Position

‘Candidate’ is a human applying for a ‘Position’ by filing a ‘Job Application’.


Fig. 2 Candidate


Fig. 3 Job Application

Application has two additional components – ‘Review’ and ‘Employment Web Site’.


Fig. 4 Job Application Review

Each interviewer can leave/add a ‘Review’ about ‘Candidate’ – you can see that many ‘Reviews’ are allowed for a single ‘Job Application’.


Fig. 5 Employment Web Sites

It is a standard approach to use a third table when many-many relationship needs to be created. Application has one internal component called ‘Job Posting’. We can see ‘Job Posting’ object/table acting as such link allowing a ‘Position’ to be related to many ‘Web Sites’ as well as ‘Web Site’ to be used with many ‘Positions’. ‘Job Posting’ is invisible to us from UI – we can only think of it when we add new ‘Web Site’ to advertise a ‘Position’.

Relationship between application objects can be found on pages 122-123 of the book. Our simplified diagram is shown on Fig 6.


Fig. 6 Simplified relationships diagram

Let’s close our eyes and imagine that we have been hired by SalesForce to write an automatic test suite for Recruiting application.

Disclaimer! Before closing your eyes please read this. We are not associated with, endorsed by, or sponsored by the SalesForce.Com (NYSE:CRM). We have no official or unofficial affiliation with SalesForce.Com its partners or customers.

Feb 14th, 2009 by Dima

When I was creating the Recruiting application first time, it took me about 7 hours as I spent a long time to carefully read all of the details in the book so that I didn’t miss a thing. Of course, it will most likely take less time for those people for who English their native language. When I read the book for the second time, it took me less than three hours because I only needed to follow the action parts of the book.

We decided to work by two teams – PHP and Java. For PHP team we will use PHPUnit, for Java team we will use TestNG.

- Alena (PHP Team)
- Dmitry (Java Team)
- Ekaterina (PHP Team)
- Igor (narration)

It will be interesting to hike ‘automatic testing’ mountain using different trails (teams) having different equipment (PHP & Java) despite of rockfalls and thick fog (narration).

Jan 30th, 2009 by Dima

My choice of tools for Java.
There are two popular Java testing frameworks – JUnit and TestNG. I have chosen TestNG , because:
- it has the built-in support for parallel tests execution (for JUnit – there is an extension Parallel JUnit).
- TestNG is used in parallel tests examples in Selenium Grid documentation.

I would like to learn and implement with TestNG:
- division of tests into groups and subgroups
- execution of tests in groups and subgroups in parallel streams. This is something important as it allows us to utilise full potential of Selenium Grid and complete tests quicker. This functionality is not implemented yet in PHPUnit as far as we are concerned.
- framework logging capabilities. At the moment I am not quite sure what TestNG writes to logs, how useful they are and how they simplify test results analysis. I know it will give me basic results in a form like, 15 tests, 10 OK, 5 FAILED and I will investigate further as I will go ahead.
To have an independent logging facility which can be fully controlled from within my code and to compare with TestNG logging capabilities I will also use Log4j.

There are many Log4j features appealing to me:
- the logger class is able to output logs to files (including rewriting old logs by recent), to the console, to the syslog (including the remote syslog – Rsyslog).
- we can flexibly direct messages to a different places depending on their level and/or originating class
- we will not need to change our code and/or recompile our classes if we need to modify our logging – we can change any parameters in configuration file (
- Log4j is a de facto logging standard in a Java world

I will use Ant – cross-platform analogue of the UNIX make utility – to automate tests build process and start Selenium Grid.

We provide SVN anonymous read only access for Java and PHP code written and discussed here.

Blog you are reading was built from WordPress and different plug-ins by Alex. Ekaterina is an editor of the BLOG. Vadym installed and secured all necessary components (Apache, WordPress, SVN).

Ultimate goal of our project is to understand what can be tested by writing a test suite for a real application, to build an apparatus which can be used to write automatic tests for other applications, to understand how tool selection (PHP and Java) will impact results.

‘Show must go on …’


Print this post | Home

Comments are closed.