Theme images by Storman. Powered by Blogger.

Software Testing

[best practices][feat1]






Most Recent

Random Posts




Featured Posts

Wednesday, August 14, 2019

How to make your teams deliver fast in Agile

- No comments


What do you think of, when I say the word Impediment. I know most of the agile/scrum teams are familiar with this term.

Agile teams normally fails to deliver fast due to a lot of impediments. Some of these impediments are visible, while most of them are not. Let's try to find out how we can deal with these impediments in our team. 

I want you to think about 5 things that popped into your mind when you here this word - 'Impediment'. Just think about those 5 great impediments you have in your product/project before proceeding to read further. 

You know right when I say this I cannot read your mind and know what you guys are thinking about right now. But my sixth sense says most people when we talk about impediments think about things like a slow or broken machine or a code repository that's gone down or just a lack of resources or skill gaps in your team. Well I am not sure about my sixth sense, if it's functioning well now-a-days but one thing I know is that we tend to forget about all the little things that takes time. Things like waiting for the product owner or waiting for stakeholders to make a decision. We can define impediment as:

"Anything that prevents your team from going as fast as possible is an impediment"
So let's talk about noticing and listing down the impediments. When we talk about agile, Scrum is a great framework to deal with it. 

This third questions is what we are talking about here. Do you think we are answering this 3rd question efficiently and effectively ? I have noticed that normally people tend to mention the big impediments like broken machines, but those small ones we had talked about earlier, those don't get mentioned in that question in a proper way right ? Do you think it's not an impediment to you or not just worth mentioning it ?

I agree standup's are still a good place to notice impediments though if you listen to the language that people use you will get even more attention to the actual impediments of your team. Let me just go through a small standup example. I am trying to mimic a standup conversation happening in one of my team:

Dev 1: I'm busy with the portfolio page on our Web site and I'm still waiting for Vinu to finish the images. I assume he will give it to me before end of the day.

Scrum Master: I really wish we could find a way to do the images faster and I guess we just have to wait till he's done.

Dev 1: Well I'm hoping it's going to be finished soon. It was almost finished.

Dev 2: Ok, I am gonna try to work on the Event page there with Zen. We've got to get that widget working, it's actually not working.

Scrum Master: I think Zen is not available today, He is still working with Fred's team for some quick fix.

Dev 2: Oh, I forgot about that! I guess he's still busy with that. Mmm Ok, Well actually I will find some time to do it by myself then and not take a bit longer.

Scrum Master: Ok

In the above conversation, did you notice some of the words that they used? Some of these words we call them are impediment words. 

Let me explain. See the words given below which is actually there in the conversation above.

These words mean that there are some kind of uncertainty. All of them assuming and waiting for something. And the truth is that if there's uncertainty, chances are high that it's going to slow down the pace of the team.
Next time when you hear these words, what I suggest you do is take notes and write these words down for yourself & take it to your next meeting. Let it be a stand-up or a planning meeting and start to notice if people are using these words. If they do, try to figure out what the impediment behind that is.
Now let's talk about some other places you can look for impediments. We've looked at the stand up and listening to the language of the team using. Now I want to talk about policies and assumptions. If you think about policies, one of the policies the teams usually have in place is the definition of done and they are put in place for really good reasons. But sometimes, they can also be your impediments. 

I know a team who had something on the definition of done that, the architect had to do the code reviews. It was a good intention at that time but that can become a bottleneck if that architect is busy. And at the time of UAT one person has to do the cards reviews as per the Contractual UAT testing and the story can't be done. That might slow the team down and they could look at other ways to solve that instead. 

Assumptions are a little bit more difficult because they're not written down like policies but they can still be impediments and they can still slow the team down. One team I worked with had an unspoken assumption that they were striving for a 100 percent test coverage when they were working with a vendor, but only at the time of UAT it was known to all that 100% test coverage was mentioned only for the acceptance criterias mentioned, not for the wjole test cases. And it really messed up both the teams in delivering the product on time. I am sure almost 99% of the team might have some assumptions as well, that are slowing them down.
So what I want you to do now as an exercise is to get out and walk around. Take a look at your team's area. Their task boards, maybe their definition of done if it's written out or printed up and see if you can spot at least three impediments
So we've already discussed about what are impediments and the places to look for impediments. Here is the 2F technique which you can use to discover some more impediments in your standup. 2F stands for Fourth and Fifth. Add the below 2 as the 4th and 5th questions of your standup. 

How confident are you that we will make our sprint commitment? 

This is a great question to ask during stand up and ask it to each individual person. If they answer anything less than 100 percent, that's an indication that there's an impediment there. Dig it deeper and figure out what it is so that the whole team is confident that they're going to meet this sprint commitment.

How can we go faster?

You might think that this will backfire and the team will just come up with a list of reasons of why they can't go faster. That list, that's your impediment list. If you're lucky your team will give you a bunch of things of what to change so that they can go faster. Again, impediments for you to solve.
So as an exercise I'd like you to think which of these questions is more appropriate for your team right now and ask them, either how confident are you or how can we go faster and note down a few more impediments for you to solve. 

Now you should have a really long list of impediments that you've started to spot but that doesn't do you any good until you start to solve them. Hopefully some of them will be quite easy to solve. But there's always some that are a little bit tricky.

And for that, wait for my next post where I will share some of my thoughts on how we can solve those tricky issues. If you have anything in mind, feel free to write it as comment so that others might find it useful. 

All the best with your agile impediments guys!

Tuesday, July 2, 2019

Who is a Devops Engineer ? A Guide to become a REAL Devops Engineer

- No comments

DevOps is one of the most widely and wrongly used buzz word in the IT Fraternity in the past few years and even now. Normally we hear a lot of things related to Devops. Companies adopt organization wide Devops policies, Started focusing more into automation and using more tools and  all this end up with another buzz role called DevOps Engineer. Organizations expectations about Devops Engineers are different and sometimes funny as well. Some people think, if you can do test automation you can be a Devops Engineer. Some might say like you are a good Devops Engineer, if you can do CI/CD or create a pipeline. Most of them see this role as a Super Powered Hero who  can do a lot of things alone, which was previously done by a lot of people. One role for too many things and that's it. 

So the question still remains un-answered for many with the same confusion. 

Who exactly is a Devops Engineer ? What is he responsible for ? What can we expect from them ?

In this post, I am trying to clear all your doubts regarding the roles and responsibilities of a DevOps Engineer.

What is DevOps?

The term itself is about eight years old, and big names such as Google, Amazon, Netflix, The Gap, and General Motors have made validating investments in it. If you ask this to 5 people, you are likely to get 5 different answers. 
  1. Is it a culture that we need to bring-in to our organisation to make ourselves more responsible and accountable ?
  2. Is it a Process which changes the way we work or enable us to deliver fast ?
  3. Is it a strategy to bring-in more tools and automate many things which will reduce human effort ? 
Actually my answer to this is as follows:

Yes It's a culture within an organization that increases the communication, collaboration and integration of the Development (which includes the QA team) and the Operations (IT Operations) teams.

Yes, It's a process which helps us to deliver quality product more frequently and reliably.

Yes, It's a startegy to automate and speed up the software delivery process so that those Human efforts can be re-invested to things that really matters. 

In-short, People + Process + Tools = DevOps 

It applies to everything from org structure to code structure to infra structure. 

Now comes the real questions which you need an answer for:

Who is a DevOps Engineer?

DevOps Engineer is an ordinary person who have some extra-ordinary skillsets as follows:
A person who understands and contribute to the software development lifecycle and has a  thorough knowledge of various tools for such as source code management, continuous integration, configuration management, Continous delivery, deployment and monitoring.

Who can be a Devops Engineer ?

With the above mentioned skillsets:

Mostly any System Admins who have a passion for coding and development realted activities or
Likely any developers who has interest in deployment and network related operations can become a Devops Engineer. 

I would rather prefer to say , DevOps Engineer is actually “Systems Engineer 2.0.”, somebody who understands the Software Development Lifecycle and brings software engineering tools and processes to solve classic operations challenges.

I have come across a lot of people in my life who claims to be Devops Engineers, without even knowing what does it require to be a Devops Engineer. These are the Must have skills to call yourselves a Devops Engineer:
  • Through Knowledge of atleast one cloud platform (AWS, Azure, GCP, Alibaba)
  • Good hands-on knowledge in dockerisation, monitoring, Configuration Management and Deployment tools like — Kubernetes, Puppet, Ansible, Chef, Terraform, Nagios etc. (atleast 1-2 in each category)
  • Proficient in any 1 of scripting language like Javascript, Go, Python, Scala, Ruby and C along with Git and Git workflows
  • Experience in developing Continuous Integration/ Continuous Delivery pipelines (CI/ CD)
If you think you have a tick for all the 4 points mentioned above, you can be proud to be a Devops Engineer, for the rest who are still in the same title but failed to get all these points validated against themselves, don't worry it's all about learning and improving yourself. At-least you know it now. So this is the time to start working towards it. I have an interesting picture from hiredevops which will help you with more guidance in becoming a REAL Devops Engineer.

I hope you might have found this article helpful in shaping your career as a better Devops Engineer.

Good luck!

Saturday, November 17, 2018

The Next Generation IDE - Selenium IDE 4 is officially released.

- No comments

I was thinking for few days on writing a blog but was not quite sure about what should I write about. And then I came to know a happy news which could also make a lot of other test engineers also happy. Well let me tell you what it is all about. 

As you all may know, back in August Selenium has officially announced the deprecation of Selenium IDE. If we talk about the user statistics, Selenium IDE was having: 
  • 3,000,000+ downloads 
  • 150,000+ weekly users
  • 1000+ daily installations
For those who don't know about the selenium IDE, It is an open-source record-playback tool for the web. The IDE was utilized by many test automation experts around the globe, and then they don't had any proper tool to get help with. I was also a bit sad about this since I was depending on this tool for finding custom locators, but for me it turn around well because then I learned to write locators without depending on any tool. Well that's my case, but there might be a lot of other test engineers who still find it very hard. 

 But now it's back with new look and pretty cool features. Selenium IDE has now got a pretty good upgrade and Simon Stewart, Selenium Project Lead and Creator of WebDriver, revealed the new Selenium IDE in a special live session, including capabilities, features, and roadmap. They call it Selenium IDE 4.0 which also will be a great supporting factor for the Selenium Webdriver ver 4.0 which is in beta stage. 

Selenium IDE 4 also known as Selenium IDE TNG will be a web extension and it is standardized with the W3C and hence it could be run in any browsers compared to the old version. The UI still remains somewhat similar to what we had before. Also they have made some great improvisations in terms of locators and better support for common tasks. 

For continuous integration purpose they have also implemented a new selenium ide runner which is a command line tool which is great for parallel executions, grid executions and can also be configured through capabilities. 

You can install the runner by simply running the following command:

npm install -g selenium- side-runner 


yarn global add selenium- side-runner

And another great feature is the usage of control flow. Earlier we were not able to use the control flow statement/conditions like if loop, while loops etc. Now you can use condition based statemets in the selenium ide for getting things done more efficiently. 

Another key feature which we need to mention is the usage of fallback locators. Now when you record it will also save about 5 different other locators that will be in action id any fallback condition is happening. That means if you find you page changing frequently with new id's or attributes, u need not worry because any of the other locators can be used. I am sure that these features are gonna give a better stability to our tests. 

You can also create custom plugins for adding new commands, locators, control set up and tear down etc, which is another cool feature. You can have a look on the wiki to know more about how to do execute it effectively. It is really well explained there. 

Their roadmap also include pretty cool features like Exporting tests to programming languages, Empowered data driven testing etc. 

You can download the latest version of Selenium IDE by clicking these link: 

Useful Links
Happy Testing, Stay tuned!

Monday, March 26, 2018

Now 'Kali Linux' can be run in your Windows 10 Machine - Yes you heard it right!

- No comments

how to install kali linux on windows

Penetration Testers and Security Specialists mushbe very familar with Kali Linux. It is one of the few hacking focused Linux distribution. So people with hardly any knowledge of Linux or anything related to computer security are now trying to use Kali as their main Linux distribution. Let me first give you all a very short introduction about Kali Linux!

What is Kali Linux?

Kali Linux is a “Penetration Testing and Ethical Hacking Linux Distribution”. Simply said, it’s a Linux distribution packed with security-related tools and targeted toward network and computer security experts. A Linux Distribution is nothing more than a bundle containing the Linux kernel, a set of core utilities and applications and some default settings. So, Kali Linux does not offer something unique in that sense most of the provided tools could be installed on any Linux distribution. 

Well but this was a disappointing factor to those who only use Windows as their OS. Here is the happy news for those guys! The wait is over :) 

Now you can download and install Kali Linux directly from the Microsoft App Store on Windows 10 just like any other application.

I know it sounds a little crazy, but it's true! Let me explain how. 

Kali Linux is the latest Linux distribution to be made available on the Windows App Store for one-click installation, joining the list of other popular distribution such as Ubuntu, OpenSUSE and SUSE Enterprise Linux.

This announcement is super exciting for penetration testers and security professionals who have limited toolsets due to enterprise compliance standards.

In Windows 10, Microsoft has provided a feature called "Windows Subsystem for Linux" (WSL) that allows users to run Linux applications directly on Windows.

For the past few weeks, we've been working with the Microsoft WSL team to get Kali Linux introduced into the Microsoft App Store as an official WSL distribution, and today we're happy to announce the availability of the 'Kali Linux' Windows application," Kali Linux said while announcing the news.

How to download and run Kali Linux on Windows 10 ?

Are you aware of the feature called WSL in windows ? If this is your first time using Windows Subsystem for Linux (WSL), you need to enable this optional Windows feature before getting the Kali Linux app.

Follow these simple steps to enable WSL:
  1. Navigate to Control Panel and go to "Apps and features"
  2. Select "Programs and Features" from the right panel
  3. Click the "Turn Windows features on or off" from the left menu
  4. Select the "Windows Subsystem for Linux" and save it
  5. Reboot your system

You can even do the same by opening PowerShell as Administrator and running the following command and restart your computer.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Now search for Kali Linux on Windows Store, download it with just a single click. Once you launch the application, it automatically completes Kali installation and will open the console window.

That's it! You can also check Kali Linux documentation for more information.

Kali Linux on Windows does not come with any hacking or penetration testing tools pre-installed, but you can easily install them later. Kindly note that your Antivirus application or Windows defender can trigger false-positive warning for hacking tools and exploits, but you need not worry about it. Add them to your safe list and start exploring it now!

Happy testing!

Thursday, March 22, 2018

How to choose the Best Programming language for Test Automation with Selenium

- No comments

Quite a few weeks, back, I got a question from one of my contacts in linkedin. 

So I just thought of writing this blog post to give an overview of the programming languages that every beginner should prefer while it comes to learn Selenium. Actually speaking, I would say the language doesn’t matter at all. 89% of the concepts you learn in one language can be applied to any other language. First select any language that you are comfirtable with, roll up your sleeves, and jump in. That's it :)

In Dima Kovalenko’s book Selenium Design Patterns and Best Practices, he discusses how the common Selenium command sendkeys translates in most of the other major Selenium Language bindings. Check out the example below:

This uniformity between the different Selenium language bindings applies to most of the commands in the Selenium API. So, it's really easy to transfer your knowledge of one programming language approach to another using Selenium without much effort. 

Well I can also give some tips as follows for selecting the language for test automation.

♦ The community for the specific programming language of your automation framework. ie. if you use selenium webdriver, Language support of JAVA is %68, JS %15, Python %11, %5 Ruby, %1 C# [Reference: Dave Haeffner’s SauceLabs Event Presentation].

♦ You should check which version is stable and get the updates first. For selenium, I think the JAVA bindings are getting updated at first.

♦ You should check the availability of the language support in StackOverflow.

♦ Visual Test Automation support.

♦ You should consider your competency of Programming Language which will be used in automation project.

♦ You should consider Test Runner frameworks and their capabilities such as JUnit, TestNG, NUnit, MBUnit, etc.

♦ You should consider how you can run your tests in parallel without any pain.

♦ You should consider your product/organisation programming language. In this way, you will get help from developers. If they write unit tests, that will be great! :slight_smile:

♦ Also consider the API Testing libraries of that programming language.

♦ Now-a-days BDD is a much used concept and hence the BDD support of that language should be considered.

♦ I personally feel that if you have never programmed before, it would be best to start by using a script-friendly language like Python or Ruby. Using a scripting language allows you to learn to write Selenium tests with the least amount of code in the shortest amount of time.

My final answer/recommendation:

So, to recap: What language should you use to learn Selenium?

The answer is that there is no such specific answer — but I really hope this article would help you narrow down, which language is right for your personal situation.

And may be you should consider many more items to select a programming language for test automation. If you have any feedback, please share with me in the comment section below.

Happy Testing!


Tuesday, September 26, 2017

How to integrate Jenkins and Gitlab

- No comments

Hey folks, hope you are doing good! It has been a while since I wrote a post here. So today let us discuss how to integrate Jenkins and Gitlab.

As you may know, Jenkins is a widely used Continuous Integration (CI) tool now-a-days and Gitlab is the leading integrated product for the entire software development lifecycle. Even though we have CI feature within the Gitlab, many prefer to use Jenkins along with Gitlab since it's more extendable with a lot more features and simple user interface.

Requirements for Gitlab – Jenkins Integration

  • Jenkins GitLab Plugin
    Build trigger that allows GitLab to trigger Jenkins builds when code is pushed or a merge request is created.
  • Jenkins Git Plugin
    This plugin allows use of Git as a build SCM, including repository browsers for several providers.
First, we must create a user that Jenkins will use to interact via the GitLab API. You should set this user as global admin or add as a member to related Group/Project. In order to report build status, developer permission required.

First open GitLab and go to Profile Settings

Then, click “Access Token” and create a Jenkins API Token.

 Then, save and copy this API Token. Let’s go on with Configure the Jenkins Server.

Configure the Jenkins Server

Go to Jenkins and install Jenkins GitLab Plugin and Jenkins Git Plugin.

Go to Manage Jenkins -> Configure System and scroll down to the ‘GitLab‘ section.

Write a custom connection name, enter the GitLab server URL in the ‘GitLab host URL‘ field and click Add -> Jenkins button.

Then, fill required fields as shown below with the Jenkins Access API Token which we created in GitLab before.

 Then, select this API Token credential and finally click “Test” and see the “Success” message.

Create and Configure a Jenkins Job

Create a new job on Jenkins and then click “Configure”.

Give a project name, Click “Discard old builds” checkbox and write “3” for “Max # of builds to keep“. It only keeps last 3 builds and saves disk space.

For “GitLab connection” field, select predefined connection which is done with GitLab plugin above.

For “Gitlab Repository Name” write “<group name>/<repository name>“. You can see this on GitLab projects page.

Then go to Credentials –> System –> “Add domain” and click “Add credentials” as shown below,

Then, add your GitLab username and password as shown below and click OK.

After that, select “Git” as Source Code Management system. Fill “Repository URL“, Select Credentials which is added above, set branch, select repository browser as gitlab, and write your project URL and GitLab version as shown below.

Build Triggers

For build trigger section you can do below settings for changes going in to GitLab.

And at last, we should add “Publish build status to GitLab commit” in the post build step to enable the feedback. It provides us notifications in GitLab.

 For WebHooks go to your Project in GitLab and click settings icon and click “WebHooks

Then add a WebHook. In the webhook you need to enter the build url and you may also need to generate a key in jenkins and paste it in the webhook. Finally  if you click the 'Test' button, you should see “HTTP 200” response if it's working.

When test executed, you should see below message.

We have done the all settings! If you push a commit to the GitLab repository, you will see the Jenkins job start running and when the job finishes, you will see the status next to the commit in GitLab.


  • You can also try using SSH Key Pairs. For that please check instructions here and you may also check this awesome article.

Friday, June 16, 2017

If you think you are too late to accomplish something in your life, just go through these.

- No comments
Recently I came-across a very interesting post in my LinkedIn feed and I couldn't stop myself to share that post in my blog as well.

I always had a thought in my mind,

Everyone have something to do in their life and if you find that something, then it will bring you everything.

This is something which I have phrased, so that I could always say this to me, mostly at the times when I am completely down. :)

Those born to become businessmen will do that at any age. These graphics by Anna Vital show us how important it is to always keep being yourself and work hard on your ideas, despite the stuff you're busy with now and the number of years estimating on figures in your passport.

Infographics of insppirational stories

How to start a startup

31 ways to be creative

how angry birds started

how airbnb started

how instagram started

how pinterest started

how to succeed in a startup

I am sure you are motivated enough! Now go and find that something which could bring everything in your life. :)

Feel free to drop your words below. :)