The needs can be broken down in three domains:
- The programming languages one needs to know
- The tools you will be using
- The test environment setup, including test object (the thing you will be testing)
Let's start with the last one, because if we do not have anything to test on, what good is the rest?As a test object for Selenium Webdriver tests, it makes sense to pick some sort of web application that has flows, a database and is easy to install and to get up and running. For a web application, you need to have a webserver supporting that application. If you want to go deeper, you want to set up a remote server but for now, a local setup will suffice.
For the tool I went with MantisBT, this is a light weight issue tracker written in php and that needs a MySQL database. To support this, I set up a XAMPP local webserver. The best thing about picking Mantis is that I am familiar with the issue workflow that is common in test projects and that I used to the tool in the past. If I ever manage to complete the goals I set myself (more on that later), it could actually be a contribution to the MantisBT project itself. XAMPP is great as it has a no-install possibility (follow this link, it is a bit hidden) that you can simply unpack where you want (just be sure to put it in d:\XAMPP or some other root directory) and when firing up the control panel allows you to start whatever webservice you want. The full configuration of the XAMPP tool, what can go wrong and how to install MantisBT is a bit out of the scope of this blog but if requested I can write up my process. With XAMPP and MantisBT done, we have a working test environment, that is pretty sweet!
Now for the programming languages that are needed and some that are wanted.
To be able to use Selenium Webdriver, one of the base language bindings are needed. I myself picked Java as a good friend of mine has nearly two decades experience in this so I would have at least one place to go with questions. What also helped is the huge demand for java developers in the local market. Some SQL would be useful, XML has a demand and had it's uses so some basics there are useful, general HTML knowledge is a must and php is useful but so is Javascript and Ruby so those go on the longlist.
The shortlist of languages to study thus becomes, in order of priority:
- Java
- Selenium
- HTML
- XML
- SQL
- php, Javascript, Ruby
That is way to much and will become way to complex, so for the first 6 months, I will remove everything below HTML leaving us with Java, Selenium and HTML as stuff we need to know about. Remember that Selenium is a Java library so after learning the Java basics, we will move to Selenium as soon as possible. The general principles of HTML are needed as we will be testing webpages and webpages are build using HTML (most of the time anyway).
Before moving to the steps in learning, we need to touch on tools. The central tools will be learned while studying the languages but there are choices we need to make on this. First let's list all the tools we can pick to support the full language list.
- Eclipse, IntelliJ or Netbeans for java development. We will integrate Selenium into this.We can also use the first and last for HTML things.
- Install the Java JDK, else the above can't do their job.
- JUnit or TestNG, testing frameworks for Unit Testing, both are build in IntelliJ
- Maven build tool, this is integrated into IntelliJ, we'll get to it.
- Notepad++ so we can quickly access any text based files.
- Git and Github to store whatever we are doing or at least know what the buzz is about.
- Install all major browsers you want to test on, at least Firefox but keep Chrome and IE close in case we need to double check something.
- DoubleCommander for moving files around, the dual screens are a life saver.
- VirtualBox but only of you want to dive into the rabbit hole of virtual machines.This is fun tho!
- LibreOffice for all your spreadsheet, word processing and spreadsheet needs.
- The Firefox extensions Selenium IDE, Firebug and FirePath.
Outside of this, there are a series of tools that are not needed right away but will be looked into later for the sake of Continuous Integration:
- Jenkins for real CI
- ANT as this is supposed to be useful for build automation
- JIRA for Agile/SCRUM working, but this is subscription software so we will leave it for now
- FitNesse and Cucumber for easier test scripting.
- SoapUI for XML manipulation
- Toad is useful but just not yet. It is freeware and not Open Source so we will leave it for now.
The first set is really needed, but skip Netbeans, I heard no good things about this. I just mentioned it so I can pretend to be inclusive. The second set is things I did not look into myself yet, will get there later.
Hot damn, this is quite the list. The learning of the languages moves to the next post, after the set up of the development environment itself. I love setting up dev machines!
Hi Koen,
ReplyDeleteInteresting to read your blog, you do realise that your starting with the most difficult part, Java. SQL and XML are very easy to learn if you have experience in IT. SQL can be very handy to modify data. If you need help with installing Java JDK, I did it a bunch of times, don't forget to set JAVA_HOME in system variables ;) SoapUI is a must and if you don't know Xpath I suggest to buy a license at 300 dollars. The amount of automation you can do with it is amazing.
P.S. https://www.codecademy.com/ has courses in Java, SQL, HTML, Ruby, command line (very handy!), Javascript, PHP and much more. All for free.
--Sander L