This is a guest posting by Jess Ingrassellino. Jess is a software engineer in New York. She has perused interests in music, writing, teaching, technology, art and philosophy. She is the founder of TeachCode.org
With literally thousands of programming languages and new technologies being created daily, figuring out what technical skills to learn can be overwhelming for testers. Fortunately, many web and mobile apps tend to work with a similar tech stack. This means that learning some core skills can help testers work in a variety of environments, large and small. Let’s talk about the most useful skills for software testers, and where to find information and training.
“Do the thing you think you cannot do.” – Eleanor Roosevelt
Knowing HTML and CSS helps testers to interpret code from a browser console as they investigate a page. It is a good starting point as HTML is the foundation behind all web pages. It’s used to add structure, text, images, and other types of media. CSS is the language used to style HTML content to create visually appealing web pages.
Skills to Automate Regression: WebDriver, Ruby, Java, Python
More often, testers are being asked to create automated UI tests for web applications. While there are many options, Selenium WebDriver (WebDriver) tends to be the most popular API for driving a browser. Ruby, Python, and Java are popular language choices for people wishing to work with Gherkin style syntax and WebDriver. Another reason these languages tend to be popular is that many web apps use them in other capacities, making it easier for the tester to get help from developers in creating and maintaining the test suite.
For example, a tester may be asked to design an end-to-end regression test of a website that includes logging into the site. Using HTML and CSS skills, the tester can open the browser console elements, locate the login box on the page, and inspect the element to find the id of the element. The tester can then use Ruby, Java, or Python to write commands for the WebDriver API. Some sample code in Python might look like this:
element = driver.find_element_by_id(“login-id”)
The above code goes to the website, locates the textbox that accepts the login, and then enters the login name into the text box. Learning the WebDriver API along with a language like Ruby, Java, or Python are key skills for building automated regression tests.
Working with Code: SVN, Git, and BASH
Sometimes, a tester is lucky enough to work in a large or mature company where they can develop their tests against an environment that just “exists”. More typically, however, some environment setup is required. Also, testers who are writing UI automation will need to check in their own code. For maximum work independence and flexibility, testers should know a version control system also. Two popular version control systems are SVN and Git. Both SVN and Git can easily be learned online with free resources.
In addition, testers should get to know the command prompt/command line and some simple Bash Commands to move around both their computer and their code base. Bash Commands can help the tester navigate files easily while writing tests. Additionally, it is generally necessary to use the command prompt to run automated UI tests and investigate the results of failed scenarios or features.
For example, a tester might be starting a job at a company whose code is kept in GitHub. They can do a ‘git clone’ command to get the code onto the computer. Bash Commands would help the tester move files around, save changes to his test code, and push test changes up to Git for review. Some sample code might look like this:
git clone (gets a copy of the repository)
cd (bash command “cd” means “change directory” to your company’s repository)
git checkout -b (makes a local copy of the code just for you)
git add . (save your changes)
git push origin/your_shiny_new_branch (sends your branch to the repository)
There are, of course, many tech skills beyond this that software testers can learn, and there are no rules about where to start. Different companies can and will employ different technologies. However, these top tech skills can help software testers build a core understanding of web technologies that they can use to branch out into more varied technologies during their careers.
Places to Learn Programming Skills Online for Free
Find out more at TeachCode.Org.
HTML and CSS
Learn HTML and CSS – This course takes approximately 10 hours to complete.
Online Selenium Tutorial for beginners in Java – Learn Selenium WebDriver automation step by step hands-on practical examples.
Learn Ruby – In this course you can gain familiarity in Ruby around basic programming concepts, including variables, loops, control flow, and object-oriented programming. You will also get the opportunity to test your understanding in a final project which you’ll build locally. The course takes approximately 9 hours.
Learn Java – In this course you’ll learn fundamental programming concepts, including object-oriented programming in Java. You will also get the opportunity to build 7 Java projects, like a basic calculator, to help you practice along the way. This course takes approximately 4 hours to complete.
Learn Python – This course is a great introduction to both fundamental programming concepts and the Python programming language. It takes approximately 13 hours.
Learn Python the Hard Way – This is the 3rd Edition of Learn Python the Hard Way. You can visit the companion site to the book at http://learnpythonthehardway.org/ where you can purchase digital downloads and paper versions of the book. The free HTML version of the book is available at http://learnpythonthehardway.org/book/.
Learn the Command Line – Learning to use the Command Line will help you to discover all that your computer is capable of and accomplish a wider set of tasks more effectively and efficiently. This course takes approximately 3 hours.
Learn SVN – Apache Subversion which is often abbreviated as SVN, is a software versioning and revision control system distributed under an open source license.
Learn Git – This course teaches you to save and manage different versions of code projects. It takes approximately 2 hours to complete.