Showing posts with label agile. Show all posts
Showing posts with label agile. Show all posts

Monday, 12 October 2015

Testing Skills #5 - Remote Experiential Learning


Many people work with teams which are globally distributed, this has some logistical issues, one being how to implement useful and practical training approaches.  One common approach used is C.B.T. (Computer Based Training).  This is where participants login in and listen to pre-prepared exercises and videos, sometimes with a test at the end.  Another approach is to arrange a video session with an online tutor where they go through the material and the participants can ask questions whilst listening to the tutor.  These are OK as learning tools, but it is difficult for the participants to apply the knowledge learnt to their daily role. 

There is an alternative distance learning approach that I experienced whilst attending an online workshop run by The Growing Agile team (Samantha Laing and Karen Greaves).  I have since this course created my own remote workshop using this approach with some success.  What follows is an introduction to this approach.  Hopefully you can take this and adapt it for your own teams.

The basic principles of this remote training approach is based upon the 4Cs as described in the book “Training from the back of the room” by Sharon Bowman. Each of your learning elements should include all elements of the 4Cs in each module.

For each module of the course I create a workbook which goes through each aspect of the 4Cs.

The first ‘C’ is Connect

Before you start teaching the students ask them what they already know about the topic.  Create activities they can do offline to find out how the topic is relevant to their current role or what they currently know about the topic.

The next ‘C’ is Concepts

This is the traditional learning part, where you can introduce and explain what the topic is about.  You can do this as either a series of written articles or pre-recorded videos.

The third ‘C’ is Concrete practice

Students apply the concepts in practice.  If you are running this remotely you can set up activities and exercises related to the concepts which the students should, ideally, apply to their own working domain.

The final ‘C’ is Conclusions

This is best to done as a small group, maybe as an online video call.  All the students get together and discuss what they have learnt.  This is a great way to reinforce the learning since each person should bring different examples of applying the learning to the discussion and provide a more context rich learning experience.


When you are looking to create any remote learning experiences it is worthwhile making sure that each of your training sessions covers all aspects of the 4Cs. An advantage this learning approach gives is that it requires only a couple of hours of learning from each participant.  They can do this at their own pace and then discuss their learning and how it applied to them during a weekly hour long video conference call with the others taking part in the course.  It is crucial to set your expectations of the participants and get them to give a commitment to spending some time doing the exercises before the video call.   

As an additional option when I ran my remote workshops I set up a closed wiki site so that the participants could have discussions and provide some information about what they have learnt.   Also with permission from the participants I recorded the video sessions  and uploaded them to the wiki so they could go back and watch them later.

Monday, 10 August 2015

Using Aspects of Lean Coffee to Drive a Retrospective



Those who have been following my blog may have noticed that I have not updated it as frequently as I normally would, or would like to.  There are been a variety of reasons for this, I am writing a book which is taking a lot of my spare writing time, I have not had much of interest to write about and finally over the past year my role within testing has changed to one of being a scrum master for agile teams.  It has been an exciting and challenging role which over time I may blog about.  It has been strange since people have commented that I appear to be a natural in this role and part of me thinks this could be due to my skills as a tester that helps in this role.  I am still trying to get involved in some testing and hopefully there will be opportunities for me to do this.

This post is about an experiment I attempted with a scrum team recently for the retrospective.  I am unsure if I obtained this approach from somewhere, or it was just an idea I came up with.  I have decided to share it  via my blog for others to see if they find it useful.

A common approach to retrospectives is to get the team together and discuss what they felt went well, what could they improve and to have some actions for the team.   The way I have run this in the past is we take each of these statements and get some feedback from each members individual perspective.   Some of the questions that can be used can be found here - http://www.benlinders.com/2013/which-questions-do-you-ask-in-retrospectives/

What I found was these retrospectives did not appear to be that engaging and after awhile became a little stale.  So I had an idea to change the dynamics by introducing a lean coffee (http://leancoffee.org/) format.  Lean Coffee is a structured but agenda less meeting, which consists of three steps:

(1) Set up a Personal Kanban

This basically means create a series of post-its to represent
  • What we are currently discussing, "In Progress"
  • What we have discussed "Done"
  • What actions have comes from the discussions "Actions"

(2)What to Discuss

This can be any topic  that you wish to discuss, for the first retrospective I ran in this way I used the following:

  • Shout outs
  • What was good.
  • What was Bad
  • Improvement Ideas

The first four were placed upon the wall and then I gave the team members a set of post-its and pens to write down their thoughts for each of these titles. One post-it per comment

Shout Outs:
Who do you know who went beyond their normal day to day work to help the team.  This could be someone within the team or outside our team who helped support the team.

What was good
What do you feel went well in the sprint.
What made you feel good about what the team did,


What was bad
What do you feel went wrong in the sprint
What made you feel bad about something in the sprint

Improvement Ideas
How can we improve what we do?
What ideas do you have to make the team better?

(3) Vote and Talk

Once we had done this everyone was encouraged to go up and look what others had written and at the same time we decided to group similar comments together. After this we had some cookies, always bring cookies to a retrospective, I moved the In progress post-it over to the 'shout outs' column and people started to explain what they have written,  It was interesting that it was someone outside our team that people felt had added value to the team.  From this we as a team sent an internal gift and a recognition for their work.

Once we had finished with the 'shout outs' we moved this column to 'done' and move the 'in progress 'sticky to the next column  'What was good', we followed the same approach and everyone had opportunities to discuss what had been written.  At the same time any actions that came from the discussions was added to the Actions post-it.  This approach was then done for the rest of the columns 'What was bad' and 'Improvement ideas'.

The dynamics of the team during these discussions was far greater than at any of the other retrospectives and I felt as a scrum master it worked really well to encourage the different members of the team to participate.  Part of being a scrum master is to keep the various ceremonies you have for the team 'fresh' and 'interesting' and in this case it appeared to work well.  Will it have the same affect the next time, I am unsure however it is one more tool I can use to help the team. Let me know of your approaches to keep the team motivated and encouraged.  Also if you try this approach let me know how it works for you and your teams.

In Lean coffee you would normally VOTE on the topics you are interested in using dot voting,

"Each participant gets two votes. You can vote twice for the same thing or for two different topics. Simple put a dot on the sticky you are interested in. Tally the dots. "

Update: I have run this approach a couple of times since the first trial and  it appears to work very well.  I have tried to prevent it from being too routine and have changed the questions that are posted.  I have used titles such as "What was positive about the sprint" , "What was negative" "If we could improve on one aspect what would it be".  It is important to create varieity in the retrospective even if you are using the same approach.  It helps to keep the team interested and motivated.  Cakes and cookies help too!

Monday, 9 March 2015

The role of testers in an agile environment

A version of this article was originally published on StickyMinds website in November 2014 - http://www.stickyminds.com/article/role-testers-agile-environment.  This article is the full unedited version of the article.

In my experience there is a common drive to move towards an Agile (http://agilemanifesto.org/) software development framework.  As with any change in the way people are asked to work there is much confusion and for some a little bit of fear.  People are being asked to step out of their comfort zone and embrace a constantly changing, dynamic way of working. One role within the agile world that has been pushed back and forth is the testing role.


What do think the role of a test is?

A quick unscientific search of the internet returned the following roles:


As can be seen from the search results a wide and diverse range of roles are returned from searching for such a simple set of words as “tester role”.  My thoughts are that there could be a connection between the misunderstanding of what agile means to testers and the confusion as to where testers ‘fit’ in agile development teams.  The purpose of this article to look at the problems of ‘confusion and fitting in’ that testers appear to be facing at the same time offer suggestions that may be of use to testers in dealing with their confusion.

I would like to start with a look at why there appears to be some fear and a little distrust of agile, from my experiences, amongst some testers.

Some of the headlines I have seen over the years which state there is no need for testers within agile teams, or that a developer can do the role of a tester in agile teams, or that testers slow down agile because they come at the end of the process could be a source of problems testers appear to face.
For example headlines such as:

There have been many questions both within the testing and agile communities. Is there a need for testers in agile environments? One of the key concepts of agile and developing quickly is the need to have automation in place; therefore there is more of a need for coders to create the automation than there is for testers to manually test the system.  Lately there have been many discussions regarding the question that testers should (Or MUST) learn code.

To counter this, James Bach comment to the article above suggests there is more for testers to do than only learn code:

His brother does not know code nor does he wish to but he is the Director of testing at EBay.  He has other skills that are important for testing. 

Testing has traditional been seen at the end of software development (waterfall -
http://en.wikipedia.org/wiki/Waterfall_model) with the responsibility of:

  • Proving the requirements are met,
  •  Ensuring that it works (checklist)
  •   Finding bugs
The agile manifesto states (http://agilemanifesto.org/)

·        Individuals and interactions over processes and tools

What this means for testers is that there is a need to act as a member of the team and to engage with others within the team regardless of the title you or others possess.  If you see a task that needs doing and you have the skills to do that task, then just do it.

Agile means you are part of the team and should try to be involved from the beginning of the project. It will necessitate having the ability to switch context and ‘hats’ during the life-cycle of the project.  I will look at some of these roles, and how you as a tester, can be involved to support and assist the team. 

The following are only a few examples of the inexhaustible number of roles you could be taking on.

Test Architect

“While the system requirements/user stories are being captured and discussed testers should try and ensure they are in on these design discussions.”
Chapter 12 – Explore It – Elizabeth Hendrickson

Testing does not start with execution of the application. It starts at the beginning of the project during the design phase. There are many occasions where testers appear to be excluded from design meeting. The reason why this appears to happen maybe unintentional but could be because traditionally testers have been missed off the invite list for these design meetings.  If this is the case for you then as a tester you should try and find ways to be included.  These meetings are useful to find out what design decisions are being made and most importantly where the team feels there could be some concerns or complications.  These are great opportunities for testers to pick up on and make notes off, since these areas of ambiguity could be excellent sources of information.  With these snippets of information you can start to model the system and create some initial ideas that you may want to explore once the system is available for testing.  A mind map is a great way to model the system and your initial ideas.  Those areas of concern could become areas that need some careful exploration. 

During the meeting you should be ready to ask “What if…” type of questions.  An example being:

‘What if a user did this? ‘
 Or

‘What if this component is not available?’

Whilst design discussions are happening you should try to create a model of what you think the system will look like.  If you find yourself being confused about the information being presented or you feel something does not appear right then this is the moment to ask questions to clarify.  The answers you get could be useful for noting as areas to explore at a later date. Offer suggestions for how if things are completed in a certain way it would be easier to test, look for ways to make the system design testable. 

Consider from the information provided what could be checks and make a note of possible automation tasks. It would be worthwhile starting to write down ideas for automation such as suggesting unit tests or acceptance tests that could check the design ideas put forward. 

If there are areas with uncertainty, such as to how it could or will be implemented, this would be a great area for you to explore once developed. It is recommended to make a note and maybe create a test charter (Charters will be discussed in more detail later) in your test plan using the previously mentioned mind map.

Test Automator
It is important to point out that to be a test automator does not require the need to write code or be a skilled programmer.  Knowing how to write code might be a useful skill to have if you feel it will benefit the team, perhaps it is something you could look at learning if you have an interest.  Alternatively if you do not have an interest in learning to code it would be a good idea to at least try to learn the syntax of code. This does not require you to be able to write code but being to read it could be useful skill to have within the context of the agile team. 

Some of the framework used extensively for test automation use English phrases and words.  Some example frameworks include


The frameworks follow similar approaches for creating automation, the code is written as glue to support the scenarios, which are written in English. Who writes the code and who writes the scenarios is not defined in agile environments, anyone with the skills can contribute to that task to get it ‘Done’.

For cucumber the scenarios are created in the following format:

·        Given: - The purpose of given is to put the system in a known state
·        When: The purpose of When steps is to describe the key action
·        Then: The purpose of Then steps is to observe outcomes

If you have multiple ‘given’,’ when’ and ‘then’ you can use ‘and’ and ‘but’
For example:

  Scenario: Multiple Givens
    Given one thing
      And another thing
      And yet another thing
    When I open my eyes
    Then I see something
      But I don't see something else
These step definitions can be written in many different programming languages such as Python or Java and the level required to write these types of definitions is not too intense and based on JUnit (https://github.com/junit-team/junit/wiki ) (if using Java).

For example:
Scenario: Some cukes
Given I have 48 cukes in my belly

Glue code would be
        @Given("I have (\\d+) cukes in my belly")
        public void I_have_cukes_in_my_belly(int cukes) {
        // Do something with the cukes
        }

More information about step definitions can be found here: http://cukes.info/step-definitions.html

If you feel you want to learn code from a testing perspective I recommend the excellent book by Alan Richardson – Java for Testers (https://leanpub.com/javaForTesters)

If you do not have any desire to write code you could support the team by looking at what could be created as a unit test (such as limits and boundaries that have been defined) and ensuring that these are given to someone on the team who can code these unit tests.  This could be something as simple as putting together a spreadsheet listing all your unit test ideas and getting this reviewed within the team. 

If you find you have an interest then only one more step to writing some JUnit assertions (https://github.com/junit-team/junit/wiki/Assertions

Example use of assertions
@Test
 public void testAssertions() {
 //test data
 String str1 = new String ("abc");
 String str2 = new String ("abc");
 String str3 = null;
 String str4 = "abc";
 String str5 = "abc";
 int val1 = 5;
 int val2 = 6;
 String[] expectedArray = {"one", "two", "three"};
 String[] resultArray = {"one", "two", "three"};
  //Check that two objects are equal
 assertEquals(str1, str2);
  //Check that a condition is true
 assertTrue (val1 < val2);
  //Check that a condition is false
 assertFalse(val1 > val2);
  //Check that an object isn't null
 assertNotNull(str1);
  //Check that an object is null
 assertNull(str3);
  //Check if two object references point to the same object
 assertSame(str4,str5);
  //Check if two object references not point to the same object
 assertNotSame(str1,str3);
  //Check whether two arrays are equal to each other.
 assertArrayEquals(expectedArray, resultArray);
 }
}

If you want to learn more about JUnit then there is a free tutorial pdf document available here: - http://www.tutorialspoint.com/junit/junit_tutorial.pdf

Test explorer

Within Agile environments there is a limited amount of time for testers to test manually, it is critical that their time is used wisely. Testers should not be spending their time ‘checking’ the system manually based upon what they already know or expect of the application, this should be automated,. Testers should be trying to uncover the unexpected, looking for interesting items that could provide useful information to others within the team.  This does not mean following scripts or check lists, more a case of using the information gained from being involved in the design discussions and from communicating with others within the team.  Using this information to uncover where there is ambiguity in the system or areas where people have raised concerns or questions.  These are strong indications that there could be issues that are as yet uncovered in these areas.
Testers when exploring need to be observant, taking note of interesting items and future questions.  Being an explorer is about mapping the system as you go and then re-assessing your voyage as you discover exciting and interesting bits of information.   As testers we need to uncover assumptions and incorrect or missing information.  Mostly importantly we need to find out what it actually does rather than what we believe it does or how it has been documented to behave.

This does not mean that we should approach this in a random, unplanned or unstructured way.  Being an explorer means you do need to have a plan.  Your plan does not have to be in too much detail but just enough to get you started.  As you uncover more about the system you update your plan with the new evidence you have, your exploring should be structured and chartered.

Example charter format
Explore
 with
 to discover        
Explore it – Elizabeth Hendrickson http://pragprog.com/book/ehxta/explore-it

To aid your management of testing you can  use session based test management - http://www.satisfice.com/sbtm/ in which each charter becomes a session which is then used to help estimate and track what has or is planned to be done.  This works well in agile environments and can be a useful tool if using Kanban style boards. (http://en.wikipedia.org/wiki/Kanban_(development))

We have given this section a title of test explorer; however it does not mean that this is the only role they perform when exploring.  As a tester in an agile environment there is a need to be able to switch hats from planner, to designer, to manager, to tester, to explorer and so on.  The definition of exploratory testing, as defined by James Bach, helps to make sense of these different roles when we actual do some testing:

Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution.
James Bach - Exploratory Testing Explained – 4/16/03

Test reporter

One of the tasks I feel is most overlooked within agile development is the sharing of information and knowledge.  From a testing perspective it is normally simplified down to a set of irrelevant metrics of pass or fail, test cases run or not run and how many are left to run.

Agile is about defining what is done within the context at that time.  The tester should be reporting useful and valuable information such as:

  • Issues or bugs they have uncovered.
  • Areas of concern or stuff that could block them from doing more testing. 
This is only a small example and there are much more that a tester should be reporting. To enable this type of reporting the tester needs to be communicating as much as possible with the rest of the team, keeping them informed of what they have found.  A great indication of a good test reporter is when it comes to scrum meeting there are no surprises from testing for the rest of the team, since the tester has already had conversations with others on the team.

Normally these conversations are about clarifying assumptions and ambiguity or confirming it is a defect before raising it on the bug tracking system.  The tester in these situations needs to be:

  •  a salesperson (to sell the defect)
  •  a negotiator (to get things done and change the priority)
  •  a user (to see things from the customer/user perspective)
  •  a journalist (able to record the facts and only the facts)
  •  an investigator (are we sure we have all the evidence, is the evidence correct)
  • a scientist (does my evidence match my theories?  If not do I need to adjust my theories?)
  •  a psychologist (have the ability to under the biases that others in the team have and make the team aware of them)
There are many other roles that a tester could do within the reporting side of testing but again that is not important, since it is the fact that the tester is there to support and help the team no matter what the task may be.

It is vital when reporting that the tester does not fall into the publishing of graphs and pretty pictures bias.  In agile environments it is important to notice and investigate trends so gathering metrics over the term for a single project is useful but trying to compare project like for like is dangerous since there are too many variables team dynamics to be able to do a fair comparison. So when reporting testing it is better to tell the story about what has and has not been tested and based it upon what you have uncovered.

Conclusion

The purpose of a tester in agile environments is about:

“Getting things done rather than roles”

As a tester you should try and act as a service to the project and ask yourself:

“What can you do that is best for the team or for the project?”

There are many other roles that a tester carries out during testing, such as acting as a coach, or mentoring others within the team.  A service provider both within and outside the team, a sage or confidant and a person who is willing to listen as well as challenge others for the benefit of the team.

One useful list to use is the 10 principles of testers from the Lisa Crispin and Janet Gregory book - Agile Testing: A Practical Guide for Testers and Agile Teams - http://www.amazon.co.uk/Agile-Testing-Practical-Addison-Wesley-ebook/dp/B001QL5N4K

  • Provide continuous feedback.
  • Deliver value to the customer.
  • Enable face-to-face communication.
  • Have courage.
  • Keep it simple.
  • Practice continuous improvement.
  • Respond to change.
  • Self-organize.
  •  Focus on people.
  •  Enjoy.
How many different roles can you see for testers in this list of ten principles?

To conclude:

  • Look for ways to show how testing can add value to the project
  • Agile is about team not individual effort
  • If you have the skills DO IT rather than say not part of your role
  • If you have not got the skills think about this as a learning opportunity
I will end this article with something to think about

The role of testing in Agile is Organic and Dynamic

Are you a dynamic and organic tester?

Monday, 2 March 2015

A Coaches Guide to Agile Testing - Growing Agile - A book review

There are a variety of books that testers can choose to read about testing, however there are not many about agile and testing.  I came across the book "A coaches guide to agile testing" by Karen Greaves and Samantha Laing after reading a review of it by Lisa Crispin on her blog.  As someone who works with agile teams I had been looking for a book which could help me get the message across about the testing activities within agile teams.  This book was the book I was looking for.

The book is written as a collection of workshops which you can either use as they are or adapt and change them for your audience.  The format of the workshops follow the same technique devised by Sharon Bowman in her book "Training from the Back of the room" called the 4Cs plan.

  • C1 – Connections: To get participants to connect with each other and the trainers, and to connect
  • participants to what they might already know about the topic
  • C2 – Concepts: Some facts and theoretical concepts about the topic
  • C3 – Concrete Practice: An activity or simulation to experience the topic
  • C4 – Conclusion: An opportunity for participants to evaluate what they have learned about the topic

Karen and Samantha introduce you to the concepts of the 4Cs and how they are used in each of the workshop sessions.  At this point it is worth mentioning that along with the book there is a trainers kit which contains template and slides for you to use when coaching.

The first few chapters of the book concentrations on introducing the 4Cs method of training along with what materials you may need and some suggestions for how the room should be laid out.  This then goes into an example of an 'ice breaker' for the first session and provides some useful information on setting agreements (rules)

The book really starts to discuss the agile testing subject from chapter 3 onward.  Personally I would like to have more in here, maybe something on retrospectives and test estimation would be really useful.  Hopefully Samantha and Karen will add to this book at a later date.  Chapter 3 introduces a workshop about the 'Agile Testing Mindset'.  I have used the exercises in this chapter to uncover what peoples perception and assumptions are about testing.  It provides some great insights and soundbites that can be used when discussing agile testing with others.  I especially like the following:

Agile is an activity not a phase




The chapter also discusses what is the role of a tester when testing and I found the following system a very useful one when informing people what the role of a tester is.:

"Don't try to break the system, instead help build the best possible system"

Other exercises within this chapter include being a tester rather than a checker and what the difference is.  Is it the testers job to find or prevent bugs?  Overall this chapter provides some useful material in helping dispel the myths and assumptions around what testers do.  For me this one chapter was worth the purchase of the book.

Chapter 4 discusses and provides exercises around the Agile testing quadrants.  It uses exercises to explain why the agile testing quadrants can be a useful tool to help classify different types of testing.  This chapter is a good introduction to the agile testing quadrants and how each quadrants has some elements where testers can provide a contribution.

Chapter 5 introduces automation and looks at some of the pitfalls agile teams fall into when attempting automation. It provides information on the automation pyramid and gets the team thinking about the right place and level automation should be aimed at.

The next chapter looks at the input of testers into scrum meetings and how they can add value.  This chapter is useful for those who feel that testers struggle when teams introduce scrum,  For me this chapter was a little weak in some areas and maybe it was because the title was misleading.  It maybe better to have a title of agile meetings rather than scrum.  This way it can cover the sprint planning, grooming, retrospective and also investigate the concepts of Kanban,

The book finishes with a recap of what has been learnt and asks you to go back and look at other material and resources you have come across during the learning journey that you could look at next.

The book is quite short containing  around 50 + pages but within these pages is a wealth of material and information that anyone involved in agile testing will find useful and informative, The book is not only for coaches it can be used by the reader to provide themselves with an understanding of agile testing.  What I did before I went and used some of the activities described in the book, was to go through each of the exercises myself and learn more about my understanding of agile testing.  This I felt was a valuable aspect of the book it was not just telling you what agile testing is it was providing you with ways to uncover what you already know and what you can learn about agile testing.

I highly recommend this book to anyone who is working in agile teams and want to learn more about agile testing.  As a bonus it provides ready to use teaching material so that you can then go and practice what you have learnt with others.  Included in this bonus material is a ready made slide deck for you to customize and use in your coaching.

The one part of the material that stood out for me was the Agile Testing Manifesto that Karen and Samantha have in their slide deck.  To me this sums up the agile testing approach.


Monday, 12 January 2015

Published Articles

One of the many reasons why I have not been updating this blog as frequently as normal is due to working on articles for other publications.

Over the past couple of months I have had the following articles published:

Stickyminds




The Testing Planet




The other reason for not updating as frequently  has been the time and effort required for writing my book on psychology and software testing.  When I first started on this writing journey I never thought it would require as much time and effort as it had.  The naive me thought the book would be done within a year!  At the same time writing the book has and still does give me immense enjoyment and as a complete each and every chapter a sense of achievement.

Monday, 3 November 2014

Agile is.....

This post is inspired by the Michael Bolton post .. testing is...

I am becoming aware of more and more statements being made about the reduction in the need for dedicated testers in software development which follow the agile manifesto and principles. 

There is a growing call for developers to be both a tester and a developer and vice-versa.  Where the mantra is 'Everyone codes and everyone tests'.  I did a brief discussion on this topic in London for Tony Bruce.  In which we discussed the good and bad implications of this mantra.  Hopefully a new post will come out of that discussion at some point in the future.This post looks at what the agile manifesto and principles say in a testing context.  This is my thoughts on what the manifesto and principles of agile mean to testers and feel free to adapt,change, alter for your own purposes. When you come across people stating that there is no need for specialist testers in agile software development teams you can use some of the following:
  • Agile among other things - is a word used to describe a manifesto and a set of principles for helping to develop software
  • Agile among other things - is about delivering tested working software, which requires testing thinking skills
  • Agile among other things - is about satisfying the customer through early and continuous delivery of valuable tested software. 
  • Agile among other things - is about using testing thinking skills to discover if the software is of value to the customer. 
  • Agile among other things - is about empowering people to do good work, which requires people with testing expertise.
  • Agile among other things - is about using testing skills to help deliver frequent working software.
  • Agile among other things - is about using tools to support skilled testers.
  • Agile among other things - is about people with a variety of experiences & skills working together to create products that customers want.
  • Agile among other things - is about testing software so that the delivered software works in ways that a reasonable user expects.
  • Agile among other things - is about producing working software where as much information about how the software behaves has been uncovered by skilled testers.
  • Agile among other things - is about creating quality products using a diverse team with diverse range of skills and expertise.
  • Agile among other things - is about working with people from a variety of backgrounds, programmers, testers, business, help desk, support and trusting them to develop working software.
  • Agile among other things - is about testers informing others in the team by means of face to face communication what information of value they found during testing
  • Agile among other things -  is about using automation tools to check  what you believe to be true is still true, but it does not replace skilled human testing.
  • Agile among other things - is about being successful in delivering work tested software
  • Agile among other things - is about embracing changes and having the confidence that the testers will uncover information of value regarding the changes made.

Friday, 19 September 2014

Agile testing activity checklist

As the barriers between development and test blur when working in scrum teams and being agile, the testing activities can sometimes be lost.  There may be occasions where there is no testing expertise in a scrum team and the scrum team members struggle to know what to focus on regarding testing activities in their sprint.

Since this was becoming an issue with some of the teams I was involved with, myself and others came up with a testing activities checklist based around Lisa Crispin and Janet Gregory agile testing quadrants.

The rest of this article shows this checklist.  Please feel free to adapt and change this checklist to meet your testing needs in agile scrum teams.  The only caveat I make on this is that if you find it useful please let me know.

Testing Activity Checklist
This is an example template for Scrum teams to use as a checklist for testing activities carried out during a sprint


Sprint Number:
Does the scrum team have any testing expertise
Yes / No 
Has the scrum team done any testing activities in this sprint?
Yes / No 


Unit/Component (Q1)

Check
Response
Comments and Justifications
Do Unit Tests exist?
Yes / No

What is the level of unit test coverage? (Sanity, bad input, edge cases, regression etc.)


What is the quality of the unit tests? (per quality key table below)


% Code coverage and have you met your target %? (Which tool used?)
nn%

Has any state coverage been done?
Yes / No

Zero static analysis violations
Yes / No

All check-ins have code reviews?
Yes / No

All check-ins have unit test reviews?
Yes / No

Are unit tests automated in a CI?
Yes / No

How often are unit tests run? (every check in of development code/nightly/other)


Unit testing added to Definition of Done (DoD) 
Yes / No



Functional (Q2)

Check
Response
Comments and Justifications
Functional tests exist?
Yes / No

Have acceptance test criteria has been reviewed?
Yes / No

What is the coverage of functional tests (See below - coverage key)
0-3

Are functional tests automated?
Yes / No

A CI System is being used for automated system tests?


How often are automated functional tests run? (every check in /nightly/other)


Are functional tests run against latest build?
Yes / No

Has manual functional testing been done (exploratory)?
Yes / No

Functional tests added to DoD 
Yes / No




Coverage (Key)
0
We have no good information about this area
1
Sanity Check: Major Functions & Simple Data
1+
More than sanity, but many functions not tested
2
Common cases: All functions  touched common/critical tests executed
2+
Some data. State or error coverage beyond level 2
3
Corner Cases: Strong data, state, error or stress testing

End to End (Q3)

Check
Response
Comments and Justifications
Has exploratory testing been done? (if not give justification)
Yes / No

How much time has been spent on exploratory testing (number of sessions)
nn

How has exploratory testing sessions been captured (Wiki/other tool)

What is the quality of the acceptance criteria (see below for definition of testing quality)


Acceptance criteria tested
Yes / No

Demo criteria tested
Yes / No

E2E customer tests added to DoD 
Yes / No



Quality Key
**
We know of no problems in this area that threaten to stop go live or interrupt testing, nor do we have any definite suspicions about any
**
We know of problems that are possible showstoppers, or we suspect that there are important problems not yet discovered
**
We know of problems in this area that definitely stop go live or interrupt testing

Non Functional (Q4)

Check
Response
Comments and Justifications
Nonfunctional tests exist
Yes / No

Which types of Non Function Tests exist?
Performance, Reliability, Usability, Stress, Spike, Scalability, Endurance, Volume, and Security (e.g., CSDL)


Yes ? No

Have nonfunctional tests been added to DoD
Yes / No



Testing Activities Definition of Done


Check
Response
Comments and Justifications
Has all DOD criteria been met for each quadrant?
Yes / No

Zero open defects in the sprint
Yes / No

100% of all possible automated  checks running (Unit, Functional / E2E)
Yes / No

100% automation pass rate.
Yes / No

Exploratory testing target met (% possible time spent exploring)
Yes / No

CI Builds are in place
Yes / No

Sprint demos and feedback given.
Yes / No



Testing Quadrant Dashboard
This is a simple checklist dashboard.  It is either green or red, have all the activities listed above for each quadrant been completed.  Yes=Green, No=Red.

Q1
Q2
Q3
Q4
 Green = Met DOD for that Quadrant /  Red = Not met DOD for that Quadrant

I have also uploaded a word document version here so you can adapt and change it to suit your needs.


Postscript:

I will be running a Creative and Critical Thinking workshop in London - Thursday 16th - Friday 17th October 2014