Thursday, March 29, 2018

Get up and share! A Shout-out to the Community

The last 2.5 years have been awesome. The past 1.5 years crazy. And the last 0.5 year overwhelmingly phenomenal.

Today I saw a tweet of Agile Testing Days that my newbie talk last year made it to the top ten talks; and it absolutely made my day.
Shortly after, I decided to send another tweet.
And as I saw the manifold positive reaction of the community around me, my day became even better. I'm so thankful to be part of it! This made me think: How did I get there? Here's the only answer I have, and I'll leave it rough and raw this time.

The Time Before

As my first job as a tester came to an end in 2011, I discovered Twitter and the testing community there. It made me start following them on Twitter.
Passively.
Then cautiously shared some bits and pieces.
Got heavily encouraged by Lisa Crispin who suddenly followed me back!
Quite some time passed, but then I saw so many tweets about Agile Testing Days 2014. And I knew I had to go there!

2.5 Years Ago

So I did attend Agile Testing Days, in 2015.
And finally met Lisa in person! She encouraged me to speak at conferences myself. What, me? Nah...
End of the same year I changed jobs. After a period of projects, I finally returned to product development.
I encountered a really safe environment. Got valued and appreciated as a tester.
I grew. I tried things. I experimented, together with my team. I got lots of support. Strong leaders encouraging me. Trusting in me!

1.5 Years Ago

Back to Agile Testing Days in 2016. (I will always return to this conference; I'm biased as it was my first, but I love it.) It was massively inspiring.
And the best: I met Toyer! Accepted his deal to return next year as speakers. We became learning partners, and really took on this challenge!
I finally started to blog (by stopping overthinking it).
Started to tweet even more.
Started to finally overcome my fears and attended meetups. (First time in my life!)
Submitted to conferences; Agile Testing Days as well. (Of course.)
Got invited by Lisa to do a workshop with her!! Too good to be true.
And then also got selected to give a talk! For other conferences as well. Never expected that.
Now I had to do this. So I prepared and practiced a lot.
And got up on stage. Speaking! For the first time.
This way, got to know even more people in the community; especially the many other speakers. What a wealth of wonderful minds to learn from!
Time to celebrate.

The Past 0.5 Year

I'm absolutely stunned about the reaction of people around me. All this going out of my comfort zone and sharing increased my visibility in the community A LOT.
I even got invited to conferences! Never would have imagined that.
So tempting now to continue and submit further papers. (So I did).
Got selected to talk at further conferences this year as well!
This gained me the opportunity to attend even more conferences this year. I will meet again the awesome people I already know. I will meet even more people, gain more supporters, get more feedback, grow more.
I just love this community.

Today

All this came not by its own. I consider myself really lucky: I have so many supporters around me who help me fly, and it's getting easier every day! I don't do anything differently than I have done before; besides one thing: I started to share. Publicly. And yes, I invested a lot of effort in that to make it happen. And also, I still have so many things to learn! Every day I learn how many more, and how many awesome people are already out there! I'm not the best tester, I'm not the most knowledgeable person when it comes to tools, communication, or anything; and I definitely haven't got all the answers. What the past 2.5 years taught me is that I don't have to be all that. You don't have to be. All I have is the experience I have. As simple as that. Plus: I now share it for those who decide to listen.

It took me quite some time to realize that throughout the past years, I already had made more and more small steps out of my comfort zone, learning on my way in my own pace. Starting sharing got me the visibility that accelerated my learning a lot. I can only recommend to get up, go out there into the learning zone, and share. Discover that awesome community yourself that made my day.

Tuesday, March 20, 2018

Bad Talk, Take Three: Sabina's Story

As announced in my post about How to Respond to Bad Talk in a Good Way, I am honored to host the voices of some of those who joined our discussion back at Agile Testing Days 2017.

Today I'd like to share with you the thoughts and experiences of Sabina Atic, written by herself, in her own words.
As a woman in highly man dominated IT job, I have had a lot of thoughts on how to achieve an including working culture where we have respect to each other and each other’s differences. In Sweden, the theory about equality is highly valued and in my senior working experience (+5-10 years), I had the luxury of not being directly addressed in an unappropriated way at my work. When I was younger, it happened a few times that both older men and women colleagues tried to “put me in place” in front of others, without any intervention from the public. Today I’m much more confident with both myself as a person and my professional knowledge. I also think that in most of the societies, the rib on how to talk and respond to young people and children is quite low. We somehow tend to forget that they also have equal feelings and that they are learning from us.
As for myself, as a woman not afraid to speak up and question talk I find disrespectful, it is quite easy when the talk is clear and direct. I can ask “how do you mean” or “could you please explain” or just explain how I perceived the message. I like using humor. I feel proud when I manage to use civil courage and I also am thankful to others doing so. But how do we handle subtle hints? Body language? Would I be able to understand that I hurt someone by using my ironic humor because irony has bypassed him/her? Is a man colleague/manager et al. even aware of being more critical to my suggestions and my knowledge compared to other men’s? Is he unwilling to listen to my questions and suggestions because he unconsciously thinks that I have less technical knowledge than my men colleagues and thereby is lacking trust? How do we communicate when our prejudices are constantly present, not just regarding men-woman relations but also relations between different cultures, races, gender identities, ages and so on? This is a quite complex and multidimensional topic and some people are more open and sensitive to both spoken and non-spoken vibes. Do we need to experience inequality to be able to perceive it? I think not. I think is a matter of taking the effort and time to evaluate own values and believes. To sometimes critically review societal structures, to understand and dare to trust that equality to others don’t mean inequality to me.
#metoo campaign is huge in Sweden and even reached government level. Hashtag technical failure points to the fact that harassment is present in our branch (https://www.thelocal.se/20171120/metoo-technical-failure-swedish-women-in-tech-say-sexist-culture-is-normalized-in-the-industry). If we want to live in a more tolerant and open world, we need to become a majority of men/women/other leading by example, questioning the structures and daring to speak out when encountering injustice.
—Sabina Atic
Thank you, Sabina, for sharing your thoughts with us.

Tuesday, March 13, 2018

Testing Tour Stop #3: Pair Debugging with Thiago

My testing tour continues! Today I had the pleasure to pair with Thiago Amanajás again. In our last session we worked on automating core scenarios of his team's product. In the meantime, Thiago implemented further cases but now had some tests failing. So we decided to first investigate and fix them.

Setting the Stage

The retrospectives of my previous two sessions showed that collaboration styles matter a lot. I resolved to clarify some things right in the beginning of the session. I asked Thiago if he would be up to do strong-style pairing, with one being the driver on the keyboard taking care of the implementation, and the other being the navigator leading the way to the solution. And he was! We decided to switch roles every four minutes. Furthermore, we agreed to try out a mob programming timer tool showing us directly on screen when it's time to take turns so that none of us would need to take care of stopping and restarting a timer while pairing.

Debugging automation. Exploring? Infrastructure issues!

As agreed, we started by having a look at the failing tests. After running the first failing scenario which repeated the same test for all available domains, we discovered that one of the test systems was not available and thus caused the test to fail. We asked a developer about it and found out that the system was up and running but not reachable from the office and that it was a known issue. Now that's interesting, we thought, how would they suppose to test this domain then? Later on we learned that the system was not accessible via wifi; using LAN connection it was.

Well, for now we excluded the concerned domain so we could see if something else was going on here. And by doing so, we found a logic error in the automation code. Great! Fixed it, ran the test again, and - yet another failure, a different domain was complaining now. Okay, let's see. The code compared a given URL with the found URL and stated that they differ. Interesting. We dived deeper and saw that many elements were identified using complicated xpath locators. Hm, according to my experience they are not only hard to read, but also tend to change when implementation changes, and overall are not known to be the fastest. So I asked why not using IDs? And found that the application code did nearly not offer any IDs. Testability could really be improved here! For now, we introduced IDs where we could and returned to our failing test.

We improved the log output to see the actual difference in URLs, ran the test again, and - it failed. We checked and realized that also this domain was not accessible! But wait, we didn't see the log output we added. So we decided to run the test again. It failed again. But not where we expected it to fail! It failed for a domain which just had worked some minutes ago. What was going on here? Our just improved logging of URLs now showed us a really unexpected redirection. We checked the site and found it was marked as insecure due to an invalid certificate. Strange, it didn't happen before! We looked at the dates and found that serendipity helped us uncover an issue. When we started the test, the certificate was still valid, and just when the test came to that domain, the certificate turned invalid as we hit the exact timestamp like the bull's eye!

This made us check the certificates of other domains as well. And we found lots of interesting inconsistencies. Domains running on a certificate for a different domain. A domain with a soon to expire certificate. A domain with a certificate only valid for five days! Here we struggled with the localization of Chrome. We used the Portuguese (Brazil) version of the browser and the certification details date labels said "Inválido Antes de" (invalid before this date), and "Inválido Após" (invalid after that date). This didn't feel intuitive for us. Why stating when it's invalid instead of when it's valid? So we checked the German version and saw that the first label was translated differently to "certificate is valid from this date on". Interesting how different localization approaches can help or impede our understanding.

In the end, we summarized our findings. After clarifying some issues with his team, Thiago resolved to follow up on three things.
  1. Upgrade the infrastructure platform to handle more than ten certificates for the test domains and thus avoid the observed issues
  2. Allow the test systems for the concerned domains be accessible via internal wifi
  3. Create ID attributes for the frontend elements to increase testability

How was it this time?

At the end of our 90 min timebox we did again a short retrospective. We both liked the strong-style pairing a lot, also with the frequent rotation. We had the feeling we shared and learned more this way, especially when compared to our last session.

What really annoyed us, however, was the mob timer we chose to try. The setup was easy and the popup indicating the rotation was gentle and not disturbing; however, we had to restart the timer for each and every rotation again. We changed roles pretty smoothly from the beginning, just grabbing the keyboard and continuing quite naturally as soon as the popup was displayed and the bell ringed. Therefore, having to actively go to the timer to confirm the next round was quite distracting. We would have loved the timer to notify us but just continue counting down the clock so we could stay focused on the task at hand. For my next session I'll definitely look for another timer with that feature.

All in all, we deviated from our path quite a bit, as it's so often the case when you started testing something and that something behaved in a completely different way than you would have expected. So it needed debugging. And then you stumbled across the next issue. And the next. You really wondered why this would behave like this, or show those values. Ending up at a completely different place than intended, but having identified essential problems that need to be taken care of. Exactly what we did, all the while having lots of fun together! It was awesome.

This session showed me again how broad knowledge can be invaluable for a tester, just as really specific core expertise. Being "all over the place" enables you to combine the tools you came across and the skills you learned. Like writing automation to increase your regression safety net. Like using automation to explore strange system behaviors. Like applying infrastructure knowledge to identify the real issues. We cannot know it all, but every single additional piece of knowledge helps us with testing.

Want to join me on my testing tour?

After experiencing some issues when scheduling my next sessions with lots of messages back and forth, I decided to give Calendly a try as I heard a lot of good things about it. The free account offers one event type and lets you integrate the tool with one calendar like Google or Office 365 to show your availability, as well as define additional rules for scheduling. Really important for our international community: It also solves the time zone confusions, as everyone sees the times in their local time.

So in case you like the idea of hands-on practicing testing together and learning from each other, please don't hesitate and schedule a pairing session with me! Looking forward to it :-)