Dare To Question!

More then month ago together with Lisa Crispin we run a workshop “Questioning requirements: improving quality for everyone”. The reason why we came up with this workshop, was to teach and to empower people to question requirements. As a tester I know how important is to question statements, ideas, requirements, designs etc. As trainer I know that with a lot of confidence you can run for presidency.

This is the story how we did that (without particular details in case you want to take the workshop in some other event ;) ).

Setting up

We had some challenges: we did not know how many people will come to our workshop and our time block was less than 2 hours. We took those restrictions and created a workshop, which we could easily scale. At the SwanseaCon we had around 32 participants, which we divided into 6 teams. Each team had a particular context to role play in a simulation. We emphasised that we wanted people to experiment and have fun. We tried to build safe space to learn and to try new things. We presented several tools that participants were invited to use to explore stories and to structure conversations with stakeholders (you can download them here). They were also free to use any other tool or framework they prefer.

simulation

We explained that we as “stakeholders” wanted to create an app and gave each group a list of desired features. In our background story we used words like “deep analysis” and “market research”. User stories were written in ambiguous way with aim to provoke the need to ask questions. The task was to create a release plan, creating stories for the features. Especially noting what feature they would like to start with.

how it went

All groups were extremely motivated, except one. There were lively discussions within the table groups and it was interesting to observe team dynamics. Especially interesting was to see that the group which struggled the most – none of them left the table or whole workshop. They were struggling together till the end. Another interesting thing – we as stakeholders got not so many questions as we expected to get. Just like in companies, our fictional teams were so busy working that they forgot that stakeholders are there in the room… We tried to interact with the teams, but nobody wanted our help and it looked more like we are disturbing them.

After simulation was accomplished, each team presented their release plan. or the process they come up with. After that we started debrief and our attendees exceeded our expectations when they started to reflect on their working experience in their fictional team and usage of tools we presented. It was great atmosphere in the room and we all learned from each other.

I think we managed to create a good workshop and would like to do it again at future conferences or other events.

Some things what workshop attendees learned.

Happy creators

What Is Quality Assurance?

Note: This article originally was published by trendig in English and Deutsch.

Are you in charge of software projects at your company and facing problems with your software? Do you want to improve the quality and have no idea where to start? Then this article will help you to start implementing QA processes!

qa

QA stands for Quality Assurance and is a very important subject in the complex world of software development. We observe our software and find that it has discrepancies with customer expectations. A discrepancy in software is called a bug. If we remove the bug from the software, it does not automatically mean that it now works flawlessly. A requirement is the term for customer expectations for a system and it could be that the bug hides there as well. Sounds difficult, right? That is why we need dedicated QA engineers!

Assurance

Let’s start with the assurance part in QA. Spoiler: Nobody in the industry can assure that your software is flawless. Every software application has at least one bug, the question is: Do we know what it is, where it is and do we want that others (end-users, competitors, hackers) find it? Now that we accept that, we can move on. How can we ensure that we know about all the relevant bugs in our software? We test the software! We can also test all kinds of documents, design and code. Testers have a comprehensive toolbox on how to collect information about the system in test.

After some time of testing you will notice that there is a pattern of some kind (testers are really good in discovering hidden patterns) on how bugs appear or reappear. When you discover that pattern, one thing you might want to do is to reduce the number of known bugs or bug types from your product in the future. We can divide this process into two steps:

The first step is to analyze bugs in a software with the aim of finding the source. Why and how did a defect find a way into the software? Possible questions to ask: Is our system architecture too complex? Bad (or no) technical documentation? Vague or contradictory requirements? Do our people have the necessary skills to design/implement/test the software?

Second step: To define a set of actions and procedures to avoid appearance of the same bugs in the future. A typical approach might be: define a set of guidelines and standards to prevent this type of failure in the future, improve the quality of requirements by creating a checklist of what good requirements should cover, or use a specific tool to help us.

To summarize, with the help of analytical techniques we collect information about the software, with the help of constructive software quality assurance methods we prevent reappearance of bugs from a known source.

Quality Assurance requires processes and structure in order to analyze and improve software quality.

quality

Now we need to talk about the quality part of QA. To better understand the topic let’s use the analogy of a chair. If we need new chairs for our dining room, we go to the store, see 20-30 different types of chairs and feel lost. How to find the right model? Which chair can we describe as having good quality? Different people mention different things. For me, it is important that the chairs fit with the rest of the interior decor, and that they are stable and easy to clean (because of my kids). For my son, it is important that he can swing on it without the fear of falling backwards. The best way to address these needs, is to create a list of requirements. Do we need armrests? Should they be stackable? What kind of material/style/colour?

We do the same with software. We create a list of requirements and measure the degree of compliance. The biggest problem is that software development is a very complex process and many customers lack an understanding of it. Customer requirements influence up to 50 % of project success. That is why we talk about quality attributes. One way to classify quality attributes and metrics is the standard ISO/IEC 25010:2011.

Like testing, quality aspects can be applied to all kind of sources: software, subsystems, documents, single requirements, design and code. When starting a project, consider which quality aspects you will cover and what you will use as measurement. Choose it wisely, because what you measure, you will improve.

To illustrate the idea of quality, I used an example of finding a set of chairs, but software is a very complex system, more like a house. Quite often in development teams we hear customers saying: “We do not have the final set of requirements, but you can start and implement what we have so far.” This is wrong for many reasons, but I will mention just two of them. Firstly, a requirement baseline is part of the contract between customer and service provider and should be synchronised with a SLA (service level agreement). Secondly, imagine building a house and, when your constructors are halfway done, you have the idea to put a swimming pool in the basement. Will it work? No. It is the same with software. If you cannot read the source code and see software architecture yourself, it does not mean that it does not exist. Your software has a structure and developing it requires you to follow certain rules.

Conclusion

Software development is a complex process which involves specialists from different domains. Quality Assurance is a discipline which shadows SD starting with the gathering of requirements and ending with testing rollback scenarios, with the aim of finding errors as soon as possible, analyze them and improve the process to reduce or eliminate those types of bugs.

Find and fix errors as soon as possible to keep costs as low as possible.

Why do we do all this? Because prevention and reduction of errors as early as possible cost less than the rework involved in fixing the bug. In this case we can talk about build-in quality. It is a smart business decision to invest in effective software quality assurance.

If you want to read more about QA processes, we suggest you blogs from Janet Gregory and Anne-Marie Charrett.

Where Are We Going?

Some use Twitter to keep up with latest news, I like to read newsletters. Already long time ago I subscribed to several local testing & co newsletters. Here are two conference posts who made me think lately. Is this where we are heading?

The first conference is/was Swiss Requirements Day.

It was huge surprise to receive the last newsletter with subject “Rest in Peace Swiss Requirements Day” with the message:

“Dear Swiss Requirements Community
In acknowledgement of the changing environment, the Swiss Requirements Day lays itself to rest.
Digitalisation marches swiftly on; delivery times are getting shorter and shorter; agile is on everyone’s mind. There is no time for a thorough analysis and documentation of requirements. Or is there? What preparatory activities are needed before coding can begin?
Design Thinking, Human-Centered Design, UX, Business Analysis, Systems Engineering and yes, also Requirements Engineering, are central elements.
Against this changing backdrop, we say goodbye to Swiss Requirements Day and proudly welcome its successor, the Upfront Thinking conference.”

OK, they are kind of closing one and opening another conference… if it would be just a change of name, than why so alarming sentence: “There is no time for a thorough analysis and documentation of requirements.”? Is this agile? Do we really want to have software which is made without thorough analysis?

The second conference is Topconf Linz 2016, will be held on February 1-3, 2016.  If you wonder what is Topconf – here is what they say about themself:

“Topconf Software Conferences are premier international software conference designed for Developers, Product owners / managers, Architects, Project Managers, Methods- and Process-Experts.
Our speakers are authors, experts and practitioners across various areas of software development.”

I find it quite interesting – various areas of software development and all kind of job titles but nothing related to testing.

Any way – my attention got something else – Talk by Louise Elliott Punishment Driven Development. She got me! I really want to go to the conference and to see how she will put that all together – punishment, guilt and agile. Interesting that this talk is on New Ways To Manage track.