Embarking on a QA quest
Thoughts and suggestions
Lately, I took up the challenge to join the QA team of Orfium, a highly ambitious gathering of young, talented engineers trying to bring a change into the vast realm of music industry royalties.
What was so challenging about it? The QA team didn’t actually exist!
Immediately, the work schedule of the upcoming months started to unfold into my mind. A lot of hard work ahead, but also a great chance to build something great right from the start. Ι delved quickly into the task, without a second thought.
Quality Assurance is an integral part of the Software Development Life Cycle but often in small teams, there is no dedicated personnel for this role. This means that at first many different people wear the hat of the QA. They maybe are the developers, the product manager, the business analyst or any other team member available, depending on the structure of the company. Most of the times it is a combination of them all. Add to the mixture the agile principles of the existing workflow and the lines start to blur really quickly.
So, a question is raised: Who owns quality in an agile environment eventually? The easy answer is that everyone should collaborate with each other in order to achieve the best value for the product and keep the customer satisfied. Quality assurance should not be a role but rather a mentality shared across the teams to ensure that the final product will serve a pleasant experience to the end user.
Communication is Key
Consequently, my task is to find the right tools and methods which could be implemented into the existing workflow of the company, without breaking the balance or introducing new headaches for the team members.
The team was already using Trello. Trello is a great collaboration tool that helps teams to organize their projects into boards while updating them frequently, so everyone knows what they should be working on and what is the general progress of each project. QA procedures can be easily adopted into Trello with minimal configuration. A list dedicated to testing could be inserted before the final validation of each task and the found bugs should return back to the list “In progress” or “In development”, for the devs to start working on them again.
Of course, QA means much more than bug tracking or testing. Working closely with developers and the product manager is an essential part of the job and participating in the daily standups is crucial for understanding the product and its requirements inside out. Close team communication is hugely important. In the analysis phase, the QA team needs to fully understand the requirements of each task and maybe modify them in agreement with the product manager where it sees fit.
The Different Types of Testing
Then comes testing. However, before any kind of testing, there should be good documentation regarding the functionalities and the user flows of a product. The various test cases are explored and written down in a clear-cut way. At first, the procedures are tailored to manual testing, trying to find any defects of the newly added features of the product as well as any existing ones. Manual testing doesn’t require any specific kind of tool but rather a good skillset of the tester, including an eye for detail, creativity, perfect comprehension of product’s requirements and the ability to step into the customer’s shoes.
Moreover, there are different kind of tests to be conducted. Functional tests, to ensure that the product behaves according to the functional requirements without taking design principles into consideration. Non-functional tests like usability tests, investigating all aspects of the usability of a product, including overall structure, navigational flow, the layout of elements on a page, clarity of content, and overall behavior. In order to achieve 100% test coverage, a tester needs to conduct as many as possible of these tests. The problem is that many of these tests need to be conducted frequently, rendering the procedure tedious and prone to errors for the manual tester. Here comes automation.
Exploring Automation Testing Tools
Automation is a whole different beast on its own. There are many tools available in the market right now that promise full automated solutions. Automated testing can be applied to web browsers as well as mobile or desktop applications.
One of the most popular tools for web browser automation is Selenium web driver, a web automation framework that allows you to execute your tests against different browsers. It also enables you to use a programming language in creating your own scripts for testing scenarios. Of course, this requires some basic coding skills. However, almost all the browsers today support the use of plugins that let you record your tests only using the mouse and the keyboard, navigating through the website as a user would do. Selenium IDE is such an extension for both Firefox and Chrome.
Another good software is Katalon Studio. It is based on the Selenium and comes with a desktop application where you can record your browser tests and then edit manually the steps to add or remove any extra functions. A nice feature is the ability to export your test scenarios in scripts(in many different languages including Java, Python and many more). It also supports a browser plugin where you can perform simple recording tests.
One of the last tools I discovered while sailing in the automation ocean is Ghost Inspector. The main advantage of this service is that it’s cloud-based. With a wide range of functions that keep expanding, it makes the life of the tester really easy. You can schedule your tests to run periodically and the system alerts you with an email if any of the tests fail, which is truly a great feature.
Finally, while roaming the QA territory in the cyberspace, I came across some very useful resources.
The book “Lessons learned in Software Testing” by Cem Kaner is highly praised by almost everyone. I already ordered it and I will come back with feedback on it.
There’s a great podcast show called “Test Talks” by Joe Colantonio which is orientated towards automation and continuous delivery. Another good one is the podcast by the infamous “Ministry of Testing”, balancing between entertaining stories and valuable information.
There are also some websites with great resources about QA and testing. Some of the most interesting I stumbled upon are:
“QA Intelligence”, a blog from PractiTest.
“The Club”, from Ministry of Testing, supported by a big community.
“Satisfice, Inc.”, a blog from James Bach, great for testing newbies and experts alike.
“Stories from a Software Tester”, where Jeff Nyman shares tales from his testing experience in an approachable, friendly format.
The online information is endless and the software testing field is one constantly evolving, as new technologies emerge and new business models try to optimize production procedures.
The quest has just started and the journey seems exciting.
George Katsaros, QA Engineer at Orfium