Feb 19, 2021, Mobile, Web

How to become a software tester?

Izabela Janota QA Specialist

Tester, Quality Assurance Specialist, QA Tester, Software Tester, QA Engineer, automation tester, manual tester… A person whose job is finding software bugs has many different names and their variety comes from diverse responsibilities. But first, let’s start with telling you a bit more about what software testing actually is.

Software testing – what’s it all about?

Testing allows a thorough verification of a software and answering two crucial questions:

  1.  ‘Is the product correctly developed?’ – does it meet all the standards and comply with the specifications?
  2. ‘Is the developed product correct?’ – does it meet all of the client’s requirements and expectations?

Tester’s job is to verify a software, track down all possible defects and report them to developers. Thanks to these activities, a released application has as few faults as possible and is ready for a seamless use. Having a tester in a software development team minimizes the risk of systems’ incorrect performance which translates into their high quality. 

Software tester vs. QA specialist – are they the same?

It’s worth mentioning that a tester’s job is not the same as a QA specialist’s. The latter has a slightly wider range of responsibilities. Apart from tests that detect errors, he’s also responsible for providing high quality software, optimizing processes and a whole software life cycle. 

What should you do to become a software tester?

Knowing who a software tester is and what he does, we can get to the topic of how to prepare oneself to become one. 

First, you can verify a few points to evaluate if your development path heads in the right direction. If you’re able to run a software, use it and give an opinion about its quality, it’s a good start. Such an opinion should include confirming that a particular area of an application works and that it has some defects. It’s also essential to signal that something works differently than established by a product owner. Apart from that, you should mark problems that can’t be unambiguously recognized as correct or incorrect. 

And what qualities count the most? Analytical thinking and good communication skills. The focus is not only on abilities and knowledge but also on soft skills. A professional tester should analyze a software’s performance, decompose it into prime factors and not be afraid of asking questions such as: ‘What’s the goal?‘, ‘Why?‘, ‘How should it work?‘.

How to work on your competences?

Developing your testing competences should start with a professional literature, internet sources (testing basics, ISTQB syllabus, free testing conferences, websites, blogs) or gaining knowledge from other experienced testers. A mentor’s support is key to achieve success.

Working as a tester requires everyday training. Necessary technical skills depend on a company’s type and software it creates. For example – in a company that tests web apps you’ll need to know HTML/CSS because most projects are based on these languages.

Nevertheless, there are some fundamental competencies that are always a must. One of them is software testing and ISTQB syllabus knowledge. Getting an ISTQB certificate is a nice-to-have option because it shows that you have a required know-how and that the team’s vocabulary is unitary. Another crucial skill is an ability to properly report errors. The title should be short, concise and indicate what doesn’t work correctly in a clear, understandable way. The content must be comprehensive for each team member and the reproduction steps should be bulleted and precise. 

An example of correct error report template:

  1. Title – short and concise including information on what works incorrectly and where.
  2. Priority – establishes how quick should an error be solved and indicates its seriousness: blocking, critical, important, insignificant from the business point of view and not affecting the rest of the system.
  3. Severity – an importance of error indicates how serious the defect is and how it influences the usage of an application or a particular function.
  4. Description – helps get quick information about a certain problem and direct a developer towards its cause.
  5. Environment/Version/Device – the fields that give information about an environment in which an error occurred (e.g. testing, production or other), type of a system (Windows or macOS), browser and its version, as well as a device.
  6. Preconditions– they determine what requirements should be met in order to proceed with the reproduction.
  7. Steps to reproduce – they inform about what needs to be done to provoke a certain error, the steps to reproduce a problem. 
  8. Actual result – determines an application’s current behaviour including a short description of occurred error, print screens or videos.
  9. Expected result – includes a description of how the app should work after fulfilling all of the above steps based on a documentation or a prepared set of requirements.
  10. Attachments – comprise of print screens, videos, logs from a developer’s console, and everything that might help in determining what caused an error and where it occurred. 

The template can be modified according to your needs, however all of the mentioned points are necessary to report it correctly.

Project management methodologies you should know

Currently, the most popular methodology of software development is Agile, including Scrum – cooperative and iterative at every stage of work. It considers testing as one of the most important phases of a software life cycle. Requirements and solutions evolve along with the cooperation as self-organizing and multi-function teams.

Other methodologies worth mentioning are Kanban and cascade Waterfall models. The first one focuses on prioritizing the requirements and putting them on a list in terms of importance. It allows you to eliminate low-efficiency stages. Whereas the latter consists of carrying out certain stages of work one after another in a strictly defined sequence. The whole project is written down in documentation well in advance which influences its lack of elasticity. 

Relational database and the SQL language

That’s not all. The next step is getting to know the basics of relational databases and the SQL language. A direct access to the database can make the process of testing easier and quicker, supporting an effective error analysis. Knowing the basics of one language will help learn other important ones like: C#, JavaScript, Java or PHP. It’s quite helpful in a tester’s job because ‘who else should look at a system from different perspectives rather than a tester?’. Combining technical and business knowledge, it’s more difficult to fall into monotony during testing, and having a particular knowledge about software development makes it easier to predict potential errors. Understanding the code also allows you to communicate with a developer on a different level and progress in automated testing. 

Practise, practise, practise

Testing experience can be acquired in different open software projects. There is a set of various websites that can help you learn and be used while testing. Some examples of websites for manual and automated testing are: The-internet.herokuapp, Restful-booker.herokuappSaucedemo. For API tests: Jsonplaceholder.typicode or Restful-booker.herokuapp. It’s also worth visiting Testingchallenges with a set of 10 testing challenges. 

Testing desktop, web and mobile (Android or iOS) applications is extremely essential to deliver a high class product, so you have to widen your competences in both manual and automated testing. It’s worth having knowledge in test management, including planning or creating test cases. It’s crucial especially for people who want to coordinate tests in the future and create documentation such as: user’s manuals, test scenarios and cases, reports, and plans. 

The importance of knowing HTTP, API and CI/CD

API testing includes testing according to the application’s layer to determine if it meets the requirements concerning functionality and reliability. Thanks to these tests, after designing a logic, you can build a test to check the correctness of responses and data. Testing a website, a web or mobile application, we are constantly dealing with these concepts. That’s why it’s worth exploring the topic and becoming familiar with the tools for API testing such as: Fiddler, Postman, Charles, Soap UI or Insomnia. Additional useful tools are: Git, Docker, and Selenium.

Testing is also a necessary element in the process of continuous integration (CI) and continuous development (CD). That’s why it’s valuable to know tools for CI/CD such as: Jenkins, Bitrise, GitLabCI and more. 

Testing blogs and conferences

The last suggestion for your personal development is replenishing knowledge with various testing blogs: Testerzy.pl, Testuj.pl, Toniebug.pl or Testujemy.mobi, as well as being an active participant of different meet-ups, conferences, and QA/testing webinars (TestingCup or TestWarez).

The personal development never stops

The IT industry is so wide that it’s hard to master all of its intricacies at once. It constantly changes and the tester’s great advantage is to be open to the new ways of working methodologies, technologies and approaches. You can’t give up after first failures. It’s better to have a solid plan of learning and implement it step by step. Don’t be afraid to ask questions and seek help from testers who are more experienced. Good luck!