HOME | CONTACT | QUICK JOIN | SITEMAP
About
Join
Members
Conference
Newsletter
Awards
Board

Newsletter

SIGDOC Newsletter
June 2005 :: Volume 6, Number 2


Our members | Looking Ahead | Interesting Items | Features | Job Market

Features

An Introduction to Documentation Testing
By Rob Pierce
robertp@us.ibm.com

When developing software or developing technical documentation, it is imperative to verify the accuracy and completeness of what you are planning to deliver. Testing is a fundamental best practice in software development. And, while testing your software is imperative, the best of quality assurance intentions will fail if the following variables are not accounted for in advance of any actual testing effort:

  • Planning
  • Designing
  • Scheduling
  • Staffing

A lack of time, resources, or formal test cases planned to be followed can lead to application instability, late system delivery, or a higher number of defects delivered to end users and customers. For the information developer, a lack of formal testing may result in similar errors and issues with a Help system or context sensitive Help within an application.

Typically, the last phase in the software development cycle is testing, and this phase in the development cycle is the most commonly shortened or neglected phase.

back to top

Testing starts with a test plan. In addition to establishing the resource and scheduling variables for the testing effort, a test plan should identify the scope and level of granularity of what will be tested. The first step is to identify the types of tests to plan for and follow. For example, the primary types of tests to plan for include:

  • Unit tests
    A unit test is the smallest piece of software that can be compiled and tested. For a programming language, a unit might be one method or one class in an application programming interface (API). Each unit is typically the smallest level of component in a complete system. Each unit test can be run in isolation from the context of the entire system. For an information development project or deliverable, one topic file might comprise a unit test. The content would be validated for completeness and accuracy. Another example is to test a fix to a given topic file to resolve a change request (also known as a documentation defect) that needs to be validated before the change request is closed.
  • Functional tests
    A functional test applies to a specific function or use case for an application. Functional tests check for correct behavior of a collection of components that comprise one function or use case. For example, testing the functionality to generate a report or create a query would be examples of functional tests.
    For an information development project or deliverable, a documented use case to be followed would be a functional test. The use case, or procedure, would be followed for completeness and accuracy. For example, following a procedure to generate a report or create a query would be examples of functional tests.
    A component might be a chapter of a book, or a section of a Help system. Or, it might be one complete installation procedure for a product. A component test might be to review a new section or to follow a procedure to verify completeness and accuracy. Other examples of testing documentation components might be to ensure that new content is correctly integrated into an existing deliverable or to validate that information is available through a keyword search or index entry.
  • System tests
    Testing of complete scenarios that span multiple components of an application. System tests can only be run on a complete system. For an information development project or deliverable, a complete Help system being tested for correct links, search capabilities, and indexing, is an example of a system test for an information development project or deliverable. Another example would be to check a use case plus all links to related information of other topic types. For example, test a use case and validate that all of the references or links to additional information such as conceptual and reference topics are all correct.
  • Performance tests
    Performance tests are a form of system tests that determine if performance requirements are met. Performance has a significant effect on user perceptions of a product. Slow performance degrades the usability of a product.
    Performance tests for an information development deliverable would test the time for a Help system to launch or the time for a search result to display. For example, if a Help system displays 90 seconds after it is invoked on a commonly used browser, then a performance issue would be identified and need to be corrected.

back to top

As the examples illustrate, testing software and documentation need not be separated. In fact, testing them together may accelerate testing efforts, since good documentation can assist the quality engineers to understand the context and follow the procedures to testing the software.

For example, to complete a functional test for a complex installation of a product, if documentation is available that describes the procedure, then the tester can try following the documentation to both validate that the use case (installing the product) documentation as well as the actual function (that the product correctly installs if you follow the correct procedure).

Each test can be viewed as a component of a whole test plan just as each portion of the software or information can be viewed as a component to the whole deliverable. As such, each test can be viewed as a test case. A test plan contains test cases. And each test case would be one of the described test types.

To summarize, testing includes:

  • test plans, that outline high-level areas of coverage and non-coverage for features and components.
  • test schedules, that list timeframes and assignments.
  • test cases, that provide details of input and expected output, including history of execution, failures, and configurations.
  • Defects, submitted by testers for results of tests that fail, tracked in a defect or change management database.
  • test status or metrics, that provide details of how much has been accomplished, and how much is remaining as well as a list of any issues of concern.

back to top

Quality engineering groups follow test plans that include a set of agreed-upon use cases to test functionality.

In addition to quality engineering tests are usability tests. Usability testing may be viewed as complementary or distinct from functional, system, and performance testing, depending on the product or organization.

A use case might be contained in one component, Help topic, or procedure, or it might span multiple topics, procedures or components, especially if the use case involves an integration between different products. Since use cases presumably follow more closely how a product will be used by customers, use case testing is likely the most critical and valuable to follow to ensure that documentation is accurate, complete, and can be optimally retrieved. However, because use case testing requires the most time and lack of automation, it requires the most resources in terms of staffing.

Information developers and documentation deliverables can help software development use-case testing if use cases are documented and testers can follow the documentation to validate the use case. In this manner, the documentation can also be validated in the process of testing use cases. For example, if a new Java method is documented and the new information is integrated into a given component, or documented class, along with appropriate index entries using terms common to customers or other users, then complete testing will include:

  • validating that the method is correctly documented
  • checking to verify that the new content is placed in the correct context and can be easily located
  • ensuring that a provided code example not only compiles but works to provide a solution for a specified use case, if applicable.

If a software development functional test is planned for a given use case that requires the use of the newly documented method, then a tester may indirectly complete the information development testing in the process of validating the actual use case.

Another example is having a test engineer install a product and being required to follow the documentation explicitly. This can help identify issues or areas for improvement. In many organizations this type of testing is a requirement before documents are approved for distribution.

Perhaps designing test plans that capture both aspects of a product – its functionality and its documentation – in one comprehensive set of test cases, ensures the most usable of all deliverables.

back to top