Shift Left Testing?

apps1_0415 When I first heard this topic, I was like what the heck is this testing type. Later i figured out that this is not a testing type, but a practice with regards to the time period that the testing activities can be carried out, where we can simply define the shift Left testing as taking the testing activities in to the early phases in the Software Development Life Cycle.

We need to take our testing in to early phases, why, because it’s a well-known fact that defect introducing percentage is higher in the early stages than the latter phases.


Main purposes of using the shift left testing is to:

  • Increase the quality of the softwareblog-sqs-chart
  •  Minimize the test cycle duration
  • Prevent critical defect identification only at the end of the development life cycle, because it will be more expensive to fix the defects which have only been identified at the end.


As i red in the Wikipedia, there are four basic ways to do shift left testing, which are state as follow.

  • Traditional Shift Left Testing

As in the following figure, Traditional Shift Left Testing mainly concentrate on unit Testing and the integration testing rather focus on Acceptance and System Level testing, Which indicates that the testing is lower down on the right hand side of the V model. Simply it has moved in to the left hand side of the V.


  • Incremental Shift Left Testing

In the Incremental Shift Left testing, each part of the single waterfall V model testing activities are shifted left as small number of increments allocating the short time duration. Red arrows in the following figure is indicating this.


  • Agile/DevOps Shift Left Testing

Agile/DevOps shift Left Testing may contains one or more small number of  Vs as in the above two testing.


  • Model-Based Shift Left Testing

Model Based testing result in to immediate testing without waiting  long time as in traditional model or a time period as in incremental model or at least a short time as in Agile/DevOps since this type of testing moves the QA activities directly to the left hand sisde of the V



According to the IBM, ” The term Shift Left refers to a practice in software development where teams focus on quality, work on prevention instead of detection, and begin testing earlier than ever before.”

Disclaimer:  All the figures i used to illustrate the topic, have been downloaded from the internet.




Writing the same test step over and over again? Try Shared Steps in MTM

Writing down effective test cases are very important as it has a huge impact on the test execution phase.

Have you ever written same test steps over and over again in multiple test cases? If you use MTM, it facilitates you to create common test steps in one place which is called, shared steps.  This will save your time. Another important this of shared steps is, if the requirement of a common feature has changed, you will only have to change in one test case, rather changing each and every identical test through the test plan.

How to create shared steps in MTM?

I will use few of Facebook functionalities to explain this.

Let’s assume we will have to test the edit profile and change password functionalities of Facebook. To test these two functionalities, we have to log in to the Facebook first. As we have now identified the login functionality as a common test, we can create a single test case for login and use it as a shared step.

Open up a new test case form and write down the login test steps. Figure 1

1Figure 1

Select login steps(row selection), which you need to share as shared steps. Figure 2

2Figure 2

Click on the highlighted icon in the Figure 2. This action will prompt you a window to name the shared steps. Figure 3

3Figure 3

Name the shared steps and click ‘OK’ to save the shared step. Figure 4

4Figure 4

Once it would get saved, Shared steps will show as in Figure 5

5Figure 5

How to insert an already existing shared step to a test case, in MTM?

As If the login functionality has already created as a shared test, you can insert it in to required test cases.

Open up a new test case form and click on the insert shared steps as highlighted in Figure 6

6Figure 6

It will give you a window to query the shared step. Figure 7

7Figure 7

You may run a query to filter the shared step as in Figure 8

8Figure 8

Select the relevant shared step and click on the Add Shared step button as in the Figure 9

9Figure 9

Once it would get inserted, Shared steps will show as in Figure 10

10Figure 10


As I explained above, MTM Shared steps will help you to minimize the time taken to create common test steps of a project.

How to create a parameterized test case in Microsoft Test Manager

Parameterized test cases save your time and effort on testing the same functionality with different test data.

Let me take a simple example to explain this. Assume you have to test the ‘cutting’ functionality of a knife on three different ingredients. First thing it will come to your mind is that there will have to have three test cases to test the primary functionality of it. But no, you can cover all three in one test case if you use parameter values in TMT.

Create a test case with parameter values

To insert parameter values you can user the highlighted option as in Figure 1


Figure 1

Once you insert a parameter, it will appear a table to specify required parameter values as in the Figure 2


Figure 2

Once you define parameter values and save the test case, you can start test case execution for the created parameterized test case.


Figure 3

Run parameterized test case

When you start executing the test case it will show you iterations as in Figure 4.


Figure 4

By clicking on the ‘Next’ button next to the iteration, you can proceed to the next iteration.


Figure 5

If at least one iteration is failed the whole test case would get saved as failed. Figure 6


Figure 6

You can also use multiple parameters in the same test case.

This way MTM will minimize your time and the effort need in creating test cases.

Start testing with Microsoft Test Manager (MTM)

Microsoft Test Manager is a extension of Team Foundation server (TFS) and Visual Studio. TMT helps you to create, execute and track test cases and defects. All team members can be accessed these work items.

Quick guide to start manual testing in MTM

  1. Connect to the team project

Once you open up the MTM for the first time, it will prompt you to enter the team Foundation Server. Once you proceed with this step you will be given a window to connect to the team project. All the projects you have access, will be listed down for you. Select the appropriate team project and click on the ‘connect’. Once this action is successful it will display the Testing Center.

  1. Create the test plan

You can either select an existing test plan or create a new test plan from the Testing Center window.

1  Figure 1

To add a new Test Plan – you may simply click on the Add button. Once you click the Add button it will give you the following window to add a new test plan.


          Figure 2

Once you create the test plan, it will be added to the list. You may select the created test plan and select the ‘Select Plan’ button. Content available for the selected plan would be displayed.

  1. Add details to the created properties

Once you navigate to the properties tab you can set more details to the test plan

Figure 3

  1. Add Test Suite – Static/Dynamic

To Add test suites, navigate back to Contents, if you are in the properties tab


Figure 4

4.1 Create a static test suite:

Hover over on the ‘New’ button


Figure 5

Select Suite from the drop down menu – This action will create a test suite for you. You can give an appropriate name for the test suite

4.2 Create a Dynamic test suite or add requirements to the test plan:

Hover over on the ‘New’ button


Figure 6

Select Query-based suite from the drop down menu – This will redirect you to a window where you can query the requirement or the user story by ID or the name.


Figure 7

You can query the relevant user story and add it to the test plan


Figure 8

Note: You can add requirement based test suite using the ‘Add requirements’ option also.

  1. Add Manual Test cases

Select the test suite, and click on the new button as in the figure 9


Figure 9

Following form will be given to create a new test case


Figure 10

  1. Run Test cases and report bugs if have any

To run the test you should be navigated to the Test tab, as in the figure 11


Figure 11

Select the test case and click on the Run button as in the figure 12


Figure 12

It will give you following window and you can start test case execution.


Figure 13

If the test case if fail, you can simply add a bug from this window itself by clicking on the icon highlighted in the figure 14


Figure 14

  1. Track Progress of the testing

7.1 Track the progress of a test suite:

  • Select the test suite
  • Hover over the progress bar – progress of test execution would be shown in a tool tip, as in the figure 15


Figure 15

7.2 Track Progress of the Test Plan

  • Go to Plan -> Results
  • This will give you an overall picture of the test plan. Figure 16


Figure 16

You don’t have to spend time on creating separate reports for test execution progress. You can simply refer these charts which will make your life easier.

Performance testing | Load testing | Stress testing – Part 1

These three types can be bit confusing to differentiate since they all sounds similar. But each term has its own definition.

Performance testing, load testing and stress testing are different activities are done based on different purposes, but these can be performed using the same tools.

Performance testing performs to evaluate the performance of the system under a given situation. This type of testing is not to find defects in the system. Through the performance testing we can determine the speed or the effectiveness of a software application, network, computer or a device. Attribute of performance testing are: Speed, Scalability, Stability and reliability. The main objective of conducting the performance test is to establish the benchmark behavior of the system.  Importantly, Industry specified benchmarks should be met as the output of the performed performance test.

Ex: Application network performance on Connection Speed vs. Latency chart. (Latency is the time difference between the data to reach from source to destination)

Performance testing tools:

  • Jmeter
  • Load Runner
  • Web Load
  • Open STA

Load testing is a type of a performance test which is done by constantly increasing the load on the system until it reaches its threshold limit. This technique used to examine the behavior of a system with regards to the expected and exceeding expected load conditions. Basically this has designed to test the non-functional requirements of a system. Purpose of the load test is to allocate maximum possible workload that could handle by the system in order to test its tolerance level. There can be situations that the system is fed with empty load to evaluate the behavior of the system for zero load. Load test is also known as ‘Volume testing’ and ‘Endurance testing’.

Ex: Testing an email server to handle email traffic

Stress testing is again a type of a performance testing which refers to the testing of software or hardware to determine whether its performance is satisfactory under any extreme and unfavorable conditions. It is performed to find the upper limit capacity of the system and also to determine how the system performs if the current load goes well above the expected maximum.

Testing the performance of a system is important as it gives an output to the client in terms of the quality of the application or it provides high level of confidence to stakeholders.

Testing in a nutshell

What is Testing?

Regardless of the competency level of developers, all software likely to have errors or bugs. The process of finding bugs and report back to the team in a detailed manner is the main tasks of the ‘bug hunters’ or testers.

Why Testing?

Humans make mistakes!! Some may be unimportant but some of them are expensive. So simply we need to check everything we produce because anything can go wrong anytime.

Ideally testing should be done by someone else because finding your faults on your own is not possible all the time!!! So Testing is very important. That’s why testers are here!!!

There are lot of reasons behind software testing. Here are some of important points among those:

  • To ensure that what we create does what it’s supposed to do
  • Something that works when one person is using may not work when hundreds of people are using it
  • There are lots of different devices, browsers and operating systems out there
  • We owe it to our users and ourselves to deliver the best application we can
  • It’s important to keep ourselves inside the business.

Main activities of the fundamental test process

  • Test  planning and control
  • Test analysis and design
  • Test Implementation and execution
  • Evaluation exit criteria and reporting
  • Test closure activities

Test Levels

  • Component Testing
  • Integration Testing
  • System Testing
  • Acceptance Testing

Test Types

  • Functional Testing
  • Non Functional Testing
  • Structural Testing
  • Re-Testing and Regression Testing

While developers concentrate on ‘how to make’ the application, testers would mainly focus on ‘how to  break’ the implemented piece of software. Sometimes what testers pointing as a defect would called as a new feature by developers. That is why people say developers and testers are in the never ending war

Main job of a tester is to be a critic, to find out where the developer went wrong.  So are they really haters? No, they aren’t, because both developers and testers are working towards the same goal -> Success of the Project!!!