Author: parwalrahul

Rahul Parwal is an Expert Software Tester. He is a recipient of the prestigious Jerry Weinberg Testing Excellence Award. Rahul is an avid reader, blogger, and conference speaker who likes to share his thoughts on various social media platforms. Recently, he has also been inducted as a LambdaTest Spartan, & a Browserstack Champion for his work in the field of software testing. Presently, he works as a Senior Software Engineer with ifm engineering in India.
Requirement Gathering Blog Series, Part 2: Requirements in the Agile World

This is Part 2 of the Requirement Gathering Blog series by Rahul Parwal. We’d like to thank him for sharing his expertise with the community through this information-packed piece. Check out the blog on Understanding Requirements for Part 1 of this series.

In the agile world, do we still have a requirement gathering phase? Isn’t it a feed for waterfall?

In the Agile methodology, the requirement-gathering “phase” is not as rigid and formal as in the traditional Waterfall method. In Agile, the requirement-gathering “process” is more iterative and collaborative, with ongoing communication and feedback between the software development team and the stakeholders.

Instead of gathering all the requirements upfront and basing the entire project on them, Agile allows for the requirements to evolve and change as the project progresses. This allows for more flexibility and adaptability, as well as a better alignment with the changing needs and priorities of the stakeholders.

However, Agile still emphasizes the importance of clearly understanding the requirements and goals of the project, and incorporates mechanisms for capturing and refining requirements throughout the development process.

In the agile world, is there still a thing called the requirement? Hasn’t it changed to Acceptance criteria or Definition of Done?

Yes, in the Agile world, there is still a concept of requirements. Requirements refer to the needs and expectations of the stakeholders in terms of what they want the project to deliver. As explained in the previous answer, In Agile, the requirements are typically captured in a flexible and iterative manner, with the understanding that they may change and evolve as the project progresses.

The Agile approach recognizes that requirements can be difficult to fully specify in the beginning of a project and that it is more efficient to develop a minimum viable product (MVP) and iterate based on feedback from stakeholders. This allows for the requirements to be refined and refined as the project progresses, leading to a better alignment with the changing needs and priorities of the stakeholders.

However, the requirement still plays a critical role in guiding the development process and ensuring that the end product meets the needs of the stakeholders. Regarding, acceptance criteria or definition of done, they are just a form of documenting the requirements from the end-user or technical perspective. Refer to the image below to understand the various forms in which requirements are available in the modern software development processes:

requirement gathering 1
Acceptance Criteria

As a tester working in agile environment, how can we prepare ourselves to ask good questions during the requirement meeting itself?

As a tester working in an agile environment, it is crucial to be proactive and ask good questions during the requirement meetings. To prepare ourselves, we can make use of Context Free Questions (CFQs) which are important early on in the process. CFQs can be used to ask questions about both the process and the product. 
For the process, we can ask questions like:

1. Who is the client?
2. What is a highly successful solution really worth to this client?
3. What is the real reason for wanting to solve this problem?
4. Should we use a single design team, or more than one?
5. Who should be on the team(s)?
6. How much time do we have for this project?
7. What is your trade-off between time and value?
8. Where else can the solution to this design problem be obtained?
9. Can we copy something that already exists? 

For the product, we can ask questions like:
1. What problems does this product solve?
2. What problems could this product create?
3. What environment is this product likely to encounter?
4. What kind of precision is required or desired in the product?

Along with these Context Free Questions (CFQs), it is also important to ask Meta questions (i.e., questions about questioning) like:
1. Am I asking too many questions?
2. Are my questions relevant? (Which one not? Why not?)
3. Are you the right person to ask these questions?
4. Is it okay if I write down the answers?
5. Can I also share you one copy of that?
6. Can we plan a F2F meeting?
7. Is there someone else whom I should ask questions?
8. Is there something else that I should be asking you?
9. Can I come back with more questions later?

Asking CFQs and meta questions can have several advantages. It saves us from situations like “Oh! We thought you knew this!”, which can arise when assumptions are made about what is already known. 

By asking CFQs and meta-questions, we can ensure that all relevant information is captured, assumptions are challenged, and ambiguities are cleared. This helps us to have a clear understanding of the requirements, which in turn leads to effective testing.

How will you deal with frequently changing requirements in agile world where you are releasing every week in production?

Dealing with frequently changing requirements in an Agile environment can be challenging. In some cases, quality also gets compromised due to mismanagement or partial implementation of agile. Here are some strategies that can be used:

1. Collaboration: Ensure that the entire team including the stakeholders, developers, and testers are aligned and communicating regularly to understand the changing requirements and their impact on the project.
2. Prioritization: Prioritize the requirements based on their importance and impact on the project and the users. This will help in focusing on the most critical changes and adapting to them quickly.
3. Documentation: Use agile documentation practices like user stories, acceptance criteria, and agile templates to capture the requirements effectively and quickly.
4. Continuous Testing: Implement continuous testing practices like test driven development, unit testing, different levels of automation in testing, continuous integration, and continuous delivery to ensure that the application is tested thoroughly and the changes are integrated and deployed to production quickly and efficiently.
5. Adaptability: Be adaptable and flexible in your approach, as requirements can change frequently in an Agile environment. Be open to new ideas and be ready to make changes to your testing approach to accommodate the changing requirements.

How to overcome from trend of testing against acceptance criteria only and think beyond acceptance criteria for testing?

Let’s understand a core problem with basing development and testing only on the stated acceptance criteria, or requirement.

1. Requirements are often not complete or full.
2. There will be gaps, and inconsistencies.
3. Interpretation by different people is different causing more ambiguity.

Now, if the design and development has been done on this half-baked base, it would mostly be half baked. Doing testing on that half-baked design / development can be risky and unprofessional. 

It’s crucial to remember that the requirement documents or software requirements specifications (SRS) are just maps of the requirements, and not the requirements themselves. As a tester, it’s important to bring in your own insights, experience, understanding, and exploration to the table. When the map (the requirement document) and the territory (the actual product) don’t match, it’s always important to trust the territory.

By thinking beyond the acceptance criteria and taking a holistic approach to testing, we can ensure that the development and design are based on a solid foundation, and that the final product meets the needs of the client and end-users.

00
Requirement Gathering Blog Series, Part 1: Understanding Requirements

This is the Part 1 of Requirement Gathering Workbook by Rahul Parwal. We’d like to thank him for sharing his expertise with the community through this information-packed piece.

The purpose of this Workbook | Session Notes | Summary Document is to help testers understand the importance of requirement gathering and how it can add massive value to the testing process. The document will provide insights and guidance on how to gather and analyze requirements effectively, with the aim of testing beyond the written requirements. The document will highlight the importance of exploring the requirements thoroughly, considering the perspectives of all stakeholders, and utilizing the tester’s own knowledge, experience, and insights to create a comprehensive and effective testing plan.

Prepared By:

tdUs6OPxpVJ3vVziTWS6o0Miv7u6o95II0kSsiK89cw1QPA4hWg

These session notes are the result of incorporating feedback and addressing questions raised by Chandra Pandey, Brijesh Deb, Sahil Kaushal, Mayuri Ubhad, Aravind M, Shoaib Ahmed, Balaji Ponnada, Apoorva Ram, Mayuri Ubhad, Jim, Ralf Roeber, and Anees Shaikh. Their insights have enabled me to tailor the workshop to address the most common and relevant concerns of participants. The notes serve as a reference guide for review, reinforcement, and further learning after completion of the workshop, organized by section.

Understanding Requirements

  • How we decide that we have understood the requirements as it is required? OR what all parameters should be considered to ensure that requirements are clear? OR how you can make sure not just you but your fellow testers are also clear with requirements?

Determining that requirements have been properly understood is crucial for the success of any project. However, in reality it often gets difficult to know if the requirements have actually been understood correctly as we mostly work with the requirement documents and multiple sources of ambiguities. The more time and resources spent upfront to understand and verify the requirements, the better the chances of success. This includes effective communication with stakeholders, thorough analysis, and proper documentation. The following strategies can help increase the odds of achieving this goal of understanding requirements fully:

  1. Technical Reviews: Technical reviews of requirements help to identify any gaps, ambiguities, or misalignments with the intended project outcome. This can involve subject matter experts, architects, testers and developers to ensure that the requirements meet the necessary technical standards.
  2. Project Reviews or Demos: Regular project reviews are a valuable opportunity to assess the status of the project and ensure that the requirements are aligned with the project objectives. These reviews also provide a platform for stakeholders to ask questions, provide feedback, and raise any concerns.
  3. Summary Reports: Regularly updated summary reports provide a high-level overview of the project’s progress and highlight any deviations from the original requirements. This helps to identify and address any issues early on, before they become significant roadblocks.
  4. Measure Communication: Effective communication is crucial to understanding requirements. Regularly tracking the effectiveness of communication channels and identifying areas for improvement can help ensure that all stakeholders are informed and on the same page.
  5. Measure Satisfaction – Take Feedbacks: Regular feedback from stakeholders is crucial to understanding their level of satisfaction with the project. This can help identify any areas where the requirements are not being met, and corrective actions can be taken to improve the overall project outcome.
  6. Include everyone who might object later: It’s essential to engage with all stakeholders who might have a direct impact on the project later. This includes end-users, customers, and stakeholders who might not be involved in the day-to-day project management but can have a significant impact on the project’s outcome.

In conclusion, ensuring that requirements have been understood correctly is essential to the success of a project. A combination of technical reviews, project reviews, summary reports, effective communication, stakeholder feedback, and engagement with all relevant parties can help improve the odds of success and looking beyond the explicit requirements.

Requirement Gathering Pyramid
Requirement Pyramid
  • How to keep track of all the information we receive on daily basis related to the product/project? Some good tips and tricks to efficiently manage all the information gathered by the testers.

Note taking is an essential skill for any tester. It requires consistent practice to get good at it and once you get good at it, it will give you exponential results. It’s a powerful meta skill.

I would recommend you read this paper by Michael Bolton on this topic, i.e., Microsoft Word – An Exploratory Tester’s Notebook – 63.doc (developsense.com)

Here is a quick summary if you want to just have a high level gist of it:

Exploratory Tester's Notebook by Michael Bolton
Michael Bolton’s
  • How to deal with situation when you are onboard for testing late in the project and there are many issues with unclear requirements?

When you are on board for testing late in a project with unclear requirements, it can be challenging to catch up with the project and ensure proper testing is performed. However, there are several steps you can take to address this situation:

  1. Get up to speed on the project: Start by getting a clear understanding of the project requirements, timeline, and goals. This can be done through meetings with project managers, stakeholders, and team members. Use context free questions to get this info. Refer to Context-Free Questions for Testing – DevelopSense
  2. Assess the requirements: Evaluate the existing requirements and identify any gaps, ambiguities, or inaccuracies. Document these issues and work with the project team to resolve them. You can use a query tracker to track and discuss these issues. Ex: Shared google sheet document or a OneNote notebook.
  3. Collaborate with the team: Work closely with the development team and other stakeholders to ensure that all requirements are well understood and properly defined. This can help you to ensure that your testing is aligned with the project goals and requirements.
  4. Focus on risk-based testing: In a situation where requirements are unclear, it is especially important to focus on testing areas that pose the greatest risk to the project. This can help you to ensure that critical issues are identified and addressed as soon as possible.
  5. Document your testing: Keeping a clear and detailed record of your testing activities and results can help you to demonstrate the value of your work and ensure that any issues you identify are taken seriously by the project team. Debrief your test notes with the team to get a feed for your next testing cycles. 

By taking these steps and working closely with the project team, you can help to ensure that the project is properly tested and delivered successfully, even when requirements are unclear.

Requirements and Dilbert
Requirements and Dilbert
  • When you are new in any domain and how to acquire more knowledge about that domain so that you will understand requirement better. Is it really necessary to have more knowledge in specific domain to understand project requirements correctly, with this can we achieve customers perspective while writing tests.

Acquiring more knowledge about a domain when you are new to it is important in order to better understand the project requirements. This can be done through various methods such as:

  1. Reading relevant material – Start by reading up on the industry, market trends, and any relevant technical material related to the domain.
  2. Interacting with domain experts – Speak with experts in the field to gain a deeper understanding of the domain and its challenges. Join communities or follow relevant handles on social media.
  3. Attending relevant trainings and workshops – Attending training, conferences, workshops and other events related to the domain can provide a wealth of information and also help you network with other professionals in the field.
  4. Participating in hands-on projects – Hands-on experience is a valuable way to gain knowledge about a domain. You can contribute to projects that are relevant to the domain or take on a personal project to build your knowledge.

By having more knowledge about the domain, you can develop a deeper understanding of the requirements, and better anticipate the needs and perspectives of the customers. This will result in more effective and comprehensive testing, and better products that meet the needs of the customers.

This concludes the Part 1 of the Requirement Gathering Workbook. Stay tuned to The Test Tribe blog for the upcoming parts. Till then, keep learning!

00
How to Get a Job in Software Testing as a Fresher?

Job in Software Testing

Technology & Software is one of the fastest-growing sectors in the world today. In the tech industry, the number of people doubles every five years and more than half of the workforce has less than five years of experience. With so much development going on in these areas, the market for testing, automation, and quality analysis is growing exponentially (with few minor exceptions/corrections) too. The trend has continued for over 20 years now and hopefully will remain the same going forward. If you are someone who is just about to complete your engineering, or has recently completed your engineering and looking for a job, Software Testing could be an interesting field to be in.

However, in reality (thanks to our engineering/education curriculums), most fresh graduates actually don’t even have the slightest of an idea about ‘testing’, or ‘what working as a software tester’ is. Most testers who work for industry companies became testers by chance. This scenario is definitely changing with time but the gap is still very huge.

Through this article, I would like to talk about some tips & ideas on “How to get a job in software testing”. But wait, If you are a total beginner to this term, then I would suggest you to refer to these blog posts on Testing is…  and What Is A Tester? by Michael Bolton to get an idea about what Software Testing actually is.

If you are interested in self-learning the basics of software testing before you begin with a job search, then you can start with the BBST 3.0 Course on Testing Foundations by Dr. Cem Kaner. It is one of the most comprehensive courses on Software Testing Foundations. If you need free notes for this course, you can get them here.

So, If testing interests you as a good potential career, Here are some of the popular ways (not in any order) that have helped people to seek a job in software testing as a fresher:

Job in Software Testing

  • Campus Placement: Most IT Companies (including specialized testing companies) hire freshers from Campus Placements. There are On-Campus & Off-Campus Drives that take place for passing out batches. Skills that help in such drives:
      • Aptitude for Learning
      • Good Written & Spoken English
      • Reasoning & Logical Abilities
      • Programming & Technical Knowledge: The degree to which this is expected varies from company to company. Generally, Product based companies expect these to a good level. In contrast, companies who are focused on service might want to access how quickly can you upskill with training and support. However, there are no fixed rules and it’s mostly context-driven.
  • Post Graduate Diploma Courses: There are good courses that emphasize practical and industry-oriented learning by institutions like the Centre of Development for Advanced Computing (CDAC). A lot of companies visit such institutes for hiring freshers. There are many new promising options coming up in this format too. If you don’t have much familiarity with the tech world then this might be a good option for you.
  • Internship / Externship Programmes: Many testing and IT companies offer internship and externship programs to college students. Start with such an opportunity and add value to the work you are doing there. They would most likely offer you a full-time role once you complete your graduation. Things that would help you to get such an opportunity:
      • Build a profile on professional platforms like LinkedIn.
      • Watch out for opportunities.
      • Do 2-3 projects till your third year. It doesn’t matter how big or fancy it is. What matters is that you should know what you have done.
      • Learn to showcase your skills & work.
      • Approach relevant people to check if they can refer you to any such opportunity. As Anuj Magazine says, “Your first message should not be asking for help”. Keep that in mind!
      • Approach your college placement officer/alumni network if they can help you with any such opportunity.
      • Look forward to learning the basic skills that can help you be eligible for such opportunities.
  • Testing Courses: There are courses that are open to all graduation streams. They will guide you on the basics of testing, programming, tech skills, interview skills, etc. In some cases, they can also help you with job search assistance. Despite the fact that there are some genuine courses in this area, most of them are simply designed to generate revenue for instructors. Prior to joining one of these courses/trainers/institutions, do some background checking. Seek out the feedback of people who have already been through such courses. Do not take advertised testimonials at face value.
  • Job Portals: Learn about testing & tech and apply for jobs via portals. Good popular platforms are Naukri.com and Indeed.com. Most recruitment consultancies scout for profiles from these portals. If you are lucky, you will get a call.
  • Job Referrals: Another popular method for getting a job is to ask for referrals. You can also ask your seniors/network that, what you can do to get a referral. Make it easy for people to refer you. Focus on networking within your space by being active in software testing conferences, workshops, and meetups.  
  • LinkedIn Posts: Apply for jobs that people post on Linkedin. Drop mails to the concerned HR, write a cover letter, share your work portfolio (if you have one and you want to maximize your chances of selection) along with your resume for such job applications. It is likely that you would have to compete with a large number of equally competent professionals, so you should do whatever makes you stand out from the crowd.
  • Automation in Testing Courses: There are many institutes that provide training on UI / API / Mobile Automation that is industry-oriented. If you are interested in automation, scripting, or programming and want to start your career in this field, apply for these courses. Again, Seek out the feedback of people who have already been through such courses.

So, those were some of the basic tips that will hopefully assist you in getting a job in the exciting field of software testing. Also, I plan to write one advance post on how to obtain a job in software testing for people who are ready to put in some effort in building a relevant portfolio. As an open market today, the software industry offers a lot of different possibilities, opportunities, and ways to make your way in.

Stay Tuned!

By – Rahul Parwal

00
X