Sumario -> El siguiente artículo esta relacionado con la técnica de Brainstorming vinculada con la actividad del software testing. Como se podrá leer, se trae mucho del concepto inicial y después se lo va adaptando para personalizarlo en testing.
Detalle -> Según Brainstorming – Wikipedia: Brainstorming is a group or individual creativity technique by which efforts are made to find a conclusion for a specific problem by gathering a list of ideas spontaneously contributed by its member(s). The term was popularized by Alex Faickney Osborn in the 1953 book Applied Imagination. Osborn claimed that brainstorming was more effective than individuals working alone in generating ideas, although more recent research has questioned this conclusion. Today, the term is used as a catch all for all group ideation sessions.
Brainstorming – When, Why & How do we use it?
When do we use it?
# To identify quality problems.
# To suggest causes of quality problems.
# To suggest ways to improve processes.
# To suggest ways of implementing improvement activities.
Why do I use it ?
# Encourages team members to work together in a cooperative fashion.
# It generates a lot of ideas in a short amount of time.
How do I use it ?
# Every person in the group must give an idea as their turn arises in the rotation or pass until the next round.
# Often forces even shy people to participate .
# Can create pressure to contribute.
# Group members simply give ideas as they come to mind .
# Tends to create a more relaxed atmosphere.
# Can cause domination by more vocal members.
Brainstorming Use Case Scenarios For Testing With Mind Maps
In an earlier blog post, I discussed Use Case Scenarios. The basic idea is that a use case is used to capture a behavior with pre-conditions, steps of the behavior and expected results. That use case can easily be flipped to create a test case (expected results first). A use case describes a behavior, but during that behavior, there are many alternate behaviors that could happen in each step. In that post, I left alternate cases as an exercise for the reader. I mainly left them off, at the time, because I figured they were not too difficult and it really didn’t enhance the specific topic at the time.
Now I present a new enhanced method for capturing the use case scenarios, including brainstorming those alternate behaviors of the use case. I do not present this as a mature and well-used method. In fact, it is something I’ve just recently dreamt up and have yet to try in real life. However, it seems clear that it is a good method to help capture test cases when using use case scenarios.
Mind maps are well known to be a great tool for brainstorming ideas. So what if we combined the two by capturing the use case scenario in a mind map? In mind maps, each node can have notes associated, so those note areas can be used to capture the details of a use case.
I’ll use the same example use case that I used in that blog post.
Use Case Title – Purchase Item
Primary Actor – Purchaser
Actor(s) – Web browser, Web site
Scope – Product Web site
Level – User Goal
Purchaser – Want to purchase item
Web site – Want to sell item, take purchaser’s payment information, update inventory, notify user with transaction summary
Preconditions – Purchaser already has web browser open and pointed to the web page with the item they wish to purchase.
Guarantee – User is notified if transaction was completed or not, transaction logs are updated
Main Success Scenario:
- Purchaser selects “purchase” for an item from the web page.
- The shopping cart page is displayed and the purchaser updates the quantity.
- Purchaser selects “checkout”.
- The payment information page is displayed and the purchaser adds payment information.
- The purchaser selects “purchase now”.
- The web site displays a “processing” message and begins to process payment information
- When payment processing is complete, website displays a “transaction completed” message.
- The website sends an email to the purchaser containing a summary of the transaction.
- The website updates inventory, and sends email to the shipping department with order information.
- Extensions – I will leave extensions off to make this example easier.
In a mind map, it looks like this:
The primary node in the mind map is the use case. The notes for that node contain all details of the use case up to the main flow (e.g. title, primary actor, scope, level, goals, preconditions and guarantee). Then the next level of nodes in the mind map are:
One node for Nominal Flow
One node for Alternate Flows
This is where things get interesting. The Alternate Flows node can spawn a new node for each step in the original flow. This is where the brainstorming begins. Seeing everything at once helps the mind to creatively discover the alternate behaviors that can happen at each step. A new node is spawned from each step of the nominal flow for an alternative flow that could happen.
Now the bottom level of nodes contains all the alternative behaviors that can happen and need to be described. Each node for an alternate behavior can describe the alternate flow in its notes field. The steps to describe where the flow alternates from the main flow and then what happens afterward are put in the nodes.
Let’s see what this looks like:
Now, the organization in the mind map doesn’t have to be exactly as I’ve described it. I’m using Mindmanager for mind map design which has some auto documentation features. I’ve architected the mind map design such that the auto-documentation comes out as a relatively clean document of the use case scenarios.
Well, that’s basically the idea in a nutshell. I think this would be a great way to capture use case scenarios and alternates to help generate test cases. I see many benefits from this method:
A mind map helps you brainstorm the alternate behaviors
Mind mapping tool can auto document the test cases
Changing information in mind map doesn’t require document changes – just regenerate document
As map can be on one page, it is easier to distribute to others on project for ideas as well
I’ll hopefully get the opportunity to test this out on a project soon and see if it is as helpful as it appears. If you try it, please drop me a note and let me know how it worked out for you.
How to Run a Brainstorming Session
Brainstorming sessions are great for solving problems and generating ideas. You will enhance your results by remembering a few key guidelines for running your session.
1. Create Specific Questions in Advance
To engage a group, it pays to have a plan. For brainstorming, the plan can be quite simple. Start your session with a question. For example, “What words describe the personality our product might want to convey?” is a good question to seed the flow of ideas. By asking for something specific (words in this case), you make it easy for people to immediately offer ideas. Have about five to seven questions ready for a one hour session. They can even be fun or silly if that helps bring out good ideas.
2. Set the Ground Rules
Brainstorming sessions should be abo0ut creating a quantity of ideas. Make it clear up front that judging or analyzing ideas, straying onto tangents or giving long drawn out descriptions are not allowed.
3. Get everyone involved
Some people are more aggressive at offering ideas than others, but as moderator make sure you get everyone engaged. An easy way to do this is to repeat the “seed” question to a particular individual who isn’t talking much. Encourage everyone to participate.
4. Have someone writing stuff down
Sounds obvious but it’s easy to miss writing down a lot of ideas. Sometime it’s best to assign a person to be scribe for a time, and then switch another person into that role after ten or fifteen minutes.
Osborn claimed that two principles contribute to «ideative efficacy,» these being :
Reach for quantity.
Following these two principles were his four general rules of brainstorming, established with intention to :
reduce social inhibitions among group members,
stimulate idea generation
increase overall creativity of the group.
Focus on quantity: This rule is a means of enhancing divergent production, aiming to facilitate problem solving through the maxim quantity breeds quality. The assumption is that the greater the number of ideas generated, the greater the chance of producing a radical and effective solution.
Withhold criticism: In brainstorming, criticism of ideas generated should be put ‘on hold’. Instead, participants should focus on extending or adding to ideas, reserving criticism for a later ‘critical stage’ of the process. By suspending judgment, participants will feel free to generate unusual ideas.
Welcome unusual ideas: To get a good and long list of ideas, unusual ideas are welcomed. They can be generated by looking from new perspectives and suspending assumptions. These new ways of thinking may provide better solutions.
Combine and improve ideas: Good ideas may be combined to form a single better good idea, as suggested by the slogan «1+1=3». It is believed to stimulate the building of ideas by a process of association.