Blog

Here's what's on the minds of our marketing and technology experts.

For more perspectives from Sundog, check out Sundog: The Podcast and our knowledge.

RSS Icon Subscribe to blog feed What's this?

Paul Bourdeaux
.(JavaScript must be enabled to view this email address)
Senior Software Engineer

Presents insights, trends and recommendations for using mobile technologies.

More posts by this author

Full Post

Ad Hoc and Unit and Integration… Oh My!  Exploring The Many Kinds Of Testing

Software testing has grown incredibly quickly and largely unchecked in the past two decades. With so many terms and strategies being thrown around, the terms can be confusing. Automated Unit Testing, Integration Testing, Ad Hoc Testing, QA Testing, User Accepted Testing… What do they all mean? Here is a quick definition list to help sort it out:

Automated Testing
An automated test is one that is carried out by some kind of script or software. The key to automated testing is the ability for the testing engine to run the tests and report test failures without need for manual intervention. As Brenden Wright from TopCoder, Inc put it, “The primary advantage of automating tests is that there is only a one time cost ... and each execution of the test thereafter is ‘free’.”
Continuous Integration Testing
Continuous Integration is a widely used software engineering practice, and testing is a key part of it. Basically, with continuous integration, the software is built every time a new change is committed to the repository, and once the code is built, all the tests should be run to confirm that it behaves as the developers expect it to behave. Continuous Integration Testing is one of the most common uses of Automated Testing.
Manual Testing
With Manual Testing, a person carries out each test case. Most Quality Assurance Testing or User Acceptance Testing is carried out as manual tests.
Unit Testing
Unit Testing is a test produced by the developer that uses code to verify the way a method or function works. JUnit or NUnit are by far the most common unit testing frameworks in place today, although there are others. Two development strategies involving Unit Tests are Test Driven Development (TDD) and Data Driven Testing (DDT). TDD focuses on writing the tests first, and then writing the code to satisfy the tests. DDT tends to be employed when the software is already created and bugs are discovered. In this case the tests are developed to recreate the bug and then verify when it is fixed. (So DDT is used to kill bugs - how fitting…)
Integration Testing
While Unit Testing focuses on the individual units or methods of software, Integration Testing does the opposite. It tests how all the various components of the software interact with each other. These tests tend to look at more of the overall system functionality.
Performance Testing
Performance Tests look at system performance in a production environment. Load testing is a good example of a performance test, where system performance is measured under both normal and worst case scenario loads.
Ad Hoc Testing
Any test, usually manual, not previously identified in the test plan.
Quality Assurance Testing
Wikipedia states it nicely - “Quality assurance, or QA for short, refers to planned and systematic production processes that provide confidence in a product’s suitability for its intended purpose.” QA looks at completed code and tests it according to a predetermined testing plan which was drawn up against the initial system requirements. QA is purposefully separate from the development team because it allows them a fresh perspective on the application. Engineers are normally intimately familiar with the code they write, and because of this have already predetermined in their minds the “correct” sequence of events needed to perform some function. This predisposition often makes it hard for the developing engineers to spot problems that may occur outside this sequence.
User Acceptance Testing
This is one of the final testing stages of a piece of software, and like the name implies, is carried out by the end user. Before a client accepts a piece of code, they should thoroughly test and approve all affected parts of the system. Think of it as test driving a car before you buy it. You want to make sure that it is dent free, or at least be aware of any nicks and dents before you drive it off the lot!

I am sure that there are more out there. If you think of any that you think should be included in this list, please add them as a comment!

Don't miss any posts! Subscribe to our blog feed or only posts by Paul Bourdeaux.

Short URL: http://sundoginteractive.com/e/3460

Comments

Be the first to comment!

Leave A Comment

Please help us stop spam by typing the word you see in the image below:

Contact Us

Fill out and send the form below to learn about our refreshing approach to measureable marketing, or call 1.888.9.sundog.

     
Follow us on:
Twitter
Facebook
Flickr
Google+