Essential Software Testing Tools Blog


UAT Challenges in Software Testing

January 23rd, 2012 by William Echlin

A large part of software testing is about working with other teams and people. This is evident more so in the User Acceptance Testing (UAT) phase than any other phase. QA engineers involved in UAT are become the negotiators. On the one hand we’re working with a development team that have it in their heads that they are going to deliver X. On the other hand we have the customer who wants us to deliver Y. Our job is to make sure that both parties meet in the middle. We’re the customers advocate to the development team. Equally we’re the developers advocate to the customer. A developer may say that a particular feature is risky or technically not possible. Quite often it’s the tester that has to put this case forward to the customer.

Personally as a tester I found UAT more interesting, more demanding and more exciting than all the other stages. Everything comes together during this phase. Managing this dictates that you become a peace maker and negotiator between the two sides. A UAT test fails and the customer tells you that the feature doesn’t do what they need it to. You talk to the development team and they say it has to work that way when you consider other aspects of the application. Your is to understand all of the technical arguments supporting both sides. More than this your role is to understand the people on both sides so that you can bring them together with the right solution or even possibly a compromise on both sides.

If you’re involved with UAT then it’s not only these technical and contractual issues that present a challenge. Surrounding this are a unique set of software testing process issues that always crop up. Usually you’re out of your normal testing environment. You are forced to work outside of your usual process and sometimes even without your usual tool set. For example 3 challenges that consistently present themselves during this phase are…

  1. how to track defects effectively
  2. how to record requirement changes
  3. how and where do the test cases get written

Yes we know these are areas that most software testing teams have solved a million times over. The trouble is when you’re on a customers site as part of a User Acceptance Testing program. You don’t usually have access to your defect tracking tool of choice. The client forces you to go back to the dark ages and start tracking defects with Excel. A stream of emails are used to explain some subtle changes to a requirement and the original requirements document doesn’t get updated. The client doesn’t have access to your test management tool so you have to write the test cases in word and then record results in Excel again.

You may have the perfect process when working in your own environment. However, the moment you get pulled into UAT you’re forced to compromise and start reinventing your process. You need a process that can work for the customer in the customers environment. Following is an example of how we can address some of these software testing issues with a test management tool called ALMComplete. A lot of other tools out there have similar features so we’re trying to focus on the principals here rather than the tool itself.

In particular this software testing video looks at:

  1. Logging Defects – keeping everything in sync and visible.
  2. Tracking Changes to Requirements – maintaining traceability and the approval process.
  3. Writing the Test Cases – tracing approvals from your client.

UAT presents a unique set of challenges to the QA team. Don’t approach it thinking your usual processes and tools will deliver everything you need. Your customers requirements (both practical and process) will mean you have to bend towards meeting their needs. Typically your clients processes and practices will be completely different and probably far less mature than yours. If you can help guide them with some gentle persuasion you’ll reap many benefits from keeping close to your usual process and utilising existing tools you have. UAT is not just an extension of your usual software testing process. Quite often it demands a different approach altogether. However, if you have a clear picture of how you want to run your UAT from the start you can make sure this part of your software testing runs smoothly with your tools and your process.

Business Analysts in Software Testing

January 16th, 2012 by William Echlin
What’s best in Software Testing?  A tester that learns the business or a business person that learns testing? This was an interesting question put to a group in a recent software testing forum.
On the one hand a software tester brings definite skills and experience to a project. Even if he/she understands little about the business processes he/she understands about good QA practice. In addition most QA engineers worth their salt have a feel for the discipline and have a 6th sense when it comes to finding bugs. Couple this with someone who can look at a project objectivity with a fresh pair of eyes and it’s not difficult to see why we tend plumb for a QA engineer first.
On the other hand someone from the business side of things coming into undertake software testing brings a wealth of industry knowledge. Industry knowledge that has usually been built up over years. That experience counts for a lot. Quite often such a person, working as part of a test team, can look well beyond a feature not working. They can pin point why a feature that might work from a functional perspective, won’t work in the business context.
I expect, from experience, we’ve all seen analysts look at a software testing project and criticise what’s been done. “What you have may well work but it won’t do what the end user needs it to do”. Equally as QA engineers we’ve all found bugs in systems where a certain piece of functionality appears to work from the end users perspective.
From a simplistic point of view we can break it down with these age old questions …
1. are we building the right product?
2. are we building the product right?
The analyst may be better at answering the first question. The QA engineer, better at answering the second. Ultimately though, when we’re software testing, we need to answer both. So does this suggest that it’s best to have a combination of skills applied?
Possibly one good tester that understands the business process very well is worth more than two good testers that don’t understand the processes very well. Does this mean thought that as software testing professionals we should not only specialise in testing but also in a particular industry too? Certainly this helps and without doubt already happens a lot. You can see this when browsing any job spec for a software tester. Most job spec’s don’t just ask for a generic tester. They ask for a tester with specific skills in a related industry discipline.
Coming back to the question, is it more productive to get someone from the business side of things and teach them to test on a project? Or get a tester and teach them the business aspects on a project? Maybe to answer this we can look at the extremes. Would you want a test team full of analysts that know everything about the industry? Yet they know very little about good QA practice and possibly haven’t developed that testing 6th sense? Or would you want a test team full of QA engineers that know nothing at all about the business? Would a mix of the two be the best way to go?
It could easily be argued that the ideal team would be a mix of talents and skills. What happens if you’re choosing between a single tester or a business analsyst though? In this scenario maybe it’s more about how quickly one person can learn what he/she doesn’t already know. How quickly can the analyst learn to test effectively. How quickly can the tester learn the business process aspects? With software testing, as in many other walks of life, perhaps the best option to go for is the person who’s most enthusiastic about learning.

What’s best in Software Testing?  A tester that learns the business or a business person that learns testing? This was an interesting question put to a group in a recent software testing forum.

On the one hand a software tester brings definite skills and experience to a project. Even if he/she understands little about the business processes he/she understands about good QA practice. In addition most QA engineers worth their salt have a feel for the discipline and have a 6th sense when it comes to finding bugs. Couple this with someone who can look at a project objectivity with a fresh pair of eyes and it’s not difficult to see why we tend plumb for a QA engineer first.

On the other hand someone from the business side of things coming into undertake software testing brings a wealth of industry knowledge. Industry knowledge that has usually been built up over years. That experience counts for a lot. Quite often such a person, working as part of a test team, can look well beyond a feature not working. They can pin point why a feature that might work from a functional perspective, won’t work in the business context.

I expect, from experience, we’ve all seen analysts look at a software testing project and criticise what’s been done. “What you have may well work but it won’t do what the end user needs it to do”. Equally as QA engineers we’ve all found bugs in systems where a certain piece of functionality appears to work from the end users perspective.

From a simplistic point of view we can break it down with these age old questions …

1. Are we building the right product?

2. Are we building the product right?

The analyst may be better at answering the first question. The QA engineer, better at answering the second. Ultimately though, when we’re software testing, we need to answer both. So does this suggest that it’s best to have a combination of skills applied?

Possibly one good tester that understands the business process very well is worth more than two good testers that don’t understand the processes very well. Does this mean thought that as software testing professionals we should not only specialise in testing but also in a particular industry too? Certainly this helps and without doubt already happens a lot. You can see this when browsing any job spec for a software tester. Most job spec’s don’t just ask for a generic tester. They ask for a tester with specific skills in a related industry discipline.

Coming back to the question, is it more productive to get someone from the business side of things and teach them to test on a project? Or get a tester and teach them the business aspects on a project? Maybe to answer this we can look at the extremes. Would you want a test team full of analysts that know everything about the industry? Yet they know very little about good QA practice and possibly haven’t developed that testing 6th sense? Or would you want a test team full of QA engineers that know nothing at all about the business? Would a mix of the two be the best way to go?

It could easily be argued that the ideal team would be a mix of talents and skills. What happens if you’re choosing between a single tester or a business analsyst though? In this scenario maybe it’s more about how quickly one person can learn what he/she doesn’t already know. How quickly can the analyst learn to test effectively. How quickly can the tester learn the business process aspects? With software testing, as in many other walks of life, perhaps the best option to go for is the person who’s most enthusiastic about learning.

The Changing Role of the Software Tester

November 7th, 2011 by William Echlin
Have you got any thoughts on how the role of the software tester might change over the next few years? At a software testing forum in the UK last week there was an interesting discussion on this. Discussion is probably the polite way of putting it. It was verging on more on argument most of the time. See if you agree with some of the key points that were put forward.
Onshore/Offshore
Someone suggested that half the current onshore testing roles will move offshore. This is an old argument now and for well over a decade we’ve been able to work remotely. With tools like GoToMeeting and Webex that ability is becoming ever easier. Whilst the arguments for and against offshoring continue I personally think this argument is a distraction.
Should we stop using these terms onshore and offshore altogether? In many disciplines now (and I’m not just talking software testing here) work can be carried out anywhere on the planet. It’s been a global market for decades now and it’s going to remain a global market. Accept that to compete you need to be good at what you do and price yourself competitively. Oh, and you need to be able to communicate effectively.
Communicate Effectively
When we talk about communicating effectively we’re not talking about being able to pick up phone, send an email or conduct a web meeting. We’re talking about being understood and understanding the people you are working with. If you’re providing a service to a client you need to be able to understand the client. And the client needs to be able to understand you.
If your customer is Chinese then you may need to communicate effectively in Chinese. Even if you speak the same language, if you’re not on the same wavelength, you’ve no hope of delivering what your client expects. It’s no longer about the ability to communicate. It’s about the ability understand. No matter if the person you need to understand sits next to you or is located half way round the globe. If you can’t understand them go and work with or for someone else that does understand you.
This is one of the key reasons I believe the terms onshore and offshore are obsolete and too simplistic. We say offshoring worked or didn’t work. It’s just too simplistic to credit the success or the failure with this concept of offshoring. It’s a multitude of factors that determine success. Those factor include communicating effectively and finding the best people for the job.
Finding the Best People
Picking the best people you can find for the job is as important today as it was yesterday. Cost is never going to be the most important factor. For that reason your skills and reputation will still have the biggest influence on your ability to work in software testing. For the individual this may mean you need to market yourself globally. Today with remote working job sites like oDesk and vWorker it’s simple to market yourself globally. Lots of other testers are so why aren’t you?
It’s so easy to use these remote working web sites. Pulling together a global software testing team is quick and simple. The only difference now is that you’ve got a much bigger pool of people to select the best talent from. A global pool of brilliant testers.
Over the next few years we’ll see more and more companies bringing teams together with remote working job sites. Rather than outsource to one company we’ll bring in the exact talent we need. We’ll be picking remote working individuals, rather than outsourcing large pieces of work.
No doubt over the next decade we’ll continue to use the terms off shoring and on shoring. Personally I’d like to see us stop using these terms. The terms mislead and leave you in a mind set that thinks you should look to one over and above the other. Stop thinking in this mind set we can start thinking in terms of finding the best people to build the best team.
Aim to build the best software testing team with the best people you can find, and forget about where they work on the planet.

Have you got any thoughts on how the role of the software tester might change over the next decade? At a software testing forum in the UK last week there was an interesting discussion on this. Discussion is probably the polite way of putting it. It was verging  more on argument most of the time. See if you agree with some of the key points that were put forward.

Onshore/Offshore

Someone suggested that half the current onshore testing roles will move offshore. This is an old argument now and for well over a decade we’ve been able to work remotely. With tools like GoToMeeting and Webex that ability is becoming ever easier. Whilst the arguments for and against offshoring continue I personally think this argument is a distraction.

Should we stop using these terms onshore and offshore altogether? In many disciplines now (and I’m not just talking software testing here) work can be carried out anywhere on the planet. It’s been a global market for decades  and it’s going to remain a global market. Accept that to compete you need to be good at what you do and price yourself competitively. Oh, and you need to be able to communicate effectively.

Communicate Effectively

When we talk about communicating effectively we’re not talking about being able to pick up phone, send an email or conduct a web meeting. We’re talking about being understood and understanding the people you are working with. If you’re providing a service to a client you need to be able to understand the client. And the client needs to be able to understand you.

If your customer is Chinese then you may need to communicate effectively in Chinese. Even if you speak the same language, if you’re not on the same wavelength, you’ve no hope of delivering what your client expects. It’s no longer about the ability to communicate. It’s about the ability understand. No matter if the person you need to understand sits next to you or is located half way round the globe. If you can’t understand them go and work with or for someone else that does understand you.

This is one of the key reasons I believe the terms onshore and offshore are obsolete in the software testing world. They are too simplistic. We say offshoring worked or didn’t work. It’s just too simplistic to credit the success or the failure with this concept of offshoring. It’s a multitude of factors that determine success. Those factor include communicating effectively and finding the best people for the job.

Finding the Best People

Picking the best people you can find is as important today as it was yesterday. Cost is never going to be the only factor. For that reason your skills and reputation will still have the biggest influence on your ability to work in software testing. For the individual this may mean you need to market yourself globally. Today with remote working job sites like oDesk and vWorker it’s easy to market yourself globally. Lots of other testers are so why aren’t you?

It’s easy to use these remote working web sites. So pulling together a global software testing team is quick and simple. The only difference now is that managers have a much bigger pool of people to select the best talent from. A global pool of brilliant testers.

Over the next few years we’ll see more and more companies bringing teams together with remote working job sites. Rather than outsource to one company we’ll bring in the exact talent we need. We’ll be picking remote working individuals, rather than outsourcing large pieces of work to a separate team.

Summary

No doubt over the next decade we’ll continue to use the terms off shoring and on shoring. Personally I’d like to see us stop using these terms. The terms mislead and leave you in a mind set that thinks you should look to one over, and above, the other. Stop thinking in this mind set and we can start thinking in terms of finding the best people to build the best team.

Aim to build the best software testing team with the best people you can find, and forget about where they work on the planet.

Have you ever stopped to consider how your implementation of software testing tools compares to a car manufacturing plant? Today’s car plants can be considered one of the most productive working environments on the planet. Yet even with todays automation and robotic capabilities there is still a large commitment to the manual aspects of building cars. You might consider this surprising considering that we’ve been building cars since the 1890’s.

Visit a modern car plant and you’ll be struck by the attention that is given to setting out everything for the worker. Everything is set out so that it helps them become as productive as possible. Every tool that it needed is placed so that it is immediately to hand. Tools are even placed so that they can be picked up with little movement from the worker. This attention to the workers environment is built on the principal that many small improvements can add up to massive gains.

So the question is, when did you last look at your software testing environment? When did you last try to identify small changes that could add up to a big improvement for your team? Well to start you off here are eight examples of how software testing tools can be used to improve the productivity of a QA team.

1. Review your process. Do you have any unnecessary forms to complete, data capture requirements that you really don’t need, etc. I’ve worked with some teams where the data capture requirements (demanded by the management) meant the team we’re filling out around 10 different spreadsheets every day. Are you spending more time capturing data than running tests?

2. Where a tester might be reviewing a requirement within the test management tool, make sure the tool supports emailing direct from the tool. Save the QA engineer having to move between applications to email developers for clarification. This has the added benefit of leaving the email chain against the requirement for other testers to see too.

3. Configure escalation rules within your tools to identify common scenarios that need to be acted upon. For example automate the sending of notification emails for high priority testcases that haven’t been run within a certain time period. This save team leads having to manually identify these cases.

4. Implement software testing tools that capture all the information in one place. Perhaps you’re capturing results, and you need to capture the time taken for execution too. Can you implement a test management tool that captures all of this information in one place?

5. Encourage people from outside the QA team to proactively provide the information QA engineers need. For example, do the developers put design specs in a common location, are customer issues relayed back to the team effectively, etc. Small improvements here can save hours of wasted time looking for information.

6. Set up individual reports and dashboards to meet the needs of each QA engineer. The goal here being to help the tester save time looking for performance statistics.

7. Provide mechanisms for people to get answers to questions quickly. Make it easy to assign tasks to other department and ask questions through chat tools and forums.

8. Automate the test environment set up process. Not only does this avoid the possibility of testing with the wrong environment but it can save a significant amount of time when implemented across the whole team.

I’ve only listed a few examples that come to mind here. The point though is to make you think about how you can improve your process with small enhancements. It’s so easy to continue sleep walking with a process that is nowhere as efficient as it could be. The key is to wake up and encourage your team to start looking for these improvements on a daily basis. Look at how you use your software testing tools and see how they can be configured to help, not hinder, the tester.

If you’ve got others ideas that you think can help improve the software testing process why not post a comment below and share them?

The Wrong Answer

June 8th, 2011 by William Echlin

Yesterday, out of the blue my wife asked me what the best day of my life had been (stick with me here, this is related to software testing). Without thinking I said the day that my dad took me to work. I was 11 years old and should have been at school. My dad was a commercial diver and decided to take me out to one of his jobs on the east coast of the UK. Messing about in fast rigid-hulled inflatable boats, liquid nitrogen demonstrations, diving equipment to learn about and lots more. Fantastic day out.

According to my wife this was the wrong answer. Apparently the right answer should have been my wedding day. Fair point. Trouble was it was too late to back track. I’d blurted my answer out before thinking. Wife not very happy.

(Don’t get me wrong. My wedding day is up there in the top two best days of my life. A day with my dad as an eleven year old, with no cares or worries in the world, just pips the wedding day to the post.)

Anyway, I should have thought harder before opening my mouth. If I had I would have considered the wedding day answer. And, in light of who was asking the question I would have adjusted my answer accordingly.

Which got me thinking about how we mentally adjust our answers in our work life. We all do it. At some point we tell people what they want to hear rather than what they need to hear. This is never more true than in software testing.

As testers we’re usually the bearers of bad news.

“Products not going to ship on time”.
“You’ve done a lousy job implementing that feature”.
“No way are we going test this properly with this measly amount of test resource”.

All typical statements we think about and usually want to say.

We learn pretty quickly that being this blunt in the software testing world doesn’t earn us any friends. In fact it usually alienates people. The blunter we are the less people tend to listen to us. And if there is one thing, as software testing professionals, that we really need it’s people to listen to us. If developers and project managers aren’t listening to the software testing team then most likely the projects heading for a fall.

As testers this ability to get our message across without offending and without alienating people is essential. It’s a skill. It’s a skill just like being good at finding bugs is a skill. Our success as software testers depends on us mastering this skill. If you constantly come across as the bearer of bad news and negativity then people start to avoid you. That doesn’t help.

I’ve worked with several testers in my time who where phenomenal at finding bugs. Yet their ability to get their message across to their development counterparts was sorely lacking. As a result they alienated the developers they were working with. Once you’ve lost the co-operation of your counterparts you’ve lost one of the best resources you’ve got to help you pin point bugs. Part of our jobs is to work constructively and effectively with developers to find and resolve defects together. This is why it’s so important to master the skill of getting our message across with tact and diplomacy.

Now I know there are exceptions. Sometimes tact and diplomacy need to be thrown out of the window. You need to get a critical point across and you decide to put it bluntly. Putting it bluntly, when people are used to you being tactful and diplomatic, makes them sit up and take notice. This is best done with thought and consideration. Not unthoughtfully and inconsiderately.

This is a skill I like to think I learnt early on in my software testing career. Why it’s taken me 10 years of married life to learn the same lesson I’m not sure.

Copyright ©2009 - Traq Software Ltd - All Rights Reserved.