Some of the fundamental responsibilities of a software tester include conducting tests at various levels and verifying whether the software has been developed according to specified requirements (in reality, there are many more goals that can be set for a software tester, but we are focusing on the basics here). This article will focus on the essential habits and skills of a tester that should be cultivated and developed, leading not only to becoming a better tester but also a better professional, regardless of the career path you choose.
The tester is often the first person to interact with the initial version of a built system, and it is crucial for them to view it through the eyes of the customer. They "put themselves in the customer's shoes" and use the system as the customer would. Unfortunately, in many companies, there is still a perception of testers being relegated to a secondary role (a less important role within the overall development process), and there are various reasons for this situation. Some of it stems from the organizational work culture, and some... from the tester themselves. However, this is a topic for another article. We are far from creating the image that a tester is the most crucial person in system creation, but they are certainly part of the puzzle, the result of which should be a good/functional product from the perspective of the customer/user. The absence of software testing and verification against requirements can often lead to a product disaster.
Therefore, it is important to understand that individuals verifying software are necessary, and everyone should have one main GOAL: to create a valuable product that satisfies the customer/users while generating revenue for our company. To achieve this, we must collaborate; otherwise, we are cutting the branch we are sitting on. That's enough for the introduction; now we will focus solely on the habits/skills of a tester that should be developed during their career.
Discipline, Precision, Focus
The work of a tester often involves performing repetitive tasks. It's important to remember that not all tasks can be automated, and some must be carried out manually. This is when fatigue, exhaustion, and a lack of enthusiasm for repeating the same tasks (e.g., tests) can set in. However, the job of a tester, a good tester, often demands this, and one cannot afford to skip testing activities that may impact the quality of the produced system. What should we most commonly pay attention to:
Regression Testing
One of the most tedious tasks for a tester is the repetition of the same tests (what can be automated, of course, should be, but not everything and not always). It's beneficial to cultivate the habit of always conducting thorough planned regression tests (taking risks into account) and not skipping certain tests, even if they usually worked in previous versions.
Retesting
Another common task for a tester is conducting retests on defects that have been addressed. It's crucial to remember that every resolved defect should be verified in a new version to ensure that it has indeed been fixed. Closing issues based on trust alone is not advisable.
Be Accurate
Another characteristic of a good tester that requires attention is precision. Don't perform tests haphazardly; think about the test case, analyze the test, consider the test data, verify your defect report, and so on. This kind of thinking allows for the detection of defects in areas that were not initially considered and the creation of valuable defect reports.
Work with Focus
Most people need focus to excel in their work (although there are those who can work well only with loud music :)). During testing, it's beneficial to apply the principle of zero distractions. You can turn off (or at least silence) your phone, close email clients, messaging apps, Facebook, cat videos, etc., and concentrate on conducting tests. In our case, this works very well, and we apply the so-called time windows during which no one disturbs those conducting tests (unless there's a fire...). A tester working with focus for 1.5 hours is often able to accomplish significantly more with better quality than in a situation where they are distracted during an 8-hour workday.
Develop Your Testing Competencies
A productive tester is one who enhances both their soft skills and testing techniques. There are periods in work when things are a bit less hectic, providing an opportunity to allocate time for personal development. As Goethe said, "He who does not advance, goes backward" — in the dynamic world of IT, this holds immense significance. Consistency is crucial in development - allocate 30 minutes today and decide which areas you'll focus on for improvement. Set goals for yourself and strive to achieve them:
There are many ways to enhance your competencies, such as:
- Participation in Meetups
Regular meetups of the testing community take place in practically every larger city. It's worth participating in them and gaining knowledge. In addition to the opportunity to acquire new knowledge at such meetings, we also have the chance to meet many people and exchange experiences with them. However, it's worth not limiting yourself to meetups exclusively for testers - participating in meetings where issues related to requirements or software development processes are discussed is also valuable.
- Reading Books on Testing, Publications, Articles
Although there are still relatively few books covering aspects of testing, it's worth familiarizing yourself with those available on the market. Additionally, staying current with articles in the testing domain is beneficial.
- Participation in Training
Another way to acquire testing knowledge is by participating in paid training in the area that interests us. Of course, the financial aspect poses a challenge, but from time to time, employers should provide the opportunity for such training. It's valuable if the training is conducted by practitioners. On our part, we invite you to explore our offer - Tester PRO Academy (fundamental classes).
- Learning Tools
Using tools in the software testing process often allows for significant time savings by automating certain tasks. It's essential to stay up-to-date with the latest trends and capabilities of the tools we use in our daily work. Certainly, it's worth getting to know tools for test management and bug reporting. It's not just about understanding how to use them as a user; delving into the administration of the tool can be valuable. You might find ways to improve the efficiency of the testing/development process you're involved in.
- Soft Skills
In addition to knowledge of the theory and practice of software testing, it's also important to develop skills in the area of soft skills, which are often crucial in the daily work of a software tester. Fundamental soft skills that you should be familiar with include assertiveness, teamwork, time management, communication skills, and proactiveness.
Task Planning
The activity of a tester, like that of any other person, requires planning. Even in a situation where you receive a task list from a supervisor, it's valuable to independently plan our work. In our case, forward planning works best - meaning at the end of the day, we plan testing activities for the entire next day. We outline what we will test, what needs verification, and how we will approach it. We know that the better we plan our testing tasks, the better we will perform our work. We use either the JIRA tool or each of us individually, for example, with the NOZBE tool, where we organize our tasks to be done (without details) - details are in the JIRA tool. Additionally, we recommend grouping our activities into batches - if, for example, we know that we have to make several calls during the day, such as to developers in different locations, it's worth doing them consecutively.
Effective Communication
Effective communication is one of the first skills that a software tester should work on. A tester is obligated to provide clear test result reports, with varying degrees of detail depending on the recipients. The report presented to, for example, the team leader of the developers will differ from the one presented to the management. Communication can take many forms - from sending an email, reporting a defect, to presenting test results at a management meeting that will decide on the system's sales launch. However, practically all communication techniques have common features that a tester should follow:
- Convey Precise Information
When providing information about conducted tests, it's crucial to be very precise. Sharing information like "the system has been tested" practically adds no value. There must be clear information on the scope of the system that has been verified, the types of defects reported, the status of defects, and their priority. This is just an example, but you must be very accurate when conveying information about the tested product because stakeholders often make decisions based on this information.
- Tailor Information to the Audience
When conveying information, always consider who the information is intended for. The head of programmers needs different information about the tested product than the head of the entire organization. You must adjust the information accordingly to your audience.
- Inform Without Prejudice
If the information concerns the tested product, you cannot afford personal remarks about the individuals creating the software. Statements like "... because I knew that Kamil messed up this functionality" can quickly lead to testers and developers being on different teams, causing significant collaboration issues. When reporting bugs or irregularities, try to do it impersonally without pointing fingers.
- Truth
There's nothing worse than lying when providing information about the tested system. Decision-makers often base their decisions on our information regarding the product being created. It should never happen that in some part of our work-related information, we tell a lie - for example, saying "we completed 100% of planned regression tests" when, in reality, we only completed 75%.
Be Proactive
As we've already mentioned, one of the software tester's tasks is to ensure that the software provided to the client is of the highest quality. Of course, there have been and will be situations where the delivered software is far from ideal, or even the implementation at the client's end has failed. After such failures, it's common to witness a "breakdown" on the part of software testers. The so-called complaining begins, blaming poor-quality requirements, unresolved defects, or simply insufficient time for testing. It's essential for us as testers not to fall into the trap of complaining. Instead, we should reflect on what we did wrong in this project and what we need to improve on our end. Below are some of our ideas regarding proactive approaches during software testing - of course, applicable to various situations:
- Take Responsibility for Requirements
Take responsibility for the quality of the requirements you are creating. If they are incomplete, ask for clarification. It's essential to be persistent and not be discouraged after initial setbacks (read: being ignored by their creators). It's not worth immediately escalating the issue and complaining to the supervisor that "the requirements are useless." First, talk to the people responsible for the requirements and point out where the gaps are. Consider introducing regular requirement reviews in which you will participate. Much depends on good requirements, so it's worth investing time in them.
- Detailed Defect Reporting
One of the more disheartening things for a software tester is that their reported defects are left untouched, receiving no response. Instead of getting upset with developers and adopting an attitude like "then I won't report anything," reflect on why this situation has occurred. It's valuable to have a meeting with the development team and establish a standard procedure for working on bug reports. Let's refactor our bug reports - maybe they were imprecise, or perhaps they didn't concern critical parts of the system, etc. Reporting defects is one of the fundamental activities of a tester, a way of communicating detected issues, and it must be precise. Maybe it's worth reviewing defect reports together with developers/analysts to understand their expectations.
- Review of Test Cases/Scenarios
Periodically reviewing existing test cases and updating them is crucial. Create new ones, modify existing ones, or update test data. We often forget about this, but it's one of the seven fundamental principles of testing that test cases become outdated and must be regularly updated.
- Review of Defect List
In the case of a long-term project where the system is continuously tested and several versions have been deployed to the client, it's worth periodically reviewing existing defects (even those not marked as resolved). Verify whether the issue still exists in the latest software version, update the version number, or add a screenshot. However, you will also frequently encounter situations where a defect has been resolved (perhaps incidentally, with other changes) and can be officially closed. This helps maintain relative order in our defect management tool.