Last week, another meetup in the series of Cortex Academy meetups took place, primarily aimed at future participants, but also for anyone who wants to directly get answers to all their questions and resolve uncertainties regarding IT professions.
The topic of the third meetup was software testing, and it was discussed in more detail by one of the best software testers in the region, Marko Dragović. If you were unable to attend, read everything you need to know about software testing in today’s blog through the interview we had with Marko.
Read a detailed explanation of software testing and this field below.
Can you explain what software testing is in terminology understandable to someone who is a beginner in the field of information technology?
Software testing is the process of evaluating and verifying a software product with the aim of ensuring that the application/system/modules do what they are supposed to do, in order to prevent errors, reduce development costs, improve system performance, and increase client trust, among other things.
Testing can also be defined as the process of assessing a system or its components to determine if they meet the specified requirements or not. In simple terms, testing is the execution of a system to identify any gaps, errors, or missing requirements.
Software testing identifies errors and issues in the development process so that they can be fixed before the product is launched. This approach ensures that only quality products are delivered to clients, which in turn increases customer satisfaction and trust.
What is the difference between automated and manual software testing, and what are the ultimate goals of the software testing process?
In terms of execution, testing is divided into manual and automated testing. Initially closely related, they also have some fundamental differences that need to be distinguished.
There are many ultimate goals of the testing process, and I would say that each is equally important. First and foremost, through testing, we evaluate the product and ensure that all technical requirements are met. Accordingly, we build trust with clients and provide information to stakeholders.
During the testing itself, functional defects are found, and not only that, but we also work on their prevention, all with the aim of minimizing product risks. Compliance with laws and regulations is also a significant goal. It should be noted that any changes in laws can have varying effects on existing functionalities or the creation of new ones.
Therefore, compliance with laws is a very important testing goal that often doesn’t take precedence on the priority list among other testing goals but is still significant. This is where we see the connection between two domains, legal terminology, and software engineering, as an interesting fact.
Can you tell us more about the course curriculum and program? Why is it designed that way, and what can participants expect after successfully completing it? What knowledge and skills will they acquire?
The course curriculum and program are designed based on my more than a decade of rich experience in this field. The program combines all the fundamentals of software testing with advanced training in one of the most important processes in software testing, which is the creation of complex test design calendars with a detailed analysis of the technical documentation describing the problems. It also integrates the issues related to databases and Unix/Linux and their application in software testing.
The course plan combines the implementation of static and dynamic testing and explains the role, application, and functionality of testing within the complex software development life cycle.
The course is based on extensive practical work, which will also touch upon theoretical aspects and demonstrate their implementation in practice.
The curriculum is comprehensive and requires full attendance, independent work, and numerous exercises to successfully complete. Candidates will be exposed to time pressure to simulate real business situations as much as possible and will be constantly evaluated and graded, as knowledge assessments with scoring will be conducted after each module.
After completing the training, participants can expect to gain the following knowledge and skills:
- Communication skills
- Analytical and logical thinking
- Technical project management skills in QA
- Ability to follow QA procedures
- Interpersonal skills
- Time management and prioritization
- Out-of-the-box thinking
- Adaptability to emerging changes
- Preparation and creation of complex software QA design calendars in both Montenegrin and English languages
- Understanding of testing tools
- Agile working methodologies
- QA reporting skills
- Unix/Linux in testing
- SQL in testing
How developed is this profession in our country, and is there formal education for it?
When comparing the timeframe from the past 10 years to the present, I can say that this profession is on an upward trajectory with an increasing demand for this profile by companies. This is partly due to the excellent performance of our IT companies that provide services to international companies, which require precise testing of software products.
Another reason is the increasing presence of international IT companies in our region, opening their branches, and such companies already have established QA departments. Therefore, their presence in our region leads to the creation of QA positions.
Unfortunately, I haven’t detected any formal education for this profile, and I believe that engineers in software testing deserve formal education in all technical faculties that include the study of programming skills or related IT institutions. I also believe that we should work on licensing such a profile for engineers.
Do domestic companies recognize the importance of software testing, and how do you see the future of this profession in our country?
Domestic companies definitely recognize the significance of software testing, as they have likely encountered situations where software products have lower quality than expected, leading to a potential loss of customer trust. To minimize this risk, companies have realized the importance of proper and comprehensive testing to increase the accuracy and reliability of systems, ensuring that all described and agreed-upon functionalities are delivered. However, I believe that the pace of investment and transformation in this area should be faster.
It is necessary for companies to genuinely believe in the benefits of testing and invest and plan accordingly for the long term, as this is the only way to guarantee good results. The future of this profession in our region has significant potential, and we are gradually moving forward each day.
Is knowledge of programming languages, UX/UI design, or other IT skills necessary for the profession of a manual QA tester?
One of the great advantages of this profession is that it allows candidates without prior knowledge or experience to enter the world of testing. However, any additional experience in programming languages or other IT skills is an added value that candidates bring, indicating that they have already been exposed to testing to some extent, even if they are not aware of it. Therefore, this profession remains open to a wide range of candidates, which is a huge advantage compared to other domains in IT.
Who would you recommend this course to?
First and foremost, the psychological profile of the candidate is crucial. The person must be psychologically stable, resilient, and ready for hard work and constantly acquiring new knowledge and skills, which can sometimes be frequent and time-consuming.
Learning speed and information processing are also of great importance, especially in complex projects where time frames are tightly defined and must be respected. The desire for continuous improvement plays a significant role as it drives individuals to constantly move forward.
Attention to detail and perfectionism are highly desirable qualities in this field. Good soft skills are also essential.
What knowledge, characteristics, and skills define a good software tester?
As I mentioned before, a tester should possess the following qualities:
- Good analytical skills
- Strict attention to detail
- Self-criticism
- High psychological stability
- Perceptiveness in terms of system stability
- Technical readiness for developing complex test calendars and test designs
- Familiarity with testing tools
- Knowledge of testing procedures (which can vary between companies)
- Familiarity with static detailed analysis of technical documentation
- Knowledge of databases, operating systems, and front-end and back-end processes
Does a QA tester test software from the perspective of the end user, and how do they report encountered errors?
Certainly, a QA tester must test software from the perspective of the end user because we always have to keep in mind that someone else will be using the software product. It is often overlooked by developers and testers, neglecting the end user’s viewpoint, both in terms of software development and testing.
We must consider all possible combinations that end users might apply and be intelligent in perceiving, discovering, and testing those scenarios before the end users do. There are many ways to report errors. In most cases, they are reported using testing tools that are aligned within the company or between the client company and the software development company.
There is a wide range of bug-tracking tools (QC, Jira, Mantis, etc.), and an individual cannot master all of them, nor should they be overly concerned, as knowledge of these tools can be acquired relatively easily. In many cases, bug reports are also submitted using complex tabular Excel sheets.
How important is it for the client company to clearly state the desired software functionalities and provide as much information as possible within the technical documentation during the contracting phase, and how should this be effectively communicated to the software tester?
This is the foundation of testing. It is crucial to emphasize the importance of such documentation, which is essential for all parties involved. Such documentation is typically created based on extensive and comprehensive meetings between both sides, where all business requirements, system modules, assumptions, functionalities, and detailed solutions are defined with great precision. These documents also form the basis for contracts between the parties.
Based on these documents, developers know what to build, and testers know what and how to test. Accordingly, the QA department creates complex test designs and calendars, which are later translated into test cases and scenarios with defined steps that other testers execute. If problems are detected, they are verified against the technical documentation to determine their validity. It should be noted that there are many cases where a problem discovered by a tester leads to further discussions between the parties, eventually uncovering a “design gap” in the technical documentation or initial sessions where functionalities were agreed upon. This then leads to improvements in the documentation, additional development, and further testing.
Based on everything mentioned above, creating clear technical documentation that outlines the desired software functionalities is always of critical importance.
Can you describe what a typical workday for a software tester looks like and who they collaborate with within and outside the company?
A typical workday for a software tester usually starts with a morning meeting with other team members, which may include members of the management as well. During this meeting, the current project status is discussed, reports from the previous day are reviewed, daily priorities are set, and critical issues that may block testing progress are addressed. These meetings can occur 2-3 times a day and involve “focal points” or leaders from different applications/areas who are responsible for their domains and teams.
After receiving instructions, the software tester begins executing testing tasks, reporting defects following the agreed-upon methodologies and processes established by the company. During their work, software testers collaborate with all programmers from different areas because they play a crucial role in consolidating all functionalities for final testing. Software testers also maintain their testing environments on a daily basis to ensure smooth testing operations.
Additionally, software testers often collaborate closely with clients to gather information essential for testing execution, whether it’s discussing testing steps or understanding reported issues.
If a software tester is also a team lead/manager, they have additional responsibilities such as monitoring testing progress, reporting daily to the management, tracking the internal progress of their team members for their professional development, creating QA documentation, test plans, resource scheduling, QA budgeting, and other related tasks.
Is a software tester proportionally compensated compared to the effort and complexity of their work in comparison to developers and designers?
The question of compensation is highly debatable and depends on various factors, including the company in which a person starts their professional engagement.
In the past, testers were generally paid less than developers. However, in recent years, there has been an increasing emphasis on raising the quality of software solutions and the role of testers in the entire process. As a result, there has been significant growth in the number of job opportunities worldwide for software testers.
Since testers bear significant responsibility for certifying software solutions, identifying defects, and prevention, their value has increased within the overall hierarchy. Today, we witness cases where the salaries of testing specialists can be higher than those of developers. Of course, this varies from company to company, depending on the value of the software solutions, and it is within each company’s discretion to set salaries for their employees. Therefore, precise answers cannot be given on this topic.
The salary range can vary and depends on numerous factors. As future testers, you can actively and successfully work in this field, constantly improving yourselves through various programs, and courses, and thereby prove to employers that your knowledge and skills are valuable.
In my personal opinion, a good software tester is highly compensated in the world today.
What is the real demand for testers in Cortex companies?
The realistic demand is a fact. We should understand that wherever software products are developed, there must be a need for professional testing of those products. The approach of replacing a tester with a developer to reduce human resource costs should not be applied because the results will certainly not be the same. Quality is non-negotiable when it comes to software, and one should never compromise it for cost reduction.
In my opinion, every IT company should have at least one professional software tester, and ideally, more, because software testing has many domains and various areas of specialization (functional testing, performance testing, penetration testing, etc.). A company that possesses these profiles of professional testers will undoubtedly guarantee the quality of its software solutions.
Can you provide some advice and recommendations for future course participants?
A piece of advice and recommendation would certainly be for future course participants to take the course plan and program seriously. It will require a lot of work to acquire and subsequently enhance the knowledge, and participants cannot successfully complete the training by merely attending the classes. They will need to invest additional independent effort, which, combined with strict deadlines, will add extra weight to their journey. That’s the essence of the training. Those who successfully complete this 9-month fundamental training will undoubtedly be able to independently perform software testing tasks. After that, their path remains wide open, and opportunities will only grow over time.
What are some mistakes you made at the beginning and throughout your career as lessons that you could pass on to future software testers?
I must say, it’s an excellent question, and I will selflessly share some lessons:
- Don’t think that you have absorbed all the knowledge. That should be an alarm bell because when you start understanding the system’s functionalities, you realize how vast the system is and how much you actually don’t know.
- Take advantage of more experienced colleagues who have more knowledge than you and absorb their knowledge as quickly as possible. They have acquired it over the years, and you have the opportunity to learn it faster through them.
- Always, and I mean always, write down things and details in notebooks or other computer tools. Remember only significant things and free your mind from things that can be written down.
- Continuously improve yourself through additional courses.
- Never, and I mean never, envy someone else’s success.
- Try to break free from relying too much on others; you will progress faster.
- Respect the hard work of others—help your colleagues and the help will be reciprocated.
- Never try to prove yourself too much because the employer will raise the bar because of you, putting others at risk. Be slightly ahead of others, but not to the extent that the difference between you and them is huge on a daily basis.
- Success comes with sacrifice. Don’t let your health or family suffer because of success.
- Take care of your health because when it is compromised due to work, everything loses its meaning.
- Dedicate time for yourself every day and spend it on training, preferably in the early morning.
If you want to continue studying the field of software testing, sign up at the link.