Monday, February 24, 2020

Testing Tour Stop #10 : Pairing up on Observability with Abby Bangser

I had my 10th session already on my Testing Tour and it was with awesome Abby Bangser. I have a very special thing to share about what Abby has helped me with. Back in 2018 when I got interested in public speaking for the first time and dint knew how to start or from where. I came across  TechVoices (formerly Speakeasy) and straightaway approached them. I had to pick a mentor from the list, so I picked one and mentioned that I am a huge follower of Angie Jones and got influenced to get into public speaking after watching her talks. I didn't expect anything by saying that, I just wanted to share. Within a week I got an email from Abby that Angie is going to be my mentor and I was on top of the world. I can never thank enough to Abby for this help.

I was following all the tweets and information Abby would share about observability which slowly caught my interest to know what it is. I started to read about it from different articles and going through honeycomb resources. Have also been following Charity Majors tweets and blog. I reached out Abby and she agreed to join my Testing Tour journey, I was super happy Yayyy!!. 


Abby suggested if we could have a 15 mins prep call to plan our Testing Tour session which was an awesome idea. We had this prep call where I shared about what I'm interested to learn about and Abby gave me 2 options from which I picked to build the app which Abby used at Agile Testing Days Germany - 2019 workshop. Abby sent me all the details about what I had to prepare before our actual pairing session. I followed all the details and instructions and a lot of DM's where Abby was super super helpful. 

Getting Ready: 


1) Create a free account on Azure

The first step was to sign up and get an account on Azure so I can create my own computer/virtual machine - https://azure.microsoft.com/

2) Create a Virtual Machine in Azure

Now that I had my account, my next step was to create a virtual machine in the Azure cloud. The goal was to create a virtual mchine in Azure cloud that is big enough to run the application on it. The reason this is important is that the application runs both a lot of microservices (~8 services and a database) as well as all the infrastructure to make it observable (6 full applications and a bunch of tooling). Abby suggested the one that's mentioned in the document ubuntu computer with at least 16GiB of RAM.

First I created SSH key by using CloudShell Bash and saved it. Then I followed the instructions from this link which Abby shared. I added all the details required and selected "Standard D4s v3 (4 vcpus, 16 GiB memory)" .




3) Connect to the virtual machine

Now that I got my virtual machine created successfully, the next step was to start and connect it. When 'Start' button as shown in the above image, the virtual machine gets started. Then I clicked on 'Connect' so I got 3 different options - RDP, SSH, BASTION. I selected SSH as an option to connect and copied the ssh command and pasted in Bash terminal. I had a few challenges here while using ssh keys and using it to connect to VM. Finally, after a few challenges, I got it connected.

4) Installing and running the application

I followed this link for the instructions for installing and running the application. I just wanted to try following a couple of commands as part of pre-prep for the session and dint want to run all the commands as I wanted to do it during the session. First, I executed the command sudo -i. which means "login as sudo" so I can run as many commands as I can until I exit that login else I have to add "sudo" ahead of each and every command. I really like the way Abby explains things by making it so simple to understand. This was the first time I came across this command. I  need to have admin rights to the virtual machine I created in the cloud so I can install the application. I just tried one command which I had no clue what it's doing -

# install docker
apt-get update
apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  
  And the rest I left for our session. 

Session


Finally, the wait was over and it was showtime. This is exactly how I had my feelings towards this session. We started off our session with great planning and with a lot of enthusiasm. Abby already knew that I did run a few commands so the first thing she wanted me to do was to check what packages have I already installed. And the command Abby gave me for doing this was

apt list --installed
 This command gets you the list of installed packages. The output we got by running the above command was a huge list so Abby gave me another command to run.

apt list --installed | wc -l

This command is used to display all the files and folders present in the directory when it is piped with wc command with -l option it displays the count of all the files and folders present in current directory.  Wow, I was learning about commands and not just typing in and seeing the results. Abby was explaining what each command is doing which was amazing. While doing this Abby mentioned yet another new term that we are Yak Shaving. I was curious to find what this is and I found that -

Yak shaving is what you are doing when you're doing some stupid, fiddly little task that bears no obvious relationship to what you're supposed to be working on, but yet a chain of twelve causal relations links what you're doing to the original meta-task.


We were trying to run different commands and Abby was explaining me in detail so I think we were Yak Shaving which was good as I was able to understand each command.So next we wanted to search if transport-https was already installed by using the command:

apt list --installed | grep transport-https
Grep is a linux/unix command-line tool used to search for a string of characters in a specified file. The grep command is handy when searching through a massive log file. And if we want to run multiline command we need to '\'. Then we started to install docker which was part of instructions for Abby's application -
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
So here Abby explained to me that 'Curl' command says it's safe to download and tell apt that we need to have access to the repo. The way Abby was explaining about what each command is and what it does was so super helpful and interesting way to learn as I was not just copying and pasting the commands but was understanding the context of each command. The above command downloads the docker. What do you expect when two testers are trying to do this, of course, we wanted to confirm if the docker was installed so we checked it by running docker command. Now next step was to download docker compose -
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

So time again to test if it was installed by navigating to usr/local/bin and check if we can see docker-compose installed. We used the command -
 ls /usr/local/bin
Now next step was to create a userm, create a folder and pass the ssh key so we can clone the repo into that folder.
# create user
useradd -m -G docker -s /bin/bash olly
echo "olly ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers

# add ssh pub key
runuser -l olly -c 'mkdir /home/olly/.ssh'
runuser -l olly -c 'echo "" > /home/olly/.ssh/authorized_keys' 

# checkout repo
runuser -l olly -c 'git clone https://github.com/feature-creeps/observability-workshop.git $HOME/observability-workshop'
Finally, we had our repository cloned and the next step was to run the stack by using the following command -
runuser -l olly -c '$HOME/observability-workshop/start-stack-in-level.sh 9'

It took quite a while to run the stack and it was already 11 pm for both of us as we both were located in London. We finally got the entire application up and running on my VM on azure clouds which was such an awesome feeling. I was able to access the frontend and all the other tools like - Grafana, Kibana, Prometheus and Zipkin. Now that I got this application running, I could use it and explore to try different levels of observability.

Learnings

  • Getting out of comfort zone and built my own VM on azure clouds with all the help from Abby.
  • Learned new Linux commands and tried practically each of them.
  • Used all new tools for the first time but instead of fear of unknowns, I was thoroughly enjoying trying something new.
  • Planning and pairing is so powerful that so much could be achieved in just a couple of hours.
  • Testing mindset could be applied anywhere and everywhere like how we used while running different commands and testing them too. 
This is just a short summary of my session, but the actual session was even more fun and a lot more hands-on stuff that I did during the session. It was really an amazing session and I thoroughly enjoyed and in fact, I didn't stop my learnings from this session, I continued learning more different commands, playing around with VM, creating more new VM's (as Abby mentioned to me that its a great way to build some muscle memory) and using the application to learn more about using different logging and metrics tool. It's just the beginning for me and hoping to keep working on this and learn more on this topic. 

Monday, February 17, 2020

Testing Tour Stop #9 : Pairing up on Sketchnoting with Marianne Duijst

My ninth stop on my #TestingTour was with Marianne Duijst to learn about Sketchnoting which I have been trying to learn since I came across some of Marianne's and Lisi Hocke's sketchnotes. I had briefly met Marianne at TestBash Brighton 2019 while we were in the queue for 99 secs talk.
I was really super excited for this session. I am a note taking person whether I'm in a meeting, while in conference or even when I'm watching any recorded talks. I even take notes when I'm reading a blog to make note of some interesting points. I usually use my notebook, pen and highlighter while taking notes. I was really interested to learn about sketchnoting to make my notes even more interesting while I'm reflecting back on those notes.

Session


I briefly shared about my Testing Tour with Marianne when we started our session. I was very quick to mention that I don't have very good creative skills to draw something really good. The entire session was hands-on and interactive. We ended up having our session for almost 2 hours and 30 mins.

When we scheduled our session Marianne gave me the list of materials that were required for this session. Marianne joined the zoom call from two of her devices, one to screenshare while sketching using procreate app and other screen was used as our video call for us to talk.

First thing Marianne mentioned to me was that, sketchnoting is not about creative drawing. She also mentioned that a lot of people has this perception of relating sketchnoting to creative drawing. While scheduling our session Marianne asked me to pick a topic which we could use it for our sketchnoting. I picked up my Testing Tour as my topic to be used while I'm learning to sketchnote.

The first step we started off by drawing a banner and the title. I followed step by step instructions and I was also able to watch and follow while Marianne drawing it. Then next Marianne asked me to mentally divide the entire empty space into blocks and then draw shapes into each of those blocks. Shapes which I draw in those blocks were square, circle, triangle, oval and spiral oval.  I had no clue that these shapes are going to be converted into people. Next Marianne started adding a circle on each of those shapes to make it head. Next step to add legs and different types of hands to each of those shapes. I was already in awe to see those people all over my paper. She mentioned a point here about  sketchnoting which I totally agree with.

  • Visually appealing
  • Fun to do 
  • Easy to share
  • Easy to read
Then we continued to draw speech bubbles next to each person and added the names with whom I paired during my Testing Tour sessions as my stops. Next, we added another speech bubble to add the keylearning next to each person. I was already very excited to see the sketchnote to visualise my Testing Tour. And here's the outcome of this session which I feel so proud to share.

By Parveen Khan
By Marianne Duijst




Learnings

  • I'm making this sketchnote for me and for future me. 
  • Sketchnote is like a summary which triggers the reflection.
  • The core of sketchnoting is its notes and its content. 
  • Go slow to go fast.
  • Constrain yourself to free yourself. And the way to do this is by sharing before you think you are ready. Until we share the anticipation is not gone and we have the feeling of adding some more details to the sketchnote.
  • If we don't know how to do it, it's hard. If we know how to do it, it's simple.
I'm so grateful to Marianne for teaching me about sketchnoting and for her time. It was yet another amazing session of my Testing Tour to learn something unique. And a huge thanks to Marianne for inspiring me and motivating me throughout the session. 

Tuesday, January 28, 2020

Testing Tour Stop #8 : Pair exploring about exploratory testing with Simon Tomes

I was on my eight stop with Simon Tomes to discuss all about exploratory testing. When I was very new to exploratory testing, where i was trying to figure out how I can structure my exploratory sessions and show value to my team, I came accross Simon's #PQIP Problem , Question, Ideas, Praise and here's the blog for more details.  I started using this approach along with various different approaches to document and share it with my team. It was so great to pair with Simon and learn more about exploratory testing.


When I reached out Simon about doing this session, he was so kind that he just gave me his available date straightaway and we booked in 2 weeks time.

It’s incredibly kind of you to ask, I’d love to pair up on a testing tour session with you. It’s not something I’ve done before and I’m super curious to learn from the experience and from you.


Session


We started off our session with lot of energy and excitement and the first thing we discussed about was about testing community. Then I asked Simon, how and when does he integrates exploratory sessions and how does he plan for it. And I shared that I sometimes use mindmap as well to take notes during each session and then add all this information to the ticket. The reason why I add information to the ticket is not as a proof or something, but to help us reflect/revisit our testing approach. Simon translated this very well - 

“We don't document our discoveries to cover our backs. We document our discoveries to give back to the product.”

Then Simon ran ran through an example of exploratory testing notes for an exploratory session : "Explore Lean Coffee Table, cross-browser, to learn about sharing a board".



Then Simon mentioned that we always need to think first about what value does the product need to provide to the users, what are the potential risks that might come up, what questions do we have to come up with to identify those risks and then taking those questions and turning them into tests. This for me was #VRQ - Value, Risks, Questions.

Then after a long interesting discussion we decided to explore the product I'm working on. Zoom was great to share the screen and then I started to give some context about my product. Simon asked me how did I approached to understand this product when I was new to this. Initially it was difficult to go through the documentation and then explore the product because I was completely new to this domain. Our product is called Mia platform  which is a cloud platform that automates the accounts receivable life cycle which delivers greater efficiency, accuracy, visibility and cost savings for companies.

Then I shared with Simon that , I started to pair with project managers/product owners who were very close to the product and the users/clients to understand how it used.  I then reflected back on what Simon mentioned about asking questions to understand risks on one of the functionality of our product.

  • When the user logs in, the user can see a diary panel that gives the information about what kind of tasks needs to be done and for which customers and lot of other information. Its just like a simple diary or journal with notes of what needs to done today. 
  • Once the user clicks on one of the item from the diary panel, it takes the user to the customer account to perform the task or action or can also create a task.
  • If I'm exploring these two steps without asking any questions then its just a page with some call to action links which takes the user to customer account and we can click through to create or complete a task. It feels simple. 
  • But, if we ask some questions like - 
      1. How does the user use this diary panel?
      2. What problem is the user trying to solve by using this diary panel?
      3. What is the impact or risk of this diary panel not loading up with the items?
      4. What is the impact or risk of this diary panel loading up with incorrect details?
      5. What is the impact or risk if each item on the diary panel is not clickable?
      6. Where does the information come from on this diary panel?
  • By asking these questions(which are just few and there might be more questions that can be added) we can understand what value is this diary panel providing to the user, what are the different risks and then these could be in turn tests to check this. 


  • Then we discussed what if we applied the same approach for creating tasks functionality to find out value and risks. 
It was really interesting to share and discuss different approaches while testing. Here is the video which Simon shared  about - Exploratory testing  - Risks and questions and a handy note taking template .

Learnings from the session

  • A new approach of converting questions into tests and using those questions to find the value and risks. 
  • Being a solo tester you always have that fear of being not sure if you doing it right, by having conversation during this session and sharing my approach and getting the validation gave me so much confidence. 
  • We can always prioritise(by getting what is important from the team) which part or where to explore and come up with risks.
  • Its not just about finding issues while exploring but also finding useful information.
  • Technology can always give us troubles, even if you have back device as an option :D. We did face lot of unstable connection issues which is part of the remote pairing challenges but we overcame by switching to back up devices we both had. 
We could have really continued for another hour or so if we have not had this technical difficulties. Simon did mention that he would be happy to collaborate again which was awesome. Thanks to Simon for sharing all the valuable information and being part of my #TestingTour



Monday, January 27, 2020

Testing Tour Stop #7 : Pairing up on Restful-Booker-Platform with Niranjani

It was the time for my next #TestingTour stop number 7 with Niranjani where we paired up on restful booker app. There were few amazing things about my learning partner :
  • I met my pairing partner at Hustesf Conference at Budapest in 2019
  • We both are Angie Jones mentees 
  • Niranjani as well is on her #TestingTour

Session

We started off our session by cloning the restful-booker-platform from the github page and launched it in Eclipse IDE. 


Resftul-Booker-Platform cloned and opened in Eclipse IDE
Next steps was to check based on the requirements, if I have Maven, Node, NPM and JDK installed and which versions did I had.

So first we checked if I had NPM installed and if its already installed which version it was by running the command -- npm -version from command prompt. I had 6.12.0 version installed which was the required version for restful-booker-platform.

Next I had to check if I had maven installed by executing - mvn -version from command prompt again and I had Apache Maven 3.6.3 version and the requirement for restful-booker-platform was 3.6.2 so that was fine.

Then I checked if I had Node installed and the version if its installed by executing - node -v from command prompt. I had v12.13.0 which was as per the requirements. 

Now next step was to check Java and JDK , we faced lot of challenges here when we were trying to set this up as I had windows and Niranjani was used to Mac. It's weird that even the most common and simple thing gets challenging when we are trying really hard to complete something ๐Ÿ˜
After all those challenges we were able to set up all the requirements Yay!! 
As I my laptop was running java version 8 we then went into pom.xml file of each service and changed the version for each of them to 8 and saved the changes to ensure the target version is 8.

Now next we were set to build the and check if its successfull so we executed the command build_locally.cmd . We had some failures here in fact it took quiet a lot of our time in trying to figure where the issue was and then trying to resolve it. Then we went back into each folder for each service and made sure the pom.xml had been changed to version 8 and all the changes had been saved. 
Then finally the build was successful and next we executed the command - run_locally.cmd. And this is what we were able to view on - http://localhost:8080/
We also tried to run end to end tests before the time was up for our session.

Learnings

  • Being patient and going through each error at a time and try to resolve it. When I see loads of errors, I loose my patience and sometimes I try to give up on trying further. In this session Niranjani had so much patience to read each error and figure out what and where the problem was and then tried to resolve it.
  • When you cannot find a solution for the error try various ways to find it on Google. Google is your solution finder if we try to frame our questions well and try to find the answers. Not just that but try to use different answers to find the solution.
  • Niranjani was very well organised in following each step at a time and going through the readme file again and again if something wasnt clear while executing the commands.
  • Initially I was bit embarrased that I used the entire session for only setting up restful-booker-platform and dint use it for api testing or anything else. I realised that sessions might go in a different direction and not always as planned. But either ways the end goal was to pair up, learn, share and most importantly enjoy the session which we both did. 
It was really to great to pair with Niranjani to do this session. As I mentioned earlier if anyone is interested to pair with me or Niranjani as she as well is on her #TestingTour please reach out on twitter.

Tuesday, January 21, 2020

Testing Tour Stop #6 : Pairing on Roman Numerals Kata with Johnicholas

I had my sixth session with Johnicholas who is a programmer from New York who approached me to be part of my #TestingTour so I was really looking forward for our session.

Session


We started off our session by introducing each other and sharing our interests. Johnicholas introduced me a new tool Yayy!! Glitch. This tool is used for coding which is like working together on Google Docs where multiple people can work on the same project at the time. Wow there's no need of any setup and we can see the changes live on the web as we type. Isn't it cool.


Then next step we decided to pick something to work on. Out of so many interesting options we picked Roman Numerals Kata with Gauge to try work on which was implemented using Javascript and Gauge was used for tests. We also decided that we will be using navigator and driver/strong style pairing for our session. Johnicholas became the navigator first and we started off by looking at the readme.md file to understand what it does. It was a simple application that converts a number into a Roman numeral. 

Then it was time to switch role, now it was Johnicholas turns for being a driver and me being a navigator. We decided to check what tests have been already written by going to roman.md file. There were some tests already written to convert "1" to "I". Then I asked if we could write a test - convert "1" to "II" and run and see the results. This is how the results could look like :



We then decided to add some more tests and run. The most interesting part was that we dint use any timer tool to check the time to change the role but still we strictly followed shorter cycles while we were changing the role and it really worked very well.

While we were writing the tests we realised there was no implementation details for few tests. For example, I wanted to write a test - Convert "5" to "V" and check if the test passes. We picked up roman.js file which had the implementation details written in Javascript and this is how an example implementation looked like before we started writing the implementation code.



Once we had this implementation code written we then added the tests to check if it works and converts 5 to V. We continued writing more tests and run to see if it does what it is expected to do. I was really enjoying using this Glitch tool as it was so easy to use. 

Learnings

  • Got introduced to a new tool Glitch which really awesome. There were so many different projects to work on and practice and the most interesting part of this tool is that multiple people can collaborate and work on the same project. 
  • We don't need any timer tool if both pairing is familiar or very much willing to do strong style pairing. We dint use any timer tool but we were still following regular short 5 mins cycles to change our roles.
  • I knew that not just testers would like to pair with a developer and learn to pair but developers as well are interested to pair with testers.Johnicholas was interested to pair with tester's outside his team to learn and share. 
  • Discuss about the application to understand it better before starting to work/test on it. This would make sure that both have same understanding about the application.
It was such a great and interesting session and in fact we decided to pair again to collaborate on another project on Glitch. 


Tuesday, January 7, 2020

Reflecting back at 2019

This is the first time I’m writing a blog post on reflecting back on a year. Its been a different year so I thought its good to look back and see what I have learned, what challenges did I tackle or face and what was new during the last year. I always end up in not appreciating or acknowledging myself on what I learned or achieved. So I thought it would be good to look back so I know what’s 2019 been like for me.

  • I also presented at 3 online conferences, 1 online meetup and was part of a panel discussion with Lisa Crispin, Simon Prior and Joe Colantonio. It was such an honour to be on this panel and I had a great experience being part of this. 
  • I gave my first conference talk at Testing Summit London 2019 and I got invited to present again at Test Summit London in 2020.
  •  I was new to this entire testing community and 2019 was the year of networking. I never used twitter or slack groups but I started being more active since this year. It really helped me in lot of ways. I could share my learnings, my happiness, my achievements, I'd reach out if I had any questions. What's more wonderful was the overwhelming response from the community to help me find my job 
  • The pattern for me in 2019 was all about coming out of comfort zone, doing things which I  have never done before, being brave and courageous, had ups and downs and still trying to learn to deal with those things, learning new topics. Overall it was an awesome year for me and really looking forward to continuing learning and sharing more in 2020.