What is Test Driven Development (TDD)?






What is the origin of Test Driven Development?


What are the steps for Test Driven Development?

Here are the basis steps for TDD:

  1. Write a new test
  2. Check and make sure the test fails
  3. Write code to pass the test
  4. Verify the test passes
  5. Refactor code to make it more efficient
  6. Repeat steps again

What is the purpose of Test Driven Development?


What is Agile Test Driven Development?


Who is responsible for Test Driven Development?


What are the benefits of Test Driven Development?

  2. Allows developers to capture defects much sooner in the lifecycle
  3. Software is better designed and results in more maintainable code
  5. Less time is spending on debugging code
  6. Helps with code refactoring
  7. Eliminates a significant number of defects
  8. Often results in projects getting completed faster than original timelines

What are the pitfalls of Test Driven Development?

Here are some common pitfalls of TDD:

  1. Forgetting to run the tests
  2. Writing too many tests
  3. Writing tests that are too large
  4. Writing tests that are too simple
  5. Writing tests that are too complicated

Test Driven Development Skill Levels

There are different skill levels for TDD which include:

  • Beginner
    • Someone who can write a unit test prior to code creation
  • Intermediate
    • Someone who can factor reusable elements
  • Expert
    • someone who can create a test driven development roadmap


What is Behavior Driven Development (BDD) Testing?


What is BDD?


BDD Testing


Three Best Practices of BDD


BDD Framework Process


  1. Create a user story with high level functionality
  3. Define business scenario using Gerkin
  4. Automate the scenario using Cucumber
  5. Write code so that the test scenario will pass
  6. Run additional tests including regression, performance, etc.
  7. Release code into production





7 Great Reasons to Write Detailed Test Cases




Here are 7 Great Reasons to Write Detailed Test Cases



Learn How AI is Transforming Software Testing

AI in software testingThere is no doubt that AI is Transforming Software Testing.   Over the years you can see how software testing has transformed from manual testing into automated testing.   It now has reached another milestone and is further transforming with the advent of AI.  There are many tools today which have started incorporating AI in order to provide a high level of quality.   As a software quality engineer, it is important to understand those changes and be able to evolve with the technology.   If you haven’t done that yet, don’t worry since the technology is currently in a fairly infant state.

Here are several ways that AI is Transforming Software Testing

  • AI will transform manual testing.   Manual testing is very time consuming and expensive.   AI will enable the creation of manual tests and be able to accelerate the testing timeline by running those scripts automatically.
  • AI will enable testing teams to cover more scenarios and cases.   This will identify more defects due to the increased amount of coverage across the application.
  • AI will eliminate the need for assumptions.   Software testers make a lot of assumptions when they are building and executing test cases.
  • AI will help in using predictive analytics to predict customer needs.   By identifying those needs this will result in a much better customer experience and customer satisfaction will greatly increase.
  • AI enables visual validation.   This validation will identify more defects that traditional software testing methods.
  • AI will help find software bugs much faster and find more of them.
  • There are several tools that incorporate AI/Machine Learning to speed up the development and maintenance of automated tests.   One of those companies is Testim.   Maintaining automated test cases can be very expensive and time consuming.   Reducing the amount of maintenance will allow test automation engineers to focus on new automated tests and that will add a higher degree of quality to your applications.
  • There are some AI tools that will complement existing tools that are on the market today.  One of those tools is Test.ai.  Test.ai leverages a simple Cucumber like syntax, so it greatly simplifies the development of automated scripts.
  • Some tools do all the testing for you.  I know that is hard to believe and I admit I am also a bit skeptical.  ReTest helps to eliminate the need to be able to have programming skills.   It leverages AI to fully test applications.

AI will create opportunities for software testers to move into new roles.   Some of those roles will include:

AI QA Strategy:   This role will use the knowledge gained within AI to understand how this technology can be applied to software testing.

AI Test Engineer:   This role will combine software testing expertise along with experience in AI to develop and execute testing activities.

AI Test Data Engineer:   this role will combine software testing expertise along with AI in order to understand data and leverage predictive analytics to verify information.

I strongly believe that software testing will continue to be a prominent role within IT organizations.   I do believe it will evolve and continue to evolve.  This will require additional training on technologies such as AI in order to keep up with technical evolution.  AI is a brand new technology, so it will require time and resources will need to be trained on how to use the technology effectively.


Creating Predictive Analytics for Quality Engineering

predictive analytics Creating Predictive Analytics for Quality Engineering


Here are a few reasons why software testing has evolved:


Quality is required. 

Speed is required. 

Resources and time is limited. 

Decisions must be made. 

Software must be deployed to production.   


Sprint Velocity

Planned/Executed test cases

Manual vs Automated tests


Root Cause Analysis

Defect Leakage





  • Type of defect
  • What phase was the defect identified
  • What is the root cause of the issue
  • Is the defect reproducible?




Test Planning: Ensuring Efficient Test Coverage

Test CoverageTest Planning requires careful consideration and it takes time to do it right in order to ensure proper test coverage. Test organizations that don’t perform proper test planning often rush to test execution with little to no regard to proper test coverage. The result often has devastating results and has significant long term impacts. Lets review some issue which will occur as a result of poor planning.


  • Insufficient Test Coverage: Rushing to test execution without proper test planning will result in insufficient test coverage
  • Too many Test Cases: Lack of planning will result in testers creating large amounts of test cases and duplication of testing.
  • Large Regression Suites: Testers will take the test cases and move all of them into a regression suite and it will result in requiring extra time to run the test cases which have been duplicated
  • Redundant Automation Scripts:  If the regression suites above are automated, it will result in a maintenance nightmare for the automation team which will require additional time and money to resolve.

Proper test coverage requires significant test planning time.  The more time spent in test planning will result in more efficient and reduced test execution time.  In general if you spend 3 to 4 times more in planning that test execution, you will have a meaningful result during test execution.   With the emphasis on Agile and Waterfall methodologies becoming more efficient, it is more important now than ever for testers to really think how something should be tested and have great test cases.   I prefer my teams have less test cases that are more efficient versus having many test cases that result in duplicate validation.  Testers often start out by thinking the more test cases that are created and executed the better testers they are versus their peers.  This is simply not true.  Efficient test coverage helps everyone and it reduces the amount of time that is spent testing.   With teams becoming more product focused, it is important to test the product you are working on and have other teams validate their products.

I hope this information has been helpful in understanding how to have efficient test coverage.