While writing this article, I am worried & concerned. Not about this article, nah! But about the future of Software Testing and Software Testers in particular. Recently during an interview drive, I came across a bunch of (yes, maximum of them) so-called Software testers who don’t even know the basics of Software Testing. Leave alone the required practical experience. It felt sad that testers don’t even know the basic QA terminologies, didn’t understand its importance, take it too lightly as a career, are not willing to learn, etc. At one end industry is moving towards Automated QA and on the other hand here we are with a bunch of novice testers for whom even the foundations are shaky.
What is the purpose of Software Testing? Just to make a living for you? Get a job & then crawl up the ladder? A secondary profession which doesn’t require ANY skill? Anybody can do that? I don’t want to program, let’s just opt for Testing – that’s easy. Click here & there, enter something, whoa! Work done. That was easy. Wake Up! Software Testing is not just a technology, it’s a mindset.
Software Testing Concepts
How do ensure every requirement is tested? Nah? Ever heard about RTM? Nah! Okay fine. What’s the difference between Sanity & Regression? Nah? Any idea why do we do regression? What’s a Test environment? Why do you need one? What are the different test design techniques you use? Defect Life Cycle, at least you should know that? Oh Great! Thank You. What’s the difference between Deferred & Closed? Fixed and Ready for Test? Who decides these defects can be marked as Deferred? Who does the Unit tests & when? Ever seen a Test Plan? Nah? Okay. Any idea what’s a Test Plan? Hufff…What are the difference Testing types? What’s the difference between System, System Integration and End-to-End testing? The list goes on…and…on…and…on!
I remember learning about all these concepts in the first 3 months of my professional career. And here we have people with more than 3 years of professional work experience who still go clueless when asked about it. What’s wrong? Yeah! Something is not right here. How come a 3-year experienced Software Tester doesn’t know about these basics? I am shocked. You have ‘ISTQB certified’ stamped on your resume and then you sit clueless in an interview. How come? Learn the basics first. It is not that difficult. Or you think it is not required? If yes, then you are not even qualified to be a Software Tester. Software Testing is not just about few clicks & text, it’s a vast technology with ocean of concepts & terminologies. If not all – please clear your basic understanding of Software Testing.
Software Testing is as much about the process as it is about the technology. Why just Testing, the complete Software delivery is a complicated process. Why do you think we have different methodologies in use? Ever heard of Scrum Masters? What’s their role? How long is your Sprint duration? What’s Verification & Validation in a V-Model? How do you estimate User Stories? What’s the role of a Product Owner? Okay, at least explain the waterfall model. That’s easy, right? Why do you prefer Agile over waterfall? What’s TDD? Or a BDD? What’s the difference between a Use Case and a User Story? Can you draw a sample burndown chart? Do you capture Agile velocity for your team? What all metrics do you capture for the Software Testing process? What are the deliverable at different phases of a STLC?
Everything needs a process. Things are random at start, but then you need to streamline the process to reap the benefits. There is a process to car manufacturing. There is a process to home building. There is a process to business running. There is a process in everything. So is the case for Software Testing. Software development & Testing is a complicated process involving people with different roles like developers, database administrators, business analysts, software testers, project managers, product owners, etc. It is imperative that you are aware of the different methodologies & its related concepts employed for a successful delivery – be it waterfall, V-Model, Spiral or the recently popular Agile methodology.
Test Design & Coverage
Test Design is the most important part of Software Testing. It can make it or break it. A lenient Test Design effort will always result in bugs creeping into the production environment, ready to be discovered & cause a failure. Every Software Tester – functional, performance, security, automation, etc. – must have designed Test cases once in his/her career. Almost in every interview you take as a QA Engineer, there will be questions around the Test Design phase. Some may ask to write scenarios for testing a e-commerce website. Others may ask you to test a pen, a coke can or even a table. The idea is to gauge how effectively you understand the science behind Test design, i.e. the approach you take to understand the object’s behavior and then write scenarios to test its functionality including some negative tests. There are in-numerous techniques devised for effective test design. If not all, you should at least be aware about the most popular techniques like Boundary Value analysis, Equivalence partitioning, Orthogonal Arrays, etc. Don’t just mug up, understand the concept behind every technique you study or employ.
Every Test Design activity has one motto – 100% coverage. That’s where we have requirement traceability metrics to trace requirements to test design all way through till defects raised. Being a Software Tester it is your responsibility to ensure that you are testing ALL the requirements, leaving none. Before going for your next interview, at least have the basic knowledge about the Test design phase & requirements coverage.
Know the Application & Domain
Ask some to explain their current project and there goes the candidature crashing. What, you as a tester, will do if you cannot even explain your current project? A Software tester has to have the knowledge about the application as well as its domain. How the data flows within the application, what are the integration points, what different types of testing is required, what’s the architecture, etc. Explaining about a project tells much more about your articulation skills & technical understanding than any other specific question. If you have a sound knowledge about the project you are currently working on – it gives an idea to the interviewer that yes, you understand it well. Domain is equally important. Software Testing is a multi-faceted skill set. A good Software tester need to have application, technical, programming, domain & process knowledge. He/she needs to be a jack of all trades and a master of one!
Online – Offline | Training – Tutorials
A funny incident happened at a recent interview. A girl with 3-years work experience in her resume revealed (yeah! She was at least honest) that her current profile is just defect retesting. After a yearlong persuasion she was able to convince her manager to change her profile from so-called functional BA to Quality Analyst. But all in vain. Since the tasks assigned to her were meager defect retesting. She had no idea about Software testing, the methodologies, the techniques, the process, nothing. “This is my first interview for Software Testing, have come just for learning purpose” she was honest. “I am willing to learn, what I shall study?” she asked. But ‘Interview’ is not a place to discuss learning plans. If you are really into learning – there is loads of information available online, numerous websites preaching Software Testing, several institutes with live project training. If you change nothing, nothing will change. You yourself have to kick-start the learning and cover the basics. Only then somebody can help you grow further. Show them what you have learnt yourself, and they might offer support!
Fake it till you Make It
The industry is transitioning fast. Manual Testing is a thing of the past. Organizations are now looking for super-testers who can code, write test cases, execute manually, lead, communicate status, mentor freshers, have tools hands-on experience, are technology-aware, and what not. It is obvious that people will fake it just to get a job.
“If someone offers you an opportunity and you don’t know how to do it – say yes, and then learn how to do it”
Who understands this better than a Software tester? Every other tester is fighting to fake it just to get a job. We can then learn on the way. BUT. Only fake how much you can handle. I have seen many resumes full of technologies and jargon. It takes not more than a minute to call their bluff – “I have just started on it. Not much experience”, “Yes, I worked only for 2 Months on it”, “Actually I am self-learning”, etc. Your resume is the reflection of your professional capabilities. I don’t deny that faking is a necessity now-a-days, but at least be prepared for it. If you are faking a 2-year experience in a tool, at least learn the basics first. It’s like “Yes I play pretty decent songs on guitar. By the way, how to hold it right?” 😛
Communication is the key to put across your ideas and views. Develop your communication skills in order to discuss effectively, debate efficiently and talk fluently. Nobody wants a team member who can’t communicate well within a team. You might be technically strong, but it is of no use unless communicated properly. Which one will you choose – a silent human or a speaking tree?
Wake Up and Learn
Who is to blame for this chaos? The industry? Yeah! To an extent. Now-a-days we don’t see relevant training in QA Fundamentals being organized by IT organizations. The QA is being neglected which will eventually have a hard hitting impact to the overall Software industry. I remember one meme apt for this scenario,
- Manager: What if we train people and then they leave?
- CEO/CTO: What if we don’t and they stay? 😉
Exactly my point. Organizations now-a-days are not keen on developing (or training) the fundamentals. Everything now-a-days is about the tools, automation, technologies, etc. But what about the foundation? Who will lay a strong foundation on which to build your technically advanced enterprises? What good is an automation expert who doesn’t know the difference between a defect’s priority and severity? Or what to do with a tool if you don’t know the Software Testing Life Cycle? Give them the test cases & they will automate without even knowing the importance or relevance of these regression tests. Learning a tool without knowing a way to track the Test coverage is futile. Enterprises need to organize training calendars keeping in mind the foundations. Only if entry-level (<3 years) QA Testers are good, they can groom the coming generations. It’s time to re-focus!
What about you? Is it only the organization’s responsibility to train you? Nah! In today’s fierce competitive industry, enterprises will anyway find someone better than you. You got a chance only if you keep improving. Don’t find excuses, rather find a way. Don’t sit in the comfort zone, rather push the boundaries. Don’t sit satisfied, rather strive for more. Don’t just expect, rather raise the expectations. Don’t just read, rather share it with others 😉