Saturday, June 30, 2007

Software testing

Software testing is the process used to help identify the correctness completeness security and quality of developed computer software. Testing is a process of technical investigation performed on behalf of stakeholders that is intended to reveal quality-related information about the product with respect to the context in which it is intended to operate. This includes but is not limited to, the process of executing a program or application with the intent of finding errors. Quality is not an absolute it is value to some person. With that in mind testing can never completely establish the correctness of arbitrary computer software testing furnishes a criticism or comparison that compares the state and behaviour of the product against a specification. An important point is that software testing should be distinguished from the separate discipline of software quality assurance which encompasses all business process areas, not just testing.

There are many approaches to software testing, but effective testing of complex products is essentially a process of investigation, not merely a matter of creating and following routine procedure. One definition of testing is "the process of questioning a product in order to evaluate it", where the "questions" are operations the tester attempts to execute with the product, and the product answers with its behavior in reaction to the probing of the tester[citation needed]. Although most of the intellectual processes of testing are nearly identical to that of review or inspection, the word testing is connoted to mean the dynamic analysis of the product—putting the product through its paces. Some of the common quality attributes include capability, reliability efficiency portability maintainability, compatibility and usability. A good test is sometimes described as one which reveals an error; however more recent thinking suggests that a good test is one which reveals information of interest to someone who matters within the project community.

Another common practice is for test suites to be developed during technical support escalation procedures. Such tests are then maintained in regression testing suites to ensure that future updates to the software don't repeat any of the known mistakes.

It is commonly believed that the earlier a defect is found the cheaper it is to fix it.


Time Detected

Time Introduced

Requirements

Architecture

Construction

System Test

Post-Release

Requirements

1

3

5-10

10

10-100

Architecture

-

1

10

15

25-100

Construction

-

-

1

10

10-25

[edit] White-box and black-box testing

White box and black box testing are terms used to describe the point of view a test engineer takes when designing test cases. Black box being an external view of the test object and white box being an internal view. Software testing is partly intuitive, but largely systematic. Good testing involves much more than just running the program a few times to see whether it works. Thorough analysis of the program under test, backed by a broad knowledge of testing techniques and tools are prerequisites to systematic testing. Software Testing is the process of executing software in a controlled manner; in order to answer the question “ Does this software behave as specified?” Software testing is used in association with Verification and Validation. Verification is the checking of or testing of items, including software, for conformance and consistency with an associated specification. Software testing is just one kind of verification

Test levels

  • Unit testing tests the minimal software component and sub-component or modules by the programmer.
  • Integration testing exposes defects in the interfaces and interaction between integrated components(modules).
  • Functional testing tests the product according to programmable work.
  • System testing tests an integrated system to verify/validate that it meets its requirements.
  • Acceptance testing testing can be conducted by the client. It allows the end-user or customer or client to decide whether or not to accept the product. Acceptance testing may be performed after the testing and before the implementation phase. See also Development stage
    • Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers' site. Alpha testing is often employed for off-the-shelf software as a form of internal acceptance testing, before the software goes to beta testing.
    • Beta testing comes after alpha testing. Versions of the software, known as beta versions, are released to a limited audience outside of the company. The software is released to groups of people so that further testing can ensure the product has few faults or bugs. Sometimes, beta versions are made available to the open public to increase the feedback field to a maximal number of future users.

It should be noted that although both Alpha and Beta are referred to as testing it is in fact use emersion. The rigors that are applied are often unsystematic and many of the basic tenants of testing process are not used. The Alpha and Beta period provides insight into environmental and utilization conditions that can impact the software.

After modifying software, either for a change in functionality or to fix defects, a regression test re-runs previously passing tests on the modified software to ensure that the modifications haven't unintentionally caused a regression of previous functionality. Regression testing can be performed at any or all of the above test levels. These regression tests are often automated.

Tools:

CAST tools are software applications used in the process of software testing. The acronym stands for "Computer Aided Software Testing". Such tools are available from various vendors and there are different tools for different types of testing, as well as for test management.

eCATT (extended Computer Aided Test Tool) is a tool for software test automation developed by SAP.eCATT offers a graphical user interface with ABAP script editor and its own command syntax. The capability for recording and for parameterizing the test components is also present.eCATT is used by Compuware's latest TestPartner version 5.4.0.

Red Hat Test Suite (RHTS) is a tool for testing open source software systems. An open source version exists, called Table Cloth.

Testware:

Generally speaking, Testware a sub-set of software with a special purpose, i.e. for software testing, especially for software testing automation.

Testware is produced by both verification and validation testing methods. Like software, Testware includes codes and binaries as well as test cases, test plan, test report and etc. Testware should be placed under the control of a configuration management system, saved, faithfully maintained.

But compared with general software, testware is special because:

  • 1. Different purpose
  • 2. Different metrics for quality
  • 3. Different users

The different methods should be adpoted when you develope testware with what you use to develope general software.

Testware is also referred as test tools in a narrow sense.

Segue Software Incorporated (NASDAQ: SEGU) is a leader in quality optimization solutions through their automated software testing products like SilkTest. Segue was founded in 1988. The company has 200 employees worldwide and over $30 million in annual revenue. Segue is based in Lexington, Massachusetts. As of April 20, 2006, Segue has been acquired by Borland.

Tools developed by Segue include:

  • SilkTest - functional/regression testing
  • SilkPerformer - performance/load/stress testing
  • SilkCentral Test Manager for test management

Selenium can refer to:

No comments: