background preloader

Process

Facebook Twitter

Computer bug. The results of bugs may be extremely serious. Bugs in the code controlling the Therac-25 radiation therapy machine were directly responsible for some patient deaths in the 1980s. In 1996, the European Space Agency's US$1 billion prototype Ariane 5 rocket had to be destroyed less than a minute after launch, due to a bug in the on-board guidance computer program. In June 1994, a Royal Air Force Chinook crashed into the Mull of Kintyre, killing 29.

This was initially dismissed as pilot error, but an investigation by Computer Weekly uncovered sufficient evidence to convince a House of Lords inquiry that it may have been caused by a software bug in the aircraft's engine control computer.[1] Etymology[edit] Use of the term "bug" to describe inexplicable defects has been a part of engineering jargon for many decades and predates computers and computer software; it may have originally been used in hardware engineering to describe mechanical malfunctions. How bugs get into software[edit] [edit] Test engineer. A hardware test engineer is a professional who determines how to create a process that would test a particular product in manufacturing, quality assurance or related area like RMA department, in order to assure that the product meets applicable specifications. Test engineers are also responsible for determining the best way a test can be performed in order to achieve 100% test coverage of all components using different test processes.

Early project involvement from design phase[edit] Ideally, a test engineer's involvement with a product begins with the very early stages of the design phase. Depending on the culture of the firm, the early stages could refer to Product Requirements Document (PRD) and Marketing Requirements Document (MRD)—some of the earliest work done during a new product introduction (NPI). By working with or as part of the NPI group, a test engineer ensures that a product is designed for both testability and manufacturability.

Yield gathering[edit] Test automation[edit] Test case. Formal test cases[edit] In order to fully test that all the requirements of an application are met, there must be at least two test cases for each requirement: one positive test and one negative test. If a requirement has sub-requirements, each sub-requirement must have at least two test cases. Keeping track of the link between the requirement and the test is frequently done using a traceability matrix. Written test cases should include a description of the functionality to be tested, and the preparation required to ensure that the test can be conducted. A formal written test-case is characterized by a known input and by an expected output, which is worked out before the test is executed.

The known input should test a precondition and the expected output should test a postcondition. Informal test cases[edit] For applications or systems without formal requirements, test cases can be written based on the accepted normal operation of programs of a similar class. Test suites often also contain. Test suite. In software development, a test suite, less commonly known as a validation suite, is a collection of test cases that are intended to be used to test a software program to show that it has some specified set of behaviours.

A test suite often contains detailed instructions or goals for each collection of test cases and information on the system configuration to be used during testing. A group of test cases may also contain prerequisite states or steps, and descriptions of the following tests. Collections of test cases are sometimes incorrectly termed a test plan, a test script, or even a test scenario. Types[edit] A test suite for a primality testing subroutine might consist of a list of numbers and their primality (prime or composite), along with a testing subroutine. See also[edit] References[edit] Test plan. A test plan is a document detailing a systematic approach to testing a system such as a machine or software. The plan typically contains a detailed understanding of the eventual workflow. Test plans[edit] A test plan documents the strategy that will be used to verify and ensure that a product or system meets its design specifications and other requirements.

A test plan is usually prepared by or with significant input from test engineers. Depending on the product and the responsibility of the organization to which the test plan applies, a test plan may include a strategy for one or more of the following: A complex system may have a high level test plan to address the overall requirements and supporting test plans to address the design details of subsystems and components. Test plan document formats can be as varied as the products and organizations to which they apply. Test coverage[edit] Test methods[edit] Test methods in the test plan state how test coverage will be implemented.

Test script. A test script in software testing is a set of instructions that will be performed on the system under test to test that the system functions as expected. There are various means for executing test scripts. These last two types are also done in manual testing. Automated testing is advantageous for a number of reasons: tests may be executed continuously without the need for human intervention, they are easily repeatable, and often faster. Automated tests are useful in situations where the test is to be executed several times, for example as part of regression testing. Automated tests can be disadvantageous when poorly written, leading to incorrect testing or broken tests being carried out. Disadvantages of automated testing are that automated tests can — like any piece of software — be poorly written or simply break during playback.