The Three-Facet Approach

Experience Reports, Software Testing

As I’m writing this, at least 21 other people are feeling distressed at this very moment and the hours to come.
The first release of the current project has been deployed last saturday. Tomorrow, monday, 600+ people’s work-life will have been impacted tremendously.

These past few months have been a series of accomplishments. I have seen a team timetravel from the late 90’s to the modern’ish age of software development.
When confronted with tight deadlines, an oversold, over marketed product, extreme expectations and a new way of working the team showed they could keep on growing.
They’ve shown incredible tenacity. And it is through this persistence that the deploy was made possible.
Tomorrow will show how well we did.

Before starting this project there was one tester present. She used to test mostly informally, doing a final check whether fixes actually fixed the problem and didn’t break anything else. Development was limited to implementing small changes on a staging environment before deploying on the live one.

Since that day, 5 consultant developers and 1 consultant tester, me, joined the team. Next to working on the product, we were asked to implement a methodology that would make them more agile and put more structure in the process.

TFS, Test management and the Three-Facet Approach

How has this ‘improved process’ had an impact on our testing?
Among other things, We implemented a few triggers so that the testers became part of the team. No longer will we hear that quality is only our problem or that we are responsible if any bugs are found in production. We’ve also made sure we integrate with the TFS environment, further penetrating ourselves in the development cycle.

Considering Test Planning:
– We want to be able to participate in the Definition of Done
– We want to achieve some sort of traceability
– We want to have a set of core tests
– Most of all, we want to find problems fast

This lead to a compromise approach:

  1. Test Cases: Per User Story that is put on the scrum board, the testers create a test case or three. These describe core functionality and when all these pass, our part of the Definition of Done is completed.
  2. Regression Test Set: A checklist is maintained. “Can I sort the grid by clicking the header?” This regression test checklist can be used for UAT, as a basis for automation and regression tests.
  3. Charters, sessions and test ideas. Even though this facet has yet to be fully clarified and followed. Most of our testing has been primarily informal testing. We’ve found 600+ bugs in limited functionality in only a few months time by following this approach, but we have yet to fill out one charter.

The three-facet approach is a made-up Bug Priorityname for a methodology that serves our projects needs. It is a compromise. It gives us the room we need to do good testing while keeping the overhead to a minimum. These last few weeks, people have asked us many questions.

  • “How many ongoing bugs to go?”
  • “What do you think of the quality?”
  • “Do you think go-live is possible this weekend?”
  • “Have you tested the billing functionality already?”

The question whether all test cases were written and/or passed didn’t make the list.
Should I take this as a lessons-learned?
In any case, I plan to further implement Session Based Test management into our testing now that the pressure of go-live is off.

Identity Crisis

Experience Reports, Software Testing

Everybody’s a tester.
Product owners, developers, stay-home moms, anyone who buys any kind of application,…
You have tested some kind of complex application before. Some of us do it professionally, others subscribe to a Crowd testing program and even others just buy an app, toy around with and discard it after seeing the first sign of issues.

If testing is so easy that anyone can do it, why are there still professional testers?
Just pick a person from the street, give him the specs and say: “Now Cross-check this with what we’ve made. You can read can you? Can you click? Alright, you’re set!”

A friend and me had a very detailed discussion today about testing in ‘an agile project’, without much further context.
He’s working as an iOS developer and my experience is mostly in big, slow, complete business solutions. There is quite a difference in perspective, but these kind of discussions are always interesting.

Apparently, in the projects he works in, there are no full-time Testers, nor functional or business analysts,… There are however a few ‘Proxy’ people working on these projects. To me this sounded completely foreign, but I assumed this was another word for a kind of Product Owner. The description kind of matched. A proxy is an FTE who writes the User Stories and specs, checks with the customer and tests the application.

The reason these people are called Proxies and why they do just about anything but develop is that they are easily replaceable. One proxy falls ill? Another leaves the company? No matter, we’ve got more lined up.

Resource = Resource
I find this disturbing. I see no added value in having everyone so easily replaceable and generalist. If I’d had to be this omnipotent IT-wizard that body-shifts from product owner to change manager to developer to tester to developer and back to tester and so on,… I’d be terrible at everything. There’s a reason why I became a professional tester and I am content to be one.
I’m terrified of a Proxy writing code for the specs she agreed to with the customer and afterwards testing it. (This sounds awfully 1960-ish to me.)

People are not easily interchangeable. It always comes at a cost of knowledge, convenience, team spirit, time and budget…
Imagine good old Larry who you’ve been working together with for 1,5 year, occasionally shared meals with and who you’d ask all questions regarding finance functionality to.
Now imagine him leaving the firm and being replaced by Anna, who’s worked in a bank for 20 years and has a unibrow. Are you sure you’d work with her as smoothly as with Larry?
Even a change within a project requires a flip in mindset, or maybe even in skillset if it requires you to switch language (Java –> .net?) or from technical to functional. It is incredibly tiring and time inefficient.

When talking purely theoretical, it’s easy to look at your colleagues as 40-ish hours a week. But it’s wrong.
You can very well be called a Proxy. You can even be a Proxy. Hell, I’ve been a Proxy for a few months. But I know I’m not a good Functional Analist. I know I’m certainly not a developer.

You are not your job description
I am first and foremost a tester, but can fulfill coördination tasks, analyst tasks, Client management tasks and many more, if required. I also know that I can not efficiently do development tasks, or Test automation that goes further than a replay, nor will I do ‘Testing tasks’ that some people would expect of a ‘standard testing profile’, such as writing test cases with test steps for every single thing you can think about.
Take advantage of the different people in your team, don’t categorize them by their job title.

I’m not saying I’m against the idea of Proxies, nor will I advocate specified roles per person are the way to go. I do believe that both could work in different contexts and that some kind of combination of the two will surely work as well.