All posts by Mindful tester

Being Sidetracked – Part 4

Some readers might have noticed that Gherkin is used for unit tests. And this might be strange or unsettling. For me it was normal. In this company the DevOps engineers worked that way. It worked, so as a tester I had to put in more effort to find bugs. Sure no problem.

Me programming

My first action was to write a test to check a business rule for a valid observation date. While I was typing, the Integrated Development Environment aka IDE suggested several options like a search engine like Google. But observation date was not known. So this sentence was highlighted in red. Syntax highlighting is also handy in programming. I don’t mind that at all.

With the help of the DevOps engineer I wrote code in Java, so the IDE could use observation date in Gherkin. The code could be executed, but the test failed. Hey that was bad.

“Now I write the code.” was my next thought.
Of course there was no code, so the test should fail. Definitely Red.
This would be fun.

I had to program in Java and I remembered that the junior DevOps engineer had some useful shortcuts. I looked in the IDE and found the option in a sub menu to add a method. I gave it a name and – yes – I got an empty method in the right class. Now I had to fill in the blanks.

Me writing Gherkin

Months earlier I had written several Gherkin unit tests in the knowledge management system. There were two things wrong with this approach. The tests were not used, so I was high on supply. In plain English I had made something which was not used. On a scale of time it was a waste of time.

The other thing was that it had a web interface. The syntax highlighting did not work. I could make things bold and indent texts, but that slowed me down too much.
The result, the code, was not easily readable.

The dates were in the following format DDMMYYYY. This is programmer s’ language for Day in 2 numbers, followed by Month in 2 numbers, and finished with Year in 4 numbers.
So April 1st 2001 would be written down like 01042001. 01 is the first day of month number 04, which is April. 2001 is of course the year. It is easy to pick good dates like

  • 01042001 (first day of the month),
  • 31032013 (last day of the month), and
  • 29022000 (leap day).

I picked some wrong dates on more rational grounds:

  • 07142011 (for the Americans July 14th 2011),
  • 20132007 (20th day of the 13th month), and
  • 1jan1998 (January 1st 1998 in a hydrated date format.).

After writing date tests for one date field I noticed a pattern. I would check on all these dates again for other dates like expiration date. I thought I was smart. I just copied all the observation date tests and replaced ‘observation date’ by ‘expiration date’. I even copied the tests to a special text file, so I could save time. But I was wrong!
Please read on.

Me at the keyboard again

So I was programming unit tests and on my side was a junior DevOps engineer assisting me. I could finally write a test in Gherkin. In a separate window I opened the knowledge management system. I picked the first right date 01042001.
“Why do you pick this date?”, my personal DevOps engineer informed.
“I want to be sure that the right date is accepted.”
A nod followed by:
“We use Joda-time for that.”

I heard: “Yoda time”
It was not possible for me to link a lightsaber wielding big pointed eared green creature with programming.
“Joda-Time checks on valid dates, so you do not have to test them.”
Java 7 was not safe enough for dates and some programmers made Joda-Time. That saved me a lot of time.

So I only had to test on the wrong dates. Easy. I added tests, which succeeded. Green.

There was a `but` coming up.
“You can skip that date.”, while the DevOps engineer referred to ‘1jan1998’.
“Characters are not allowed in the date. ”

The next morning the DevOps engineer showed me a neat table:

Given the file has observation date <date>
When the file is read
Then the file will not be processed


Examples:
| date     |
| 07142011 |
| 20132007 |

He had improved the test code considerably. Refactor. I forgot to use DRY, Don’t Repeat Yourself.

My scrum master said that it was important to know how to program. This way I could structure my tests in a good way.
But the worst was still to come.

To be continued.

Being Sidetracked – Part 3

“At the moment I am writing a serie of blog posts about Test Driven Development.”
I looked to the recruiter. “You can understand it.”
I moved my view to the manager: “You can also understand it.”

Sticky note: let’s stick to the DevOps engineer.

Vegetable As a Service

The DevOps engineer wrote the unit test in Gherkin. The main advantage is that this language is easy to read. Have a try.
Given the version number is 15
When the file is read
Then the file will be processed

It is also easy to write. This example is in English, but it is also possible to use plain Dutch.
Gegeven een versienummer is 15
Als de file wordt gelezen
Dan wordt de file verwerkt

This is easy for people in Dutch companies. Nothing is lost in translation. It is easy to digest. No mindreading skills are needed.
The tool Cucumber provides a way to translate these sentences to a programming language like Java. A programmer has to code, how the sentences are translated.

When this little story is used by the computer, Java is used to execute this test. Yes, it is time for another cup of coffee. Which is the symbol of this language.

There are of course some people, who want to add some details to it. And yes, this is necessary.
Feature:
As an administrator I only want to process the right file list_20180525.txt, so that marketing managers can still process the data and generate reliable reports.

Background: file A

Scenario: 15 right version number
Given file A has version number 15
When file A is read
Then the file will be processed

Scenario: 16 wrong version number
Given file A has version number 16
When file A is read
Then the file will not be processed

All the text is put in 1 file, so all tests are nicely organised. A very important detail is, that file A is a complete valid file. This takes some time and some byte shuffling, but it is worthwhile.
So after 2 cycles of Red Green Refactor two scenarios were added in a feature file. These scenarios could be executed individually or in a group.

Then the cycle continued. The latest test was used frequently to assure, that the code was modified in the right way. The previous tests were used to assure, that the quality was the same. This led to a massive set of tests.

What’s next?

The DevOps engineer looked for the next feature to program. I saw an impressive table of valid values and validation rules.
“Do we have to test all this?”
“No”, he answered.
I could not believe my ears. There were so many places where things could go wrong.
“We will only test things, which can cause problems in our software. [The postman] will check the data.”

I visualised the data flow in my mind. There was a sender, which gave a file to the postman. This program would check every byte of the file. After a successful check the postman would deliver the
file to the receiver or the program under development. In the past I heard, that sometimes some things were not properly checked by the postman. With the speed of computers today extra checks can be done very fast.

The DevOps engineer continued:
“If data can cause problems in the software, these are checked.”
Version number is a good one. And of course begin date and end date of a period are also important.

Another cycle to start

This looked so easy.
It was like the junior DevOps engineer had some mindreading skills.
“Now you try.”
I was silent for a moment.
I repositioned myself after the keyboard and the mouse.
Pair programming. The real stuff.

Okay, let me start.

Read mindfultester[dot]com
My answer in a job interview

To be continued

Being Sidetracked – Part 2

A few weeks ago I told my wife about the picture for this blog post serie. “There is a red light. And a green light. The rest of the picture is fuzzy.” It was about “Red Green Refactor”.

“You should [tidy up with known product name] the picture.”, she suggested.
I liked the fuzziness. This was about Refactor.

Second cycle

We had just finished the first cycle.
The DevOps engineer wrote another test. Ready for the next modification.
O yeah. Test Driven Development.

Let me sanitise me this example. This means so much like “all confidential information is changed”. On purpose. Everybody happy?

A file can only be processed, if the version number is 15, 20, or 31. After the first cycle every version number was accepted. The first test was:
“Is 15 the right version number?”
“Yes”
But this would lead to some bad side effects:
“Is 16 the right version number?”
“Yes”
Or worse:
“Would you please bring me a cup of coffee?”
“Yes”
What about
“Would you please transfer 1 Million Euro to my bank account?”
[Upset face]
[Whispering] “You are supposed to say: “Yes”.”.

Okay, back to the real example.
The first test was to determine whether 15 was a right version number.
The DevOps engineer added a second test to determine whether 16 was a wrong version number. He performed the last test and 16 was a right version number. This was wrong: a failing test. Red.

The DevOps looked at the invalid value and added a single condition to the code. If the version number is equal to 15, then return “Yes”. Otherwise return “No”. The second test was executed again: this time 16 was a wrong version number. This was right: a succeeding test. Green.

The code was very simple, so no refactoring was necessary. Refactor.

Then the DevOps engineer executed all or both tests and they were both correct. The second cycle was over.

While blogging, I realized old patterns of thinking were still present in my head. Let me answer a few questions.
Question 1: This code is so simple. Why do you need to write all the tests?
Answer 1: During every step the DevOps engineer can use the written tests to determine, whether the code is still good. This is especially handy for complex code. Failed unit tests can point to where things go wrong.

Question 2: why did the DevOps engineer not add a second test for valid version number 20 or 31?
Answer 2: it would not lead to failing test. In other words the code would not have to be modified because of this test. At that particular moment he would have written a redundant test. That is a waste of time.

Question 3: Do all these tests take a lot of time to execute?
Answer 3: No. The tests are unit tests and fast enough to execute. The hardware has been improved considerably, so these tests are executed within a fraction of second.

Question 4: Would you please continue?
Answer 4: Sure. No problem.

In the previous blog post I wrote about my disability to speak Chinese. That is quite confusing, because I look like a Chinese and not like a Dutchman.
Small recap with the restaurant in China:
“Do you speak English?”
“Yes.”
[Half hour later]
“I would like to order dinner.”
[Blank face] (Red)
“Did you understand me?”
“No.”
[I opened the menu.]
[Waitress approaches me.] (Green)
[I just ordered the dishes using my fingers and the menu.] (Refactor)

What I actually did, was trying to find other ways to order dishes. I could have written down my order, but the waitress could follow my hands. So no refactoring was needed.
No is unpleasant answer, but a lot of frustration was avoided. At least I understood, why hand sign language for numbers was included in the pocket book for frequently used phrases in Chinese.

To be continued.

Being Sidetracked – Part 1

Every story has an expiry date.

So I have to hurry up.

While the junior DevOps engineer was programming aloud, I paid attention to all the steps he took. He used Test Driven Development. It is a cycle of Red, Green, and Refactor.

A small recap: he first made a tiny test, which failed. Red is a favourite colour for failing. Then he made code to let this failing test succeed. Green is that other favourite colour for DevOps, testers, and especially managers.

Then he refactored the code. The code became more maintainable and readable. Even for a tester not fluent in Java.

The first test was to check, whether a business rule failed. He wrote only code to let the test succeed.
Before I could think, the method was ready. It had only one return statement with 1 fixed value.

But this would only be the case for very specific situations. I showed my disbelief and he answered that the code had to pass the new test. Right, you are right.

This was a strange situation for me as a tester with a traditional background. Tests should be executed after the implementation and not before. Somehow my brain had pushed the theory about TDD aside. It felt so unnatural to me that I unconsciously switched back to Program First Test Next.

Anyways, the DevOps had a quick look to the code. I did not think that this could be refactored. One line single statement cannot be refactored.
Yes right again. The first cycle was finished. Red Green Refactor.

A return value from a method is like an answer from a human being. What the DevOps basically asked, was: “Is this value right?”
And the method would always answer with “Yes.”

This was strange to me. Now I realised, that this was the most minimal addition to the program.
Without a method the code would have be repeated multiple times and maintained at the same number of places. A recipe for disaster.

Aw I forgot to look in the right low box in the left corner in the room under the stairs.

Now programmers have a small heuristic for this one:
DRY. Don’t Repeat Yourself.

The fact that the answer was always “Yes”, bothered me. While blogging I remembered asking a restaurant in China, whether they could speak English. The answer was “Yes.” My wife and I were delighted until I ordered. O no.

To be continued

May 2018 Testing

For the interested British reader this is not about politics. It is about testing software so that it complies with the General Data Privacy Regulation or GDPR in May 2018.

For the people who are only concerned about money. It can cost your company 4% of the global annual income of your company or 20 million Euros. That is seriously a lot of money.
Thanks for your attention.

Disclaimer

I am not a legal expert. So please have a look at my used sources. Or contact a GDPR expert.

I am just a tester finding test ideas about GDPR.
Thanks for joining in advance.

Just show it to me

Suppose you have a cinema and a special web site. You can order tickets, drinks, and snacks in advance. This is a unique selling point.

A marketeer has a nice idea:
“Let’s make some profiles. We’ve got lot of sales numbers, so boost those numbers.”
“What do you have a mind?”
“We just tag customers: B movie, Friday night, first week, ..”
“First week?”
“Like ‘I want to see the movie in the first week after release.'”

If I would go to  this specific cinema, all my actions are recorded.
Big Buyer is being watched too. This sounds creepy. This is my alarm bell as a tester.

My simple question is:
Is profiling allowed?
More accurately, is profiling of European citizens allowed for this cinema web site according to General Data Protection Regulation?

What makes someone a European citizen?

sketchnote with cradle, parents passport and database

Obvious candidates are:  parents, place of birth, passports.  I just stick to Citizenship Administration. I found this one while doodling in my head.

Let me give you a royal example. The Dutch queen has the Dutch nationality, but had Argentine parents and was born in Argentina.

Let me show some graphs:

  • European Union
  • People with no nationality
  • People with 1 nationality
  • People with 2 nationalities

I could make these 2D graphs:

One chart of part of Europe and three coloured graphs about number of nationalities

I could try to stack them and squeeze them afterwards:

One more try:

3D graph made of a chart of a piece of Europe and pieces of sticky notes depicting the number of nationalities

So the best way to define an European citizen is that she or he is registered as an EU citizen in a Citizenship Administration in the EU. Now comes the difficult part: as a web site owner I have no access to this administration. Well. That is a good one.

How can I determine whether an European citizen is in my database?
In most cases I don’t. Because nationality or EU citizenship is not always registered.

“Is an address not sufficient?”
“What about An American in Paris?”
“Okay, email address.”
“What about american@home-in.nl or william-to-be-married@my-awesome-wedding.com?”
“The nationality is registered.”
“Good. What about EU citizens with two nationalities? ”

Looking at the context: if no nationality or EU citizenship has been registered, then I would suggest to look at GDPR. Otherwise definitely use it.

But this is a premature advice. This is a warning. Please read on.

Finding GDPR

If there is one thing I hate about learning, it is memorising information for the sole purpose of memory. I like to have some fun in a good sense of humour.

Here’s where deliberate practice comes in.
Determine a strange situation and look it up.

On my search for the official GDPR document I quickly determined that my target was:
Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, and repealing Directive 95/46/EC (General Data Protection Regulation)
Yes, it takes some time to read it.
And a natural person is human being. Like you and me.

I am well aware that English is not everyone’s native language. Now the EU has this little nice webpage with links to GDPR in your favourite language. Hopefully.
No Chinese, but maybe French?

Profiling and data subjects

Profiling can take place after informing the data subject, who has agreed to these terms for data processing. [GDPR 32, 42]
That is a lot of info.

Let’s go a step back to nationality. I warned you for this.
I am not familiar with the American laws. Remember I am not a legal expert.
Suppose profiling of natural persons is legal according to the American law. For example ‘s sake.

Take a case of an American woman who starts buying action movie tickets. My guess is that her new boyfriend is lucky. Piece of case.

It is very easy to make a profile of her boyfriend. Now this lucky guy happens to be British. And has some royal blood. It rhymes on What?!.

There is still no problem, because it cannot be traced back to some palace. Unless I would couple the data with the email address of a fortunate American actress. Oops intended.

Chain of Gift

The American woman is a data subject. All kind of data is collected, but there is an unpleasant side effect: her boyfriend or fiancee also ended up as a data subject. I doubt whether he would have given any permission. No thank you.

Actrice gives something to a prince.

The Chain of Gift leads to interesting doodles. In orange is the American woman and in blue an European Citizen wearing something called a crown.

Quick explanation for the colours: the European flag is a blue flag with yellow stars. So the EU citizen is blue. For the American woman the colours white and red remain. Somehow these are not appropriate. So I chose orange.

So there is a difference between buyer and user. A man can buy movie tickets and give them to his children. ‘Finding Marlin’ and ‘Monsters Unlimited’ seem quite innocent pieces of data to share.

Dad gives movie tickets to children.

Is it possible to determine the birthdays of the children just based on his cinema visits?
Not based on the movie titles. There is a better chance looking at the number of bought children tickets.

“When are we going to the cinema with my friends?”
“What do you think?”
“On my birthday?”
“Good girl.”
[Big smile]

Birhday party

Another interesting case: a man who buys gifts for his  grandchildren. Depending on the gifts I could guess gender, age, and hobbies. If those grandchildren live in the EU, you might have a major problem.

Man gives gift to daughter, who gives it to her children.

With a low number of children per family it is relatively easy to make a family tree.
I can guess that princess cookies are for 5 year old grand granddaughter and that superhero suit with XS size is for …
You get my points.

My best guess is to make a GDPR compliant approach for my whole customer base. There is no way to determine which European people you are profiling.

Permission granted
Scenario 1
Suppose I am in the living room and one of my kids tries to sneak out of the room. I look in the right direction and get eye contact. The door is opened and closed.

A few days later a man is at my front door with a box of 20 tablets. You know those fancy computer things.
The name of my kid is on the box. O oo O.

Scenario 2
Suppose I am in the living room and one of my kids tries to sneak out of the room. I ask:
“What are you up to?”
“I gonna hack. You don’t mind?”
“Yes, but”
The door is opened and closed.

A few days later a man is at my front door with a box of 20 tablets. The name of my kid is on the box.
“Where can I place the other 500 boxes in my truck?”

Scenario 3
Suppose I am in the living room and one of my kids tries to sneak out of the room. I ask:
“What are you up to?”
“Just read this legal document and you will be just fine.”
“It has more than 10 pages.”
“Can I go now?”
“Okay.”
The door is opened and closed.

A few days later a man is at my front door with a box of tablets. The name of my kid is on the box.
“There are three extra trucks coming with tablets. Where can we unload the four trucks?”

Let me finish the three scenarios at the same time.

A box, one truck and a group of 4 trucks on the way to a finish

“Excuse me, I have to call someone.
Would you please wait outside?”
I close the door and the mobile phone is in my left hand instantly. My kid picks up the phone right away.
“A package arrived for you.”
“The tablet arrived?”
“You can better say: ‘Tablets.’”
“Huh, those are the most expensive tablets on the world. They cost a fortune.”
“That’s why I am calling you. How can you afford these things?”

“You know dad, I needed some purpose in a life.”
“Yes?”
“So I learned to hack.”
“O no.”
“It’s worse.”
“Huh?”
“Legal hackers don’t get paid much. I had my eyes on this tablet. So I said: ‘You pay me in Those Tablets.’
If I got one extra, I could always give it to my Best Friend.”
You’ve got a friend in me.

Websites sometimes are like kids. Scenario 1 would look like:
A window where no permission is asked but just taken
No permission is asked, just taken.

Scenario 2 would lead to the following picture:
A window with a default permission for profiling
A very fast designer filled in a preference.

Scenario 3:
A window with unreadable text with a request to accept these conditions
O yeah. The legal stuff one.
At least the checkbox for the conditions has not been filled. But I cannot install the program, unless I agree with them. Hmm.

GDPR forbids all these three options. They lack the support for the user who wants to protect her or his privacy. Website 1 must use transparency, website 2 a default for no profiling. And finally website 3 must use concise and plain language. [GDPR 32]

Thanks for jumping in

For the interested British reader this is not about politics. It is about testing software so that it complies with the General Data Privacy Regulation or GDPR in May 2018. Déjà vu.

There might be readers in my audience who had another association with May 2018. I know that Harry is a major export product for the UK. And I am not writing about the scarred man who has been featured in a lot of books, movies and a theme park.

Some people are more interested in an upcoming royal wedding of Harry. That might have some impact on your online Harry product web shop. For the people interested in performance tests here are some nice blog posts about performance test and Q&A. From yours Mindfully.

Some research notes

A lot of you who are reading this can still follow me. What you actually missed, is my nonlinear search. For the answer on my question: Is profiling of an EU citizen allowed according to GDPR?

The first thing I did was to download all relevant legislation. With a search engine a legal document could easily be found. Then my inner critic voiced his concerns: where are you basing this blog post on?

What I needed, were traceable sources for my research. The more EU the better. Again I am not writing about politics.
I found some links to some non EU websites. But my main target was the GDPR on an official EU website. This took me some browsing. At last I downloaded the wanted document and saw no differences with the other document on first sight.

I took no risk and started to use the official document as main source for this blog post. There was one big but. BUT the document was a pdf. This format is widely supported by all kinds of apps, but not search friendly. A search takes a while on my smartphone.

I converted the document to epub. Now I had a significant win in time. There was no more interruption in my flow of thoughts.

Let them flow.
[On the melody of Let it go.]

So I sought on the word child and hit my next obstacle: the word article. Now are articles quite common in laws, but to my dismay I had not encountered this word before.

I did another search: article. My references to this document were obviously wrong. So I was referring to numbers between parentheses. I switched back to the pdf document to find exact starting point of the first article. It was roughly at the same spot: 38.6 % of the document. Apparently I was referring to some notes in the introduction. And that is not a problem. I think.

Kids, definitions and laws

Of course there are some exceptions. And exceptions on exceptions. This is a great playground for testers. For sure. For ever.
Because people tend to change their minds. This is my most political statement BTW.

Writing about kids reminds me about the definitions debates which pop up every now and then.
“Children have special protection.”
“What do you mean?”
“You need the permission or consent of the people who take care of the child.” [GDPR 38, article 8]

“And the exceptions are…”
“services for prevention and counseling. In these cases you need consent of the child after asking it in a way easily understandable for child. It is not about child proof but about child friendly.”
“What is a child according to GDPR?”
“A person who is not older than 16 years.” [GDPR Article 8]
“No exception?”
“Of course. Glad you asked. Some national laws can set the limit on 13 years.” [GDPR Article 8]

The first time I read about laws. I thought about stacking them like this.

national privacy law stacked on GDPR

A few weeks later I came up with this.

A pyramid with the following layers from the bottom up; Human rights, GDPR, National privacy law, Region law, and Place law

Yes, another test pyramid.
Why? Because the lower the law, the bigger the impact of the law.
And this model is dead wrong.
Small reminder: it is my model, which is wrong.
Next is my proof.

Let me focus on two layers of this pyramid: GDPR and a national privacy law. If I am a judge judging about a privacy case in Belgium, this is my route: GDPR, Belgian privacy law.
Sign with GDPR pointing pointing to sign with Belgian Privcay Law

Time to add some complexity. You know exception on exception. I have to judge a person with two nationalities.

Sign with GDPR pointing to signs with Belgian Privcay Law and Spanish privacy lawas pointing in the same direction

This is my route: GDPR, Belgian privacy law. and Spanish Privacy law.
I am really lucky. Both laws lead to the same judgement.
Now people will say:
“Hey. I can still use the pyramid?”
“I can make it a camel case”
[Pun intended]
GDPR block with two smalls blocks on top: Belgian privacy law and Spanish Privacy Law

“What about this?”
Sign with GDPR pointing to signs with Belgian Privcay Law and Spanish privacy lawas pointing in the different directions

Summarised: the test pyramid uses impact instead of direction, which is rather complicating things.

Finders fixers

The one, who finds a problem, solves it. This is common practice in my DevOps team. I made a model for testing purposes and found a fault in it, so I have to correct it. Fair enough.

When I was looking for the best law to apply, I thought about the strongest law. Something with the most articles and most severe penalties.

I looked on the internet and found a page in Wikipedia about Conflict of laws. My children are quite sceptical about Wikipedia. “My teacher told me that you cannot trust Wikipedia, because everyone can edit the page.”

A flag, a house, and an arrow pointing to a big dot

Anyways, the following laws seem proper candidates: the law of the country where you live or the law of one of the nationalities or the proper law.
So my mental picture of the signs is the right one. Sign intended.

Writing about signs. I could make a model like this:

A sign which points to 2 signs, which in turn point to 2 signgs
But this model is also too simple. The Benelux, a union of 3 countries, is more complex than this model. The Netherlands is part of the Benelux and has 12 regions. It is difficult to show this in a 2D figure.

A few sticky notes, which hold smaller sticky notes, which in turn hold smaller sticky notes.

But frankly this is even for me confusing. So I rebuilt this 3D by using sticky notes with blue lines:

Sticky notes with 3 blue vertical lines on them

Then I put a sticky note with curly red lines to one sticky:

Sticky notes with verticla blue lines and one has a ticky note with red curly lines.

An then I connect some very small sticky notes with a single orange lines to the last attaches sticky note:

Sticky notes with verticla blue lines and one has a ticky note with red curly lines, which have sticky notes on it with orange line

This model gives me a more appropiate way to handle the laws.

Also on Wikipedia there is a page which described how to determine the right law.  There is basically a set of rules which a judge must follow.

And yes, I do mind the warnings of my kids and their teachers. Kids are like websites: sometimes I cannot ignore them.

If your company is GDPR compliant, then there is no time to rest. You still have to browse through the national laws. [GDPR 8]

This might sound complicated. Let’s take a huge example: the United States of America. If you live in Florida, you have to stick to the laws which are used for all states and the Florida State Law.

What now?

So have a chat about GDPR with the people from the legal department. They can become your best friends in the coming months. And beyond.

To boldly go where no techie has gone before.

January Testing

Somehow I ended up with this test term or test type. Actually is a subset of boundary value analysis. But I got your attention.

That’s my right

It was the second day of the year 2018. I was about to place a new post on my web site. I just knew something was wrong.

I went to the web site lay out. It took me a few clicks to open the footer. Then I changed the text to
“2014 – 2018. Mindful Tester. All rights reserved.”

Now I could add my post.

It is my right
for which I fight

That’s my audit input

The same week.
For the audit I ran a query in the defect registration system. The number of items on the list was startling low: 0. My query was wrong. That bugged me. Last year it gave the right results. Actually a few weeks earlier.

I had a look to the query and noticed:
StartOfYear()
I don’t know all the commands, but I could make a good guess.
This year started at January 1st 2018. I was one year off.
The report was about 2017 and not about 2018.

A few hours later I had to go to my boss. He still used the same old query. It was easily explained.

It is not the query
I marry

A test idea approach

Let me generate some test ideas:

  • Is there a checklist for things to be updated in the new year?
  • If yes, so when is it updated?
  • Are queries based on fixed dates instead of relative dates?
  • Are there changes in laws which I have to pay attention to?

Still wondering about the pic with door?

Janua is the Latin word for door.

What about May 2018 testing? Excuse me GDPR testing.
Do you know what the effects of the General Data Protection Regulation are? An European customer has the right to be forgotten. But what about payments?

 

Hide or Seek Outside the Comfort Zone

You can only listen
Aaltje Vincent about Twitter

The day after Christmas I saw a question from Kim about test types on Twitter. She could not find the desired information. I remembered a long serie of Jean-Paul about test types.

I did a quick search on the internet and found some useful definitions. On my reply a most grateful reply returned. Twitter can be quite helpful. In deed.

The truth is out there.
Special Agent Fox William Mulder

In order to prepare my tests I use Gherkin to describe my test ideas. Okay. I slow down a bit.
In the defect registration system I can add comments. I use Gherkin, because it is a high level language. It saves me the pain of dealing with all kinds of technical details. Which can change of course. Which is out of my control.

The devops in the team use Gherkin for their unit tests, so they can use my test ideas in case of jumping in. One devops tends to browse my scripts with test ideas. So it actually saves me time and I can do more exploratory testing. The unit tests are quite thorough.

One day I was looking for test ideas for removing items. It was simple and therefore deceiving. I did my run with SFDIPOT.
O stands for Operations, how will it be really used?

I imagined the users looking at the same item. What would happen, if two users would delete the same item?

I stood up and saw the devops who had the best overview of the system. I walked a few meters and started a chat about the simultaneous removal actions. He listened and agreed that this should be taken care of.

My scrum master joined in with a minimum of words: “Race conditions”.
Back on my desk I searched for race conditions.

I felt comfortable when I asked my question. The 2 words of my scrum master increased the safety. For me and the others

Ask yourself, “What would my cheerleader say to me right now?”
Denise Jacobs

One of the best things about the testing community is 30 days of testing. On twitter you can find a lot using the search term #30daysoftesting. The hash tag is a label which can be used to find relevant information or questions. E.g. #testing, #softwaretesting.

One of my best Twitter months was July 2016. There were small and big challenges in 30 days of testing and participants were encouraged to share their progress on the internet. Testers over the whole world participated.

I liked the atmosphere. Trying to create strange tweets which still fulfilled the challenges posed. Some of my tweets got likes and I became more comfortable with Twitter. It was possible to share my thoughts about testing. With people I never met.

I think #30daysoftesting is great. Thanks for making it happen
Bret Pettichord

“Just name two people who are quite influential in the test community about complexity.”
“Let me guess.”
“Hey I was first. To let you guess.”
“Dave Snowden and Nassim Taleb”

“Why those two?”
Snowden made Cynefin. For me it is a model how to handle in certain situations. Nassim Taleb made INCERTO. He focuses on becoming anti fragile.”

What was I struggling with?
Is there any relationship between Cynefin and INCERTO?

So I used Google and another search engine. I could not find something on the web which addressed my question. With a bit of luck this is the first one with a first step.

The same day I answered Kim’s question I looked to the tweets from Dave Snowden. He was busy with the principles of antro-complexity. He welcomed questions. For three days I had been polishing my question.
So I tweeted my question how these principles did fit in the genealogy of INCERTO.

I got a reaction.

Without doubt, you have to leave the comfort zone of base camp and confront an entirely new and unknown wilderness.
Stephen Covey

Skin in the game of diversity

So I had my own piece of constructive feedback for tech conferences a few weeks ago.
Okay you may call it a rant. It was close.
Actually it was. For a good cause. Diversity.

As a blogger I could just lean back.
Now it was time for my action. Skin in the game.

Target One

This year I was on a test conference. The number of female speakers was low. Some male speakers might say:
“Let’s double the number of female speakers. Fine with us.”
“Thanks guys.”

There was one female co speaker. That makes two female co speakers.
Wait. Now let’s look at the incredible number of female keynote speakers of 0.
2 times 0 makes 0. If this would be quadrupled or octodupled, it would remain a disappointing 0.

In my experience there are more great female testers than 2 in the Netherlands. Let’s give them a place on stage. Main stage please. Thanks in advance.

In the past no correspondence was possible about the proposal selection process of this conference. Discussion takes time especially with Dutchmen. So a bit of transparency might help.

“You’ve got a question. What is your question?”
“I think that there are great stories of women out there. We don’t have the time to coach them.”
“Just go to speaking-easy.com.”

“But this is a Dutch conference.”
“Indeed. But English is no problem for the attendees.”
“There are no Dutch coaches.”
“That also worries me a lot. A testing country without Dutch speaking coaches is strange.”

My first tweet to the conference was a wish for 2018: more female speakers than in 2017. No reaction at all. That was my target practicing. Next.

The next tweet was aimed to the chairman. I remembered two announcements of keynote speakers:

  • “When I was in London for BCS, I met [white male speaker]. I was quite impressed with his talk, so [ ….]”
  • “The other keynote speaker is [white male speaker] . I met him at TestBash Netherlands. “

Now let me stress that I am impressed with the test experience and knowledge of these keynote speakers. Now imagine two female keynote speakers and my reaction would be double wow.

Ready, aim, tweet.
My friendly request to the chairman was to have a look at a list of female testers in case of keynotes.
The answer was considerate: some of the ladies had already spoken as keynote speakers, but he would try to get other ladies on stage.

My tweet had an unexpected side effect, which I had not anticipated. A case of collateral praise. One female speaker reacted with “cool and Very proud” to be on this list.

Target zero
A few weeks ago Rosie Sherry pointed to a whole discussion about #PayToSpeak. As a speaker it is the norm to pay your travelling and accommodation costs. Both Rosie and I don’t like this.

I reacted with a Balanced Conference Card.
Just answer enough questions with Yes and you have a balanced conference.

“Why was TestBash target 0?”
“It was not. TestBash is one of the conferences focused on balance.”
“Why did you call this paragraph ‘Target 0’?”
“It is an inside joke.
Programmers always count from 0.”

Anyways my blog post ended up in the newsletter of Ministry of Testing. Thanks.

A week ago there was another discussion about female speakers. I pointed to my blog post. Somehow I ended up as an ally.

Target Two Too
Next tweet target was a huge European test conference.
You know: this size fits only one in Europe.
I actually was hesitant to send a tweet, but a disappointed tweet of a famous tester about another male lineup at a conf pushed me out of my comfort zone into my action zone.

Now comes the scary part.
The program chair had no Twitter account. A few years ago this was already mentionable according to his track chair. So I picked the conf itself.

I thought it was good to praise the conference organisers for actions taken for a diverse lineup this year. The aforementioned famous tester was also pleased with the steps taken in the past. So I retweeted her reaction with the request to keep up the good work.

This left an unaddressed program committee.
I tweeted a female member of the program committee to repeat the success of diverse lineup of this year. She did not react.

The conf did. Gender bias was taken care of by making the proposals anonymous. Reads good to me.

Target Two Too
By now you know the drill:

So if you want to have more diversity, you have my permission to use these actions.
Excuse me for scaring you.

Some tech confs have questions about diversity.  I respect their point of view. I heard really good stories about first time speakers supported by Speak easy
Oops let me add this to the list above.[v]

Conferences want praise from their attendees. So give New Voices a stage like Agile Testing Days. You know what: those first time speakers have a lot of keynote potential in themselves.

Little thought experiment
Bio 1: I am a white male speaker. My dad sent me to the best schools and universities, because he could afford it. I now work at a Fortune 500 company.

Bio 2: I am an African American woman. I grew up in the Bronx. We were really poor. The only times we saw a computer it was on the television.

One day I was invited by Per Scholas. They thought I was bright. I laughed. They suggested something with computers. Me and computers, I could not stop laughing for 1 minute.

Anyway I got some really good teachers. And I could touch a computer without some comment like:
“Hey, what you’re doing?”
It was not that difficult to pick up things. It was logical.

For me the time with Per Scholas was like a Christmas story. After school it would be back in the shop selling veggies. You know what. I got a good job offer. Ain’t that great?

“Wait you are writing everything down.”
“Sure.”
“But that is not a good bio.”
“I assure it adds so much flavour.”

Of course I am biased, if I see those bios.

  • A very influential tester once told me, he would like to follow the Per Scholas course. And he is already good.
  • These days I have to learn a lot just to keep up. What could this woman teach me about struggling and keeping faith?
  • I want to see the underdog.

Okay recruiters, don’t send me mails now.
I have a disappointing message for you. Both bios are fake.
Because this is a thought experience: you know like imaginary or hypothetical or dreamed up.

Target Me
Now what is all that stuff about skin in the game?
Good question. Which needs a good answer.

If I get accepted by a tech conf and there is big unbalance, then I will bail out.
I won’t speak.
This talk will be dearly missed on my CV and my Conference Speaker Bingo Card,  but that is my skin in the game.

Side notes

  • I am going to submit to 2 #PayToSpeak confs in the next few weeks. Although I don’t like this.
  • One conference is part of yearly package deal membership under 100 Euro. This club offers a lot to the testing community. So I give something back.
  • One conference is so nearby I lose a small amount of money for travelling. I can sleep at home.
  • And I want break my streak of speaking every other year. In the meantime I have this, a blog to practice my speaking skills.

A Balanced Conference Card

This year a woman thanked for joining a group of attendees at a tech conference. I forgot it, until social media showed a lot of interest in bad behaviour.

I planned to post this post weeks later, but the stories became more unbelievable as time progressed. One female speaker blogged about an invitation to share a room with the event organiser. Another female speaker did a remote talk after receiving death threats.

Last week a whole discussion on Twitter started about paying speakers. This basically means that not all relevant voices are heard because of the costs. According to me that is bad. I’ll write later on why.

We live in an unbalanced world. We live in a time, that we need role models, who look like us. We live in a world, where talent still can be found.

These are some questions for conferences to provide better balance.

1. Conference Announcement

  • Are there any pictures of attendees and speakers?
  • Are there differences in gender and colour on these pictures?
  • Would you be comfortable with them?
  • Were any incidents in previous conferences handled well?

2. Call for papers

  • Has the program committee women and men?
  • Are there is a good mix of consultants and perople who are not consultants in the committee?
  • Are pictures shown of speakers from previous speakers?
  • Is the proposal clear?
  • Is help provided with the proposal?
  • Is it clear, what kind of talks are asked?
  • Is it clear, which costs of the speakers is being covered?
  • Does the conference cover all  costs of the speakers?
  • Are special slots for first time speakers?
  • Is help provided for speakers?

Awesome example: http://codelandconf.com/#cfp

3. Program announcement
Looking at the selected speakers and talks, is there a good balance in

  • Gender
  • Race
  • Experience in topic
  • Experience in speaking
  • Hands on talks / workshops versus high level talks
  • Soft skills vs hard skills
  • Are keynote speakers female and/or people of colour?

4. Communication
For attendee

  • Is it clear, what you need for a session? Laptop or Java knowledge.
  • Is the level or the talk clear?
  • Is clear speaker info provided?
  • Is speaker information only sent to the speakers?

For speaker

  • Do you have all information to give your talk before you enter the conference centre?

5. Conference day(s)
For speaker

  • Is it clear, who the track chair is for the presentation?
  • Does the track chair support the speaker before, during, and after the talk?
  • Are the technical facilities taken care of?
  • Is the Code of Conduct used?
    Great example is Agile Testing Days.

For attendee

  • Is there room for questions?
  • Is it possible to talk to the speaker after her or his talk?
  • Is the Code of Conduct used?

6. The days after

  • Is there an evaluation?
  • Are relevant actions taken to provide a more balanced program?

How do we know as conference organisers, whether the conference is balanced?

There is healthy number of yes.

Bottom line

  • Is it safe to organise?
  • Is it safe to speak?
  • Is it safe to attend?

Elaborate notes
Note about hands on:
If you want a dev conference, I understand live coding sessions and an occasional manager with useful tips for devs. For a C level conf – only people with Chief in their job title – I expect only high level speeches. A coder with the right level of abstraction might fit in. The target audience is something to think about.

Note about choices:
There are conferences which focus on the quality of the talk. This is dangerous: attendees get great stories from the same people or the same companies for years. Their company is not my company. I need different contexts to make a good choice what to apply in my firm. As my scrum master once summarised: “It was a consultant selling his own product.”

Note about #paytospeak:
Why is there so many fuss about #paytospeak?
Let’s suppose I get accepted by conference in Italy. They offer me a free ticket to the three day conference. That sounds quite generous.
The following costs I will make for

  • Traveling to the airport
  • Plane ticket
  • Cabs or public traffic in Italy
  • Four nights in a hotel  with breakfast
  • Lunches and dinners for 4 days

I would not be surprised to spend 1000 Euro just for speaking. This sum might increase, because conferences often take place in touristic places.
So I could go to my employer, but my budget is limited. I once paid all my travelling costs and I was really lucky that accommodation and food was included.

If I would be accepted for 2 talks at tech conferences abroad, I have to use money on my saving account. So it is pretty costly to talk abroad, if these are #paytospeak conferences. I have to pay to speak. I don’t even break even and I will lose money.
And I don’t bill all the hundreds of hours I spent to get a decent talk.

Now I gonna write something weird. Suppose I have a new revolutionary way to test software and I would speak at all #paytospeak conferences abroad, then my bank would really notice this within a year. Even if I am a keynote speaker.

Note about diversity:
Do you know that story about the white male project leader, the yellow man and the African European woman?
No. Okay. The white male project leader, the yellow man and the African European woman entered the conference centre. In the keynote the white male project leader gave his extended pitch about the context. Then I, the yellow man, blew the minds of the audience telling about a multi dimensional test model. The African European woman remained seated and she deserved a place on stage.

Months earlier In my second week on the project there was something harsh in the air. For months the team had struggled with this software test model. The progress was low in the previous weeks. The male project members were starting to grind their teeth, when the African European woman politely requested to test two models. There were still grunts, but the other project members eventually gave in after friendly words from her.

So the project team split in two sub teams using two different models. At the end the outcomes were compared. The result was almost the same. Her model was the most easy one to use. The team spirit was back in town.

In that same week I got my Eureka moment. I could make some nice extensions to the model. Think about third and fourth dimensions. I only needed a push and she provided that.

One project day I met her. She was all smiling. She told me about a presentation of the model to her team mates. They were very experienced testers and they could not believe that the model was feasible for their context. She just answered all the questions all alone. And I had missed all the fun.

In the weeks before the keynote I asked her to speak several times. She replied with:
“That is not a place for me. You just talk.”
My project leader raised his shoulders:
“She is too modest.”

This is the story about an African European woman who used her kindness to save a project. This story is also about cultures. This is something I want to share with you the reader.

Note about proximity:
This year Marcel Gehlen explained the zone of proximity to me. If someone is in my zone of proximity, then I can easily tell how things can be done. An example, if you are an experienced tester and familiar with mind maps, I can point you to Test Insane.
An example how things could go wrong: one of my kids sometimes sighs very hard:
“Could you please explain this in children’s language?”

Most conferences tend to choose speakers with years of experience: a decade minus or plus 5 years in the subject. If I am unfamiliar with the subject, then there is chance that I don’t understand the speaker. I would call it a case of different proximity zone.

One evening I was browsing through a blog post. The same kid showed attention, so I showed a Visual First Person Customer Journey. Sorry for the click bait. I could not resist it.

I asked: “What is this about?”
“It is about a cinema visit.”
“How do you know?”
“It is the popcorn.”
[Pointing to the door with the heart]
“What does this mean?”

“It is the toilet.”
“How do you know that?”
“They use it in comics.””
I just had entered the kid’s Zone of Proximity.

Let me change the situation. I have to tell about my struggle with Test Driven Development in the first years. The first year I can really recall all the pitfalls I fell in. In the second year things become natural for me and the impact on TDD starters is becoming less and less. Basically my story has an expiry date. It will be lost unless I blog about it.

Experience reports can be useful:
If I want to learn advanced HTML, I need JavaScript and CSS. If I want to learn CSS, I need HTML. If I want to learn JavaScript I need HTML. You want to know how I tried to solve this puzzle?

Experience does not always count. Warning: some absurd situation ahead.
“How many times did you do this?”
“About four times”
“And you think we should support you. Listen to your story?”
“Look I brought you a potato and tobacco. People will love them.”
“We had something else in mind: spices. Do you understand, Mister Christopher Columbus?”

Note about female speakers:
At the beginning of this month Cory Foy had almost no female candidates for CTO. He just tweeted and got 27 awesome candidates.  And counting.

What really stuck, was this statement:
“I don’t want to ever here an excuse for not having amazing females for senior positions or at conferences again. ”
Focus on conferences again? Good, keep this in mind.

This year a list of top test automation people was published on the web. This list was strange: there were almost no women on the list. A spontaneous brainstorm session started. A lot of names of women were mentioned. This lead to the following two lists of female testers:

In case a conference organiser still cannot find good female testing speakers, I honestly won’t understand it.

Note about compensation;
This year an upcoming female speaker asked a #paytospeak conference about, how costs could be compensated. The answer was none except for keynote speakers. She was in the right league, so she asked for specifics. The conference answered that there was a limit. This could be called reasonable.

Unfortunately the limit amount could not cover the trip from New Zealand to Europe. This lady is one of the organisers of a conference in New Zealand which covered travel and accommodation costs for all speakers. Including one from the UK and one from the USA. This year.

Also this year. A female speaker had a question about a compensation for a co speaker. She wanted to talk about pairing in software development. The conference answered that only one speaker would be compensated. Now you can argue, that pairing cannot be demonstrated by a single woman or man. This lady happened to organise a conference which compensate the costs of all speakers, even the co speakers. BTW on Twitter I already saw one relieved female speaker of Euro Testing Conference. The plane tickets were compensated two months before the start of the conference.

TestBash has also great compensation for speakers. It was updated and republished after the #paytospeak discussion.

Note about harassment:
It was late in the evening, but the disco was packed. People were dancing on the floor having a good time. Some young women were approached by men. There was no contact, so another man tried, retried, and retried again. I knew these women. As a man I had to do something.

I just stood there looking up. I was like uncle Vernon looking at Hagrid angry that some family history had not been shared with Harry. The music started to fade for me as we locked eyes. I put all my indignation in my stare and did not back off. He put all his irritation in his stare …
and backed off.

Slowly the volume of the music went up for me. I noticed that people were dancing.

The following day one of the women thanked me. Apparently I had done something right.

The burden of a script

I was speechless. I felt devastated. After 5 days I still could not use internet on my smartphone. I had not prepared myself for failure.

Day 1
With a lot of reassuring mails in my mailbox I assumed that switching mobile provider would be a piece of cake. My new SIM card seemed to work well except for the Internet. After several failed attempts I looked on the website. I could not find information to solve my problem.

I called the service desk. The agent was friendly and suggested several options.
“Cross test? Never heard of it.”
I had to use my SIM card in another phone. Good test idea though.

My request to set the access point was denied.
A lot of resets followed.
Another agent took over. Another set of instructions.
Another serie of failed internet connections.
My request to set the access point was denied again.

A new SIM card would arrive within two working days. Too bad it was Friday.

Day 5

My family reported that no SIM card was delivered on the second working day. So I did a courtesy call to the help desk.

My math was 1 day off. I try to explain my reasoning: you could have sent it on Monday, so I would receive on Tuesday. Helpdesk math is unbeatable.

Back to the internet. At least that was really wanted. My request to set an access point was denied again. I got a bit annoyed. But the agent was willing to browse through all settings. I kindly denied. Already two of his colleagues had failed.

Day 6

On this day my SIM card was in my mailbox. Great.

I switched the SIM cards. No internet. Moved the new SIM card out and in. No internet. Tried to turn the card around. No SIM card detected and no internet.

Then I lost track of all my attempts. I did a cross test with the new SIM card on the phone of my wife. Internet!

Switched back the SIM card to my phone. No internet. I had no words.

Day 8
My wife had noticed my gloominess. She let me go to a computer shop to fix my internet connection problem. In the shop I rattled off all tests I had done like a professional helpdesk agent. Of course some tests were repeated. My phone was still capable to connect with the internet, if I could use the SIM card of the computer shop guy forever. Bad idea.

Now comes the big surprise: he did configure an access point for me. While making remarks about the illogical structure of the web site of my mobile provider.
Alas still no internet.

I was advised to grab my car to go to the nearby shop of the mobile provider. Because I had already cycled halfway, I cycled a bit longer.

In the mobile provider shop I had a longer list of attempts to recite. The man listened to my story and repeated a few attempts. Just to be sure.

“My colleague is resetting the internet.”
“Is this not dangerous?” I asked.

Believe it or not: this man configured the right access point for internet. I was relieved and grateful.

Day 9
What is the lesson learned?

 Provide a good web site. This saves time and shipping costs. And this blog post, which might go viral.
 Test the SIM card before migration on all kinds of phones.