6 Basic Skills That Every Tester (Mainly Fresher) Should Have
This tutorial will explain the top Software Testing Skills for guiding you on how to become a skilled software tester:
Software Testing or QA is the best area in the IT industry that many newcomers use for their initiation into a software career. This is despite the fact that some might feel the pay isn’t super high (which we don’t agree with but that’s not the point this article is trying to make.)
It can be very simplistic to think that a tester’s job is to find bugs when there is so much more to it. Lots of ingredients/software testing skills go into being successful.
This article is a quick list of how to become a skilled software tester.
Key Software Testing Skills
#1) Testing Knowledge
Simply put, you need to speak the testing language. Understanding some key terminology such as test plan, test strategy, defect, test case, test data, severity, priority, etc. is really critical. This is not to say that surface-level knowledge is enough. But it’s a start.
As you progress further and gather more skills for software testing:
- Strengthen your knowledge by reading some of the classic books on the subject.
- Understand the end-to-end SQA lifecycle and how to become a software tester.
- Go for a certification process that will give you your QA core testing knowledge.
- Engage in testing related social media channels and groups to keep your software tester skills sharp.
#2) Agile and Other SDLC Knowledge
Once you get a good understanding of testing concepts, it is now time to understand how you and a QA team fit into the big picture of the SDLC. Most teams these days use the Agile model for software development although there are quite a few that still use the waterfall model.
[image source]
The importance of understanding SDLC is a significant part of your overall testing knowledge and can be instrumental in setting you up for success. This is because once you know what your role is, the expectations that you should have from other cross-functional teams, and their expectations of you- your job becomes so much easier.
Once again, the steps listed in point #1 to gain expertise apply here too. Reading books, blogs, listening to podcasts, and engaging with Agile/SDLC-related groups, certifications, etc. are excellent ways to augment your software testing skills with SDLC concepts.
Test Automation is on the rise and it’s not a fad. It is here to stay. There is so much more than coding and tool know-how to test automation.
It is a challenge and exercises your knowledgeable decision-making skills when you are:
- Finding the right tool to automate with.
- Finding the right test cases to automate.
- Finding the right programming language.
- Finding the correct test data.
- Finding the right test harness (where to execute, locally, remotely, or on the cloud).
- Finding the right results to report.
- Finding the test management and reporting software, etc.
Therefore, equip yourself with the latest and greatest in terms of automation software, test harness standards, test tools, test automation frameworks, etc.
If need be, use the below resources as starting points to enhance the skills required for software testing:
#4) API Testing Skills
Almost all software applications use APIs of some kind. Understanding what APIs are, how to test them, the tools involved, and the challenges that might come up are some of the areas related to APIs and API testing that testers need to know. The good news is that API testing knowledge is easy to acquire and most API tools are easy to use.
[image source]
New to API testing? Check this out:
#5) Programming Languages
Coding is scary for many. However, exclusive manual testers are becoming rarer and rarer. It is a whole other debate if automated testing will replace manual testing (I don’t think it will) but for the scope of this article, let’s suffice it to say that for longevity as a software tester, programming is an important skill to have.
Different teams use different test automation frameworks that rely heavily on coding in Python, C#, Java, JavaScript, Groovy, etc. Most test automation does not use crazy complicated coding concepts but being lithe and limber with coding languages is a must.
The biggest hurdle to becoming a good coder is not starting. Start with small concepts. Understand different control structures, basics of OOPs concepts, data types, structures, etc. Once again, get books, try hands-on practices, and challenge yourself. Here is a list of sites that can help.
Suggested Reading =>>
#6) DevOps Knowledge
DevOps is a set of tools, processes, and best practices that bridges the gap between development and operations. The ultimate goal is to have a product that is always ready to ship at any time. This means code should always be current, tested, and should build successfully. Continuous testing is a big part of this process.
Testing teams usually have test tasks at every stage of the release pipeline to enhance confidence in the software we are releasing. DevOps automation tools such as Jenkins, Docker, and Kubernetes are widely used and the better the testing teams understand these processes and tools, the better we are equipped to create meaningful and targeted tests.
Follow these articles if you are looking for a good resource on end-to-end DevOps processes:
#7) Database Skills
Databases are a significant part of most software system architecture. Therefore, database testing knowledge is one of the must-have skills for a software tester. Understanding where and how data is stored vs. how it is retrieved is an essential part of test validation.
On a high-level DB testing involves validation of the 4 critical aspects- Atomicity, Consistency, Isolation, and Durability- of a DB. To achieve this, we use CRUD operations. Create, Retrieve, Update, and Delete.
While this is an overly simplistic explanation of what DB testing entails, we as testers need DB skills for some of the non-traditional testing tasks as well.
- To store and retrieve test run results from a DB. Some automation frameworks store all test run results per environment in a DB for posterity.
- To run queries to mine test data as per the test’s requirement.
- To set up reports and alerts in your bug tracking tools/project management tools. Strictly speaking, this isn’t a DB but the querying skill is very comparable and is an essential software tester skill.
#8) Cloud Platform Knowledge
Cloud computing offers a range of application and infrastructure hosting services to software teams that help them launch faster, monitor better and scale on demand. Amazon WebServices AWS, Microsoft Azure, Google Cloud are some of the most popular cloud providers out there.
[image source]
With cloud elements becoming an important and integral part of software architecture, understanding the cloud world is a skill that testers will need to catch up on. Although the cloud is relatively newer, it is catching on fast and articles such as below can be instrumental in initiating your cloud journey:
So far, we looked into all the hard/technical skills, but let’s divert our focus to some of the soft skills for testers.
#9) Superb Reporting Skills
We deliver important news about whether the software meets the requirements, if we are ready to ship and when, if we expect a certain functionality to not work 100%, etc. Therefore, how we deliver or report critical test information is crucial.
While there are many in-depth articles about good reporting guidelines, let’s highlight a few key items:
- Always edit your reports, verbal or written, based on your audience. Too many technical details are lost on a business team and too few will leave the developers confused.
- Report trends and not individual symptoms. Problems don’t happen in isolation. If there is one problem, chances are there are more. Find what’s causing an issue and its impact instead of just an individual case.
- When delivering go and no-go decision reports, back them up with data.
- Keep the report easy to interpret.
Craving more reporting titbits? Here are some helpful articles:
#10) Good Communication Skills
Good communication skills go a long way in any profession and are absolutely a must as a tester requirement. Good communication does not just mean speaking fluent English(although that helps) but it is about:
- Anticipating the needs of the other party when providing information and making sure they get what they are looking for.
- Being clear in your request when expecting information.
- Being empathetic and kind when listening and providing feedback.
- Setting clear processes and boundaries on the expected mode of operation.
- Proactively keeping all parties informed and not insulating the test team or other cross-functional teams from pertaining news.
Further Reading =>>
#11) Exceptional Writing Ability
You would be right to think that writing, reporting, etc. relate to communication skills. However, in your journey to gather software tester skills you will encounter several written documents that testers use on a day-to-day basis. Test plans, Test cases, test results, and defect reports are just a few to name.
Even with Agile and light documentation models, there is quite a bit of writing involved in the life of a tester. All the tips we discussed in reporting and communication skills apply here too.
Deep dive into Software Testing Documentation Guide for more testing-centric test documentation.
Further Reading =>>
#12) Excellent Team Skills
Testers don’t work in isolation. From the time a software project kicks off, testers interact with several cross-functional teams from the requirement gathering stage till the software goes live. To be a good software tester, you should love interacting with people and gain satisfaction from helping others.
If you envision leading a software testing team at some point in your career, it is especially essential to work on yourself being a positive presence, a fair leader, and a technically competent mentor. It is not an exaggeration to say that putting your team and its goals first should be your absolute priority and rank higher than your individual goals and aspirations.
Also Read =>> Team Building In Software Testing
#13) Critical Thinking
Thinking out of the box is a really important requirement for a tester because if we only follow the well-traveled path the software might not behave in unanticipated ways.
Here are some important points:
- Question established software paths and testing patterns.
- Ask ‘why’ and ‘what if’ questions.
- If you have opinions about how something should function vs. how it actually does, propose changes.
- Be critical and unravel creative ways to test and validate the AUT(Application Under Test.)
Granted creative thinking skills for software testers cannot be measured, but they can be nurtured and help make you a force to reckon with.
#14) Prioritising
Once more, not a testing-centric skill but a highly useful skill for a tester. The ability to hear music amidst all the noise is a very valuable skill to cultivate. Quick decision-making on what’s important and the risks involved when time is of short supply is essential.
Everyone has a different approach but your experience and the uniqueness of your context determine your exact method for deciding what takes precedence and what can be on the back burner.
Follow this quick video tutorial to learn how to create and use Pareto charts:
??
Give it a try: Pareto Analysis, Pareto Chart
#15) Patience
Finally, patience pays. It takes time, effort, and endless amounts of patience:
- To get up to speed, if you are new
- For the test setup to be created
- For AUT to stabilize so you can get meaningful test results
- To run the same repetitive tests and keep your attention levels optimum
- To retry test effort to recreate that one pesky defect that isn’t always reproducible
- To explain why you don’t think the software is not ready for release
- To push back a release when there isn’t enough time to run the entire regression suite
Bonus – 6 More Skills That Every Tester Should Possess
#1) Documentation
Documentation is essential to testing. Most companies assign this task to newcomers. To succeed, you should have a good vocabulary because the rest of the things such as documentation standards, etc. are not in your control and depend on the team’s and company’s processes.
Also, make sure that you see the value of the documentation process. The advantages are many – they help you track requirement changes, trace your test steps, log your work, etc.
Recommended read => Why Documentation is Important in Software Testing
#2) Test Preparation
Of all the documents available, the following can’t be neglected. These are also called deliverable documents and they bridge client, developer, and tester understanding.
a) Test Plan: Charts the flow of testing from start to finish.
Test plan portrays the scope and activities of the testing phase. Created by the QA lead, the team has to contribute and stay updated about everything that is written in the test plan.
Some teams have multiple levels of test plans: Master Plans and Phase wise plans.
A test plan must have:
- Project Name and Version
- Test plan identifiers: Creator, draft no., date created, etc.
- Introduction: Overview of the project, objective, and constraints
- References: List of references used as the input. (make sure you use the accurate and latest versions)
- Test items: Modules, version, scope, out-of-scope, etc.
- Overall Test Approach/Test Strategy: Tools to use, defect tracking process, levels of testing to perform, etc.
- Pass/ Fail item criteria: Test Execution guidelines
- Suspension & Resumption criteria
- Test deliverables: Test case, test reports, bug report, test metrics, etc.
- Test environment details
- Team Roster with Point-of-contact info. for each module or testing type
- Test Estimates: Time and effort. Budget details are confidential and you will not find them here
- Risks and mitigation plans
- Approvals
- Other guidelines
Also read =>
b) Test scenarios:
One-line pointers on ‘what to test’ based on each requirement and usually documented and tracked through spreadsheets.
Most of them contain:
- Module/Component/function name (login, admin, registration, etc.)
- Scenario ID is for reference(E.g.: TS_Login_001)
- Scenario Description: ‘What to Test’ E.g.: Validate if login allows users with valid credentials to log in successfully
- Scenario Importance: To prioritize in case of insufficient time – High/Medium/Low
- Requirement ID: For traceability
Further Reading =>
c) Test cases:
Accurate Test cases give accurate test results. Spreadsheets are still the popular medium for test case writing, especially for beginners, even though some companies adapt test management tools. The basis for test case writing is the SRS/FRD/Req document. But, it is not often sufficient, so you will have to use a lot of assumptions and discussions with BA/Dev teams.
Writing effective test cases is the most important qualification a tester must have. Usually, all test cases are categorized as positive/negative. Positive test case gives valid inputs and gets positive results. Negative test case is gets invalid inputs and gets the exact error message.
For more information on these, check:
Some of the common attributes that all test cases have are:
- Scenario ID: Taken from the test scenario document
- Test case ID: For unique identification and tracking. E.g.: TC_login_001
- Test description: Brief explanation of the test condition tested
- Steps to execute: Detailed step by steps instructions on how to test
- Test data: Data supplied to the test steps
- Expected result: Outcome as expected
- Actual result: Response of the AUT when the test is run
- Status: Pass/Fail/No Run/Incomplete/Blocked – Describes the result of the test
- Comments: To additional details
- Executed by: Tester’s name
- Executed date: The date on which the test is run
- Defect ID: Defect logged against the test case, in case of test failure
- Configuration details: OS, Browser, Platform, device information (optional)
Recommended read =>
#3) Test Process – What Tests to Perform
There are a huge number of testing types, but not all of them can be carried out on that AUT. Time, budget, nature of the business, nature of the application, and client’s interest are the key players in the choice of what tests to do on the application.
For example: If it is an online commerce portal, then stress testing and load testing are mandatory. However, some of the test types that should not be missed are:
#4) Testing at the Partial Development Stage
Generally, with medium-level and start-up companies, there is limited time and resources. Testers here might start their testing process before module integration, which means we might be doing unit and intermediary integration tests.
It is important to note that the results from these stages cannot be counted as accurate, so you might have to plan for an overall black box test once everything is ready-to-go. Overlooking that part might prove costly and testing, ineffective.
#5) Bug Report Document
Hands-on, this is the most critical QA document you will ever be making.
The following are the fields a good bug report must have:
- Defect ID: Usually a serial number
- Defect Description: One-line explanation of the problem
- Location: Module/area of the AUT where the problem is found
- Build number: Version and code build no.
- Steps to reproduce: List of steps that lead you to the problem
- Severity: Set a level to describe the seriousness of the problem – Low, medium, high, blocker, etc.
- Priority: Set by developers to determine the order in which the defect will be fixed (P1, P2, P3, etc. P1- highest)
- Assigned to: Owner of the defect at that point of time
- Reported by: Tester’s name
- Status: Different status to represent the bug life cycle stage
- New: Bug is found and is just reported
- Open: Validated by the QA lead
- Assigned: Sent to the dev lead for assignment to the respective developer
- In Progress/Work in Progress: Dev started working on it
- Fixed/Resolved: Developer is done working on it
- Verified/Closed: QA Team has retested and found the bug fixed
- Retest: QA team does not agree with the resolution by Dev and further progress the bug for rework
- Duplicate: Similar bug already exists
- Deferred: Valid bug but will be fixed in later releases
- Invalid: Not a bug or is not reproducible or there is not enough information
Further reading =>
#6) Sign-off Process
Sign off and sending final documentation is the QA lead/manager’s task. However, the team has to submit the above documents (Test scenario, Test case, and defect log document) for final review and audit.
Make sure, you proofread all of them and send the final versions.
Also read =>
Conclusion
But if you have ever asked yourself how to be a good software tester, patience above everything else is an essential skill. Which of these 15 skills do you most agree with? Is there anything that you think we missed on the list?
Please share your feedback and comments below.
All the best for your career!