Authored by Software tester Rozalia Baé – a first-time contributor to Women Testers e-magazine.
“The people who are crazy enough to think they can change the world are the ones who do.” – Steven Jobs
Design thinking for software testing can be used for the purpose of generating creative ideas and thereby discovering its own creativity. It offers the possibility to find new solutions by other means.
Design Thinking
“Innovation distinguishes between a leader and a follower.” -Steven Jobs
Design Thinking cannot be described in just one word. Each individual feels addressed to a particular word and interprets for himself/herself what it means to him/her. Design Thinking has many definitions and each of them is unique, diverse and inspiring.
Design Thinking should help to localize problems, visualize them, and find an individual and creative solution for them. One of the goals is to present the complexity of the problems in small steps and to solve them. It also serves to show a change of perspective and to find solutions by some other means. In doing so, one’s own creativity is to be revealed. Design Thinking can be applied to discover one’s own creativity and develop it further.
Design Thinking for Software Testing
“It’s not a faith in technology. It’s faith in people.” – Steven Jobs
In the age of globalization, it is necessary to enter in the competition and to keep up with the competition. For software testing, it means developing innovative test methods, test types, and test strategies, just as much as testing. This can be achieved by a fundamental change in thought and action. All software testers, developers and managers should be involved in this process of change. Such an innovative practice requires open-minded employees, managers and the company itself.
Design Thinking Algorithms
“Sometimes when you innovate, you make mistakes. It is best to admit them quickly, and get on with improving your other innovations.” – Steven Jobs
Design Thinking is a systematic approach to complex problems. It is geared to the needs of users/customers and is intended to create innovations.
The process is based on three components:
The different perspectives for consideration of the problem are expressed within the following questions:
- Human Values (desirability): what exactly is desired?
- Business (viability): what is economically feasible?
- Technology (feasibility): what is useful/realistic?
Only when all the above questions have been satisfactorily answered can one consider this as a path to innovation.
The core elements of Design Thinking are
- Multidisciplinary Teams
- Variable Space
- Design Thinking Process
Tips on better Brainstorming:
- Defer judgment
- Encourage wild ideas
- Build on the ideas of others
- Stay focused on the topic
- One conversation at a time
- Be visual
- Go for quantity
Design Thinking for Software Testing: Example
The application will be illustrated and clarified with the help of an example.
Answers to the questions:
- Human Values (desirability): what exactly is desired?
- Improvement of software quality through a
better te sting methodology
- Improvement of software quality through a
- Business (viability): what is economically feasible?
- It is economically viable
- Technologie (feasibility): what is useful/realistic?
- It is useful and realistic
Multidisciplinary Teams
A creative process requires people from various fields with their diversity, culture and different experiences. This is why multidisciplinary teams are a win for every company. Diversity is also an important success factor for software testing.
In order to generate innovative ideas for software testing, people from diverse areas might be involved. Other than for software testers, there also is a need for programmers
Variable Space
The aim of testing is to improve and enhance the quality of the software. Thus, testing is always closely tied to finding creative and innovative ideas.
Design Thinking offers the possibility to generate a creative space (work environment) where creativity can evolve, detached from purely analytical and linear thinking.
The goal of this creative space is to produce a feeling of freedom, thriving and serenity.
Example:
Discover new heuristics for Software Testing with Design Thinking
What are Heuristics?
Heuristic is a strategy that uses information to control problem solving in humans and machines. Heuristics are “rules of thumb”, they are experiential assumptions and also intuitive judgments.
The heuristic is a technique for experiential software testers that can help with problem-solving as well as discovering defects. A heuristic method is then used to quickly come up with a solution that is close to the best possible solution.
In software tests, heuristics provide a simple framework. It is based on past data and probabilities and helps to effectively test programs. By highlighting the location where bugs are found, a heuristic can find new important bugs, no matter how much you know about the program.
Design Thinking Process
Design Thinking process is an iterative process and offers feedback on the previous process steps.
Steps:
- Understand
- Observe
- Point of View
- Ideate
- Prototype
- Test
References: HPI School of Design Thinking
Understand
The goal here is to understand the importance of software testing more precisely and emphasize it. Furthermore, here the resulting problems, both the past and the future ones, can be explained. Just as well as to how the risks have risen.
Consider: The vulnerabilities that have emerged in solving the problem of testing are explained and presented here
Observe
Here the insights from observation are gained. This step is essential because one directly deals with the topic of testing, problems, and risks. Talks are held and they are also heard. Each person explains their own approach and how they solve problems during testing. Everything is documented in a most precise manner.
Consider: The observations resulting from the understanding are analyzed and discussed here
Point of View
This step leads to new perspectives and is the foundation of the creative process. It shows that software testing requires more creative and innovative solutions with regard to the problems and risks. Furthermore, hereby the problems and risks from various perspectives are addressed and investigated.
Consider: The solution is discussed and presented here: finding new heuristics to increase finding bugs
Ideate
In this step, ideas are collected without evaluating them. The collection of ideas takes place in the form of brainstorming, mind mapping, etc. Ideas that are initially were considered unrealistic can help find new ideas (see above “Tips on better Brainstorming”). In terms of software testing, ideas for solving problems are sought here in order to solve the problems and risks.
Consider: To collect new ideas for heuristics think of the below methods.
New Heuristic generation (examples)
→ Palindrome
→ Permutations
→ Play dice
→ Crosswords
→ Dichotomy
→ Ambiguity
→ Puzzles
→ Learning of test oracles
→ Transpose numbers
→ Use of data anomalies
Prototype
A prototype is developed using the aforementioned steps. This prototype can be in the form of a model. The prototype is a possible approach to solving a problem, which is at first investigated and checked. The prototype is illustrated and visualized.
Consider: The Prototype Heuristic Model
New Heuristics | Example | |
Palindrome | functional testing | System Testing |
Permutations | security testing | |
Play dice | visual testing | |
Crosswords | exploratory testing | |
Dichotomy | data validation testing | |
Ambiguity | stress testing | |
Puzzles | functional testing | |
Learning of test oracles | software migration | |
Transpose numbers | integration testing | |
Use of data anomalies | non functional testing |
Test
The prototype is used and tested immediately. For software testing, this could mean that the solution is successful and could be integrated into testing as a fixed essential part. Or it can be seen as a way to further expand the idea.
Consider: These heuristics can be used in sprints (agile) to test how they work. In a positive application, these can later be included in the regression test
Conclusion
“Have the courage to follow your heart and intuition. They somehow know what you truly want to become.” – Steven Jobs
Design Thinking is DYNAMIC and can therefore also be adapted and applied to all disciplines.
References
[1] dschool.stanford.edu
https://dschool.stanford.edu/groups/k12/wiki/17cff/Steps_in_a_Design_Thinking_Process.html
https://dschool.stanford.edu/resources-collections/a-virtual-crash-course-in-design-thinking
[2] hpi-academy.de
https://hpi-academy.de/en/design-thinking/what-is-design-thinking.html
https://hpi.de/en/dtrp/publications/overview.html
[3] ideo.com
https://designthinking.ideo.com/
https://www.ideo.com/post/design-thinking-for-educators
https://challenges.openideo.com/blog/seven-tips-on-better-brainstorming
[4] Book: “Design Thinking Live”
Christoph Meinel, Ulrich Weinberg, Timm Krohn
[5] Harvard Business Review
“The Evolution of Design Thinking”, September 2015
[6] wikipedia
https://en.wikipedia.org/wiki/Design_thinking
[7] Test Heuristics Cheat Sheet
http://testobsessed.com/wp-content/uploads/2011/04/testheuristicscheatsheetv1.pdf
[8] Heuristics of Software Testability
http://www.satisfice.com/tools/testability.pdf
Author bio:
Rozalia Baé works as a Software Test Engineer in scrum environment. As a student she worked for SAP Germany and started there her career as a Software Test Engineer. She has testing experience in industry and commerce software, medical software and mobile app testing. She is a Certified Tester of the ISTQB Foundation Level (CTFL) and Certified Tester Advanced Level – Test Manager (CTAL-TM).