fredag den 3. marts 2017

Thinking about agile these days....

I don’t blog often, and when I do I tend to stay within my field of expertise – testing. But I need to get something of my chest today, so here we go! (sorry about the long blog post J)
When I read books or blogs about agile, or hear presentations or tutorials at conferences I hear about all these great methods and tools for building quality in, for testing first; test driven development, behaviour driven development, continuous integration/delivery, business as an integrated part of the development team, tightly knitted teams – high performance you know, tribes, squads, a/b testing etc.
All that stuff is really great; and hearing the stories of how to embark on an agile journey is a dream – but can you see that dream happen just like that in your reality? I mean if you start an agile transition when starting the creation of a new system it surely makes sense, and you can start “the right way”. And maybe then it is “just” something you can do.
But what if your context is different? When I look around at the companies I know of, or hear about from fellow testers, and I can’t help thinking: there is a HUGE journey to take from that reality and to the Nirvana described above;
Huge system landscapes with large dependencies between systems, old legacy systems mixed with new, rather bad test environments, only manual test cases above unit testing – huge manual regression test suites – or maybe the opposite; no regression test at all. Unit test coverage around 2-4% if any at all, product owners totally stressed out because they have their normal day job besides the product owner role, projects with people assigned 30-60% because they have a couple of other assignments... oh yes and lets top this with a desire to outsource because that seems to be the thing too.
So with the risk of awakening the unicorn world vs. real world from Agile Testing Days past – could we move our inspirational talks and tutorials a bit from the perfect world scenario to the one that many people are in today? In a context like that how do you get started with agile? What is needed before you embark on that journey? If you have an old organization used to work within a waterfall approach with strict roles and responsibilities – the shift is not that simple. How do you eat that elephant? Let me hear presentations about the struggles, the challenges and how you overcame them – not just the fairytale where all just went well. I learn so much from mistakes; mine or yours doesn’t really matter.
I don’t have the answer – but I think there are some fundamental things you need to start with, before starting to talk about all the different methods and tools.
First of all, understand that agile is indeed a Journey – it is not a switch you can hit and then presto - you are agile! Maybe you will one day reach that Nirvana you’ve read about – but maybe not, and that might actually be okay. Understand what is possible in the context you’re in.
Before you embark on the journey; understand what agile is – get an understanding of the agile mindset, the principles and the values. Agile was not created for the companies to save money – it was created to strive to give the maximum customer value, to create a better understanding and faster feedback between business and IT, to deliver quality – of course these things may save money too, but that was not the end goal in my humble opinion.
Get a clear picture of your own context. And if you are an external agile coach reading this – PLEASE get a good understanding of the context you are in – coming from the outside, start with using some time understanding! If you have several hundred systems entangled in a big pile of spaghetti of dependencies,  and no test automation at all - maybe shouting “let’s do continuous deployment” is not the right place to start J. Understand the people you are going to help – where are they, competences, values, organization, culture.
The next thing to do is not to find the right tools – it is to find the right people, and bring them together. It is hard to be agile if you are sitting in different locations, if all communication is via phone, Skype or video. We need to meet, learn, and share – if every day is not an option, then at least often. And remember it is not for everyone to take that journey to an agile way of working, some will chose not to and that is okay too J
And then I haven't even mentioned the business yet - how to integrate them, under stand their world and needs. But that is for a whole other blogpost. Well I am a tester, so I need to jump to that area of the journey. The decision is made – we want to move towards an agile way of working... How do we get this show on the road when it comes to testing? Imagine that:
  1. Your system is 5-6 years old maybe older - and it is BIG and complex
  2. You have a huge manual regression test suite
  3. The system integrates to a number of other systems
  4. There are limited to no unit test and no other automation at all
  5. Developers are doing a minimum of manual testing before it is handed over to business to test
  6. There are no experienced testers – business only and they differ from time to time
  7. There is a test manager – he is responsible for getting the business resources for testing, but have little influence on how the development team tests.
Where to start, what to do? What do you think?
Thank you for your patience... I will stop now ;-) but I need to write a part two I think :-)
/Gitte aka godtesen

mandag den 22. juni 2015

Thoughts on test process improvment - Ownership and Commitment



Remember my list from a couple of weeks ago?

  • Know where you are (Current situation)
  • Know where you are going (Target situation)
  • How to eat an elephant
  • Learning
  • Ownership and commitment
  • Process first, then tools

Today: Ownership and commitment

Any successful process improvement is as I see it almost 100% depending on whether the people who has to “live with” the process  takes ownership, participates in the definition and implementation of the process and acts as ambassadors of the process for the remaining part of the organization

Here I would like to point you in the direction of the ADKAR  model (Awareness, Desire, Knowledge, Ability, Reinforcement), created by Jeff Hiatt. The model is a goal-oriented change management model which was developed to guide activities during the change process.














(ref. http://www.change-management.com/tutorial-adkar-overview.htm)

  • Awareness of the need to change (culture, process)
  • Desire to participate in the change and support it
  • Knowledge of how to change
  • Ability to implement the change within the day to day work
  • Reinforcement to ensure that the change is kept in place

I like to use a combination of Ambassadors who can champion the process, super users who can support the implementation of process and tools, guilds and knowledge networks to create a forum for knowledge sharing and functioning as sparring partners and early feedback, and of course retrospectives on a regular basis to ensure that feedback from the projects are gathered and used to the continuous improvement of the process.

So here it is; my keywords and focus areas when I am a part of test process improvements... or process improvement in general. Focus on the people and on doing this as an iterative process.

mandag den 15. juni 2015

Thoughts on test process improvement - Tools



Remember my list from last week?

  • Know where you are (Current situation)
  • Know where you are going (Target situation)
  • How to eat an elephant
  • Learning
  • Ownership and commitment
  • Process first, then tools

Today: Process first, then tools

We often identify tools to support the improvements we make, but the key here is that the process identifies needs for tools – not the opposite. Maybe a certain tool is given e.g. a certain test management tool is mandatory within the project. But we can still customize the tool to fit the process – not the opposite.

Involvement and ownership is again important here - involve the team and relevant stakeholders when identifying the needs for a tool; what value do we want from the tool, what requirements do we have. E.g. when evaluating a test management tool; Do we have requirements for traceability to requirements/user stories?  is it easy to access (yes I know this is not a testable requirement :-)), can we make the overview we need for our testcases? I don't in any way think you should write a requirement specification, but at least write down some checkpoints which are crucial for you (I think we had about 20 things) so that we evaluate the tools based on the same questions.

Evaluate several tools against the list, don't just take the one that comes first in a google search ;-) Talk to other testers, get inspiration from them - what tools do they use. I prefer getting my recommendations from people using the tools rather than people selling them :-)

At my current assignment we evaluated 5 or 6 different lightweight test management tools and ended up with two that we presented to the test team, from that we did our final selection.

This is one of the places where I would recommend the use of pilots; don't start introducing a tool using a big bang approach "as of tomorrow the entire organization will be using tool X to ensure test case management." We had a small project we could try it out with first, setting it up for them, introducing it and of course supporting the use during the first release. We also created a sandbox project that everybody had access to, thereby giving the people a playing ground where they could learn without being scared of ruining stuff :-)
  
We of course did some tweaking during the first project to make it fit the project, but after that we could reuse most of the lessons learned to create a setup to the main project and thereafter new projects to come. This is not "one size fits all", we created a basic setup to start up with, so that new projects shouldn't start from a blank canvas, but of course the configurations were customized after their individual needs.

When implementing the tool as a part of introducing the part of the process it supports  I think we need to focus on several things:

  • Make the value of the tool visible - what will change and be easier?
  • Ensure that sufficient introduction/training/information about the tool is given.
  • Find ambassadors in the project, someone who can help advocate the tool if necessary, someone who is always present within the project rather than a distant support.
  • Find super users in the project, again it is crucial that it is someone who is always present in the project so that help is close by.
  • If possible - make your tools talk together! find tools that can do more than one thing :-) I our case we chose TestRail as a test management tool, and Jira for taskhandling and defect management - and for people it felt natural to work with the two together because of a good integration.






mandag den 8. juni 2015

Thoughts on Test Process Improvment - Learning

Remember my list from last week?

  • Know where you are (Current situation)
  • Know where you are going (Target situation)
  • How to eat an elephant
  • Learning
  • Ownership and commitment
  • Process first, then tools

Today: Learning

Learning is both on an individual level and in the organization as a whole. As individuals we need to learn about the new process, we need new skills to follow the process e.g. learn about test design techniques because we now have a strategy about structured test and wants to ensure the most efficient testing to be done. About tools if new tools appear because of the changed processes and of course also changes in culture and responsibilities in the team and for the individual team members.

But also on organizational level we need to learn. We may take inspiration from the Deming cycle or  PDCA – Plan, do, check, act.
I am a big fan of pilot projects, let’s not implement the process improvements big bang in the entire organization, but rather create pilot projects where we implement and learn from the experiences we gain.

We plan the test process improvement project by creating the roadmap, breaking the project down into smaller tasks, creating a backlog. As described above we need to prioritize the backlog and identify quick wins. We plan how to implement it – identifying the pilot projects to involve. The pilots should also be a part of the prioritization of the backlog, they know the current situation better than anyone and can supplement our knowledge from the assessment.

Based on the backlog we do; create the necessary process to support the individual backlog items and we implement them in the pilot projects. Again I recommend including relevant members of the pilot projects and also other projects in the creative process of creating the process parts.  We also ensure that the necessary training is conducted as a part of the “do”, we need to ensure that the people in the pilot projects are “dressed for the job”.

When the pilot is running we need to move to check, supporting the pilot projects and follow up on whether the changes have the anticipated effect. In some instances we can define formal KPI’s for this check, but often interviews and retrospectives are more valuable – you tend to get more information and feedback during that than from a KPI.

Based on the feedback from the pilot projects we can now act, we need to improve what we have already created and make it support the feedback we got from the “check”.  And round and round and round it goes J now this is a cycle that runs continuously, an iterative process of test process improvement.