What You Might Not Understand About Software Testing

fork_in_the_road_2

As you build out your project, one of the decisions you’ll make every day is what kind of testing you should do, and how much of it there should be. You might think “That’s a question best answered by the development team”, but the potential impact on your business of getting this wrong can be massive. You need to understand the ramifications of the decision about both the kinds and amount of testing you’ll do, especially in the early going.

In this article, we’re going to look at the different kinds of tests that occur in a typical software project. In the following articles we’ll explore the benefits and drawbacks of each kind of testing.

An Introduction to Testing Methodologies

There are two different testing methodologies: Automated and manual.

  • Manual testing – Manual testing is what has historically been done by QA (Quality Assurance) people. It can also be done by anyone at your company, by the developers themselves, or even by a 3rd party service such as UTest. In manual testing, the application is tested typically like your users will be using the product. Screens are navigated, buttons are clicked, and results are verified manually. Often times this process is governed by a Test Plan. It’s not uncommon for manual testers to have tools that script some of the test plan to save them time and effort.
  • Automated testing – When I refer to automated testing, I refer to the tests that developers write as they are building the product. It might seem odd, but automated tests are actually code your developers write that tests the actual application code. It’s code that tests other code. How neat! As your developers create tests, those tests are then executed before new code is checked in to ensure that the changes being committed to your source code don’t break something that was already working.

Types of Manual Tests

There are two types of manual tests: Scripted and exploratory

  • Scripted tests – If your project has a QA team or if you have people in your organization dedicated to testing the application, they should be working from a Test Plan.  You can see a very simple example of a test plan here. For more detailed examples you can search “software test plan templates” and look at many different options.  The key for scripted testing is that you follow the test plan every time, and record the results every time. This provides continuity from release to release. Of course, along the way you’ll discover new things you should test and those will be added to the test plan over time.
  • Exploratory testing – This could also be called ad-hoc testing, and is just what it sounds like. As you’re using the app, you are testing as you go. If you’re a small company, I’d recommend that you put together a group of early users who are willing to help you out with exploratory testing. Drop a few of your friends a note and say “Hey, would you (download or login to) the app and use it like you think you should, and let us know what you find?”  There is no script to follow.

Types of Automated Tests

There are two types of automated tests that we care about: Unit and integration

  • Unit test – A unit test is a type of automated test that is meant to test a specific piece of code in isolation from the rest of the application. For example, we might have a unit test that tests only how we encrypt the user’s password. We want to make sure that this works the way we’re expecting, regardless of how it might actually be used in the application. By testing at this very granular level, we can ensure stability of the smallest sections of our application, and feel confident that we can put them together as building blocks for our application.
  • Integration test – An integration test will test a complete path through the application. To continue with our example from above, an integration test might test the entire process of creating a user from the form submission all the way down to verifying data in the database. An integration test is meant to test a particular function of the application from beginning to end, rather than just a small piece as is the case in a unit test.

Just Remember

  • There are two kinds of tests: Manual and automated
  • Manual testing consists of both scripted and exploratory testing
  • Automated testing consists of both unit and integration tests
  • Each kind of test has a place in your overall test plan

Your Assignment

Meet with your development team and talk about the kinds of tests that you’re currently performing for your product. Have them walk you through all of the various test plans that are currently in place. Here are some questions to start your discussion:

  • What kinds of testing are we doing today?
  • Can you show me the current test plan for all manual testing?
  • How do you think about testing? What’s the right mix of automated and manual?
  • Do we have a set of beta users we can ask to test our application before we send it out to everyone?
  • What are we using to track bugs discovered during testing?

In our next article, we’re going to explore in depth how automated testing works and why the business should care about software testing.