An Examination of Context-Driven Testing via its Core 7 Guidelines:
Usually, I opt for the freeway when heading to the airport, as it offers the quickest route and helps me avoid tolls. However, on a specific day, I chose a longer local road route with a toll. Why? Because I sought a few additional minutes with a dear friend who had come a long way to visit our family for the weekend. Astonishingly, what seemed like an unfortunate choice ended up being the best given the particular context.
Recommended IPTV Service Providers
- IPTVGREAT – Rating 4.8/5 ( 600+ Reviews )
- IPTVRESALE – Rating 5/5 ( 200+ Reviews )
- IPTVGANG – Rating 4.7/5 ( 1200+ Reviews )
- IPTVUNLOCK – Rating 5/5 ( 65 Reviews )
- IPTVFOLLOW -Rating 5/5 ( 48 Reviews )
- IPTVTOPS – Rating 5/5 ( 43 Reviews )
Now, consider the following situations:
What if my fuel was running low?
What if I didn’t have enough money?
In these scenarios, I’d have made a different decision. Why? Context, it matters.
[Picture source]
Decisions become context-driven when based on factors such as:
- The people concerned
- Current situations
- Aims
- Available alternatives
- Feelings, and so forth.
So, what precisely does context-driven testing entail?
Context-driven testing is a mindset or methodology towards testing, a notion proposed by Cem Kaner, James Bach & Bret Pettichord. Their famous book, Lessons Learned in Software Testing, has extensive information about this concept.
In association with context-driven testing, there are 7 fundamental principles, parts of which are directly quoted from their book:
#1) The merit of any practice hinges on its context.
#2) Good practices exist in certain contexts, but no universally best practices exist.
#3) Human collaboration forms the most important part of a project’s context.
#4) Over time, projects tend to develop in unforeseen ways.
#5) The product is a solution. If it doesn’t solve the problem, it’s not effective.
#6) A demanding intellectual process is essential for effective software testing.
#7) Only collaborative skills and judgment throughout the project can let us test our products at the appropriate times in the right ways.
I won’t delve into each principle’s clarification, as the experts themselves have explained it here.
Instead, I’ll provide an explanation based on a scenario demonstrating my perspective on Context-Driven Testing.
A Portrayal of Context-Driven Testing:
Imagine starting a testing project – Project A, which includes end-to-end testing for a web application.
What would be my approach?
Based on conventional procedures, I would follow these steps:
- Gather requirements and familiarize myself with the application
- Develop a Test plan
- Prepare Test documentation, including Test scenarios, Test cases, Traceability Matrix, etc.
- Review all documentation for approval
- Establish the QA environment and test data
- Carry out the tests
- Report any bugs found
- Create and distribute test execution status reports, etc.
If I question myself, “What led me to determine this procedure?” My reply would be, it’s based on best practices, QA standards, industry norms, and previous experience. Have I only repeated what I learned or saw others do?
Is this approach flawed in any way? Not at all. It still works because it provides a sense of predictability and proven effectiveness. Yet, can it guarantee optimal outcomes in every context?
Unlikely. Why?
Because every project brings along unique circumstances:
- Documented vs. undocumented requirements
- Working with local teams vs. geographically scattered teams
- Development and Testing teams from the same organization vs. rivals
- Having enough time vs. constrained schedules
- Team composition – Novices vs. experienced individuals, trained vs. untrained personnel
- Availability of tools – Manual testing vs. Test management tool usage
- Nature of the project – Projects that require strict compliance (for example, FDA or banking) vs. experimental ones (such as social media)
- Technical aspects of the project, such as testing a web application would require a different approach than testing a Windows app
- Client expectations (Some want daily detailed reports, while others appreciate concise summaries)
- Process framework (Agile vs. Traditional, scripted vs. exploratory testing)
This list isn’t comprehensive, and as you know, each project has numerous variables.
Context-driven testing involves allowing these conditions to dictate your testing practices, techniques, and their definitions, rather than solely depending on industry-accepted “best practices.”
Suppose these are the specific situations I am encountering for Project A:
- I am collaborating with a team of 5, which includes 4 newcomers and 1 experienced tester.
- I don’t have documented requirements.
- My team resides in India, while the development team is in the US, necessitating cross-time zone cooperation.
- The client demands a comprehensive status report every day.
- We use a web-based bug tracking tool like Mantis or Bugzilla as our main tool.
- I have to carry out two rounds of testing within ten days, with only three days allocated for test documentation.
Here’s a tentative action plan:
1) Given that there are many beginners in the team, comprehensive peer reviews are essential.
2) We require at least two requirement discussion sessions with the Business Analyst and the Development team. The geographical separation implies these meetings must be formal, as direct interaction opportunities are limited.
3) With regard to documentation, the testing timeline is tight. The more documentation we generate, the more review cycles will be needed resulting in increased time spent. Consequently, our documentation efforts will concentrate on the primary End-to-End Test Cases, whilst the remaining will undergo exploratory testing.
4) Daily status reports will be compiled and sent at the end of day throughout the test execution phase.
5) As most testing will be exploratory, it’s wise to devote some time to creating brief notes for each executed test. This way, proper coverage is assured, and a record of what has been tested is maintained.
6) Any bugs found will be reported immediately through the Mantis bug tracking system. As the teams work in different time zones, delays may occur before the Development team gets clarifications. To address this, we’ll organize daily calls at a mutually convenient time where the QA team will illustrate bug reproduction. This negates waiting or the need for follow-ups.
And so on.
Having developed an overarching strategy, draft a basic test plan that includes these points. Now, you’re all set to begin a testing project, having carefully considered and personalized your strategy for successful results.
Summing Up:
Context-driven testing implies allowing your circumstances (not the standards) to inform your main inputs and shape your testing strategy. It encourages us to look past predefined concepts and consider everything around us.
Personally, I greatly admire this concept as testing practices are commonly seen as inflexible and imitative. People tend to duplicate methods that have proven successful in the past without considering their suitability for the current context. This perception hinders individuals from utilizing their creativity, analytical abilities, and decision-making skills. To deepen your understanding, I recommend exploring the provided links.
I wish you a fruitful journey in the world of context-driven testing.