Thursday, June 5, 2014

Static Testing vs Dynamic Testing


Static Testing
Static testing is a form of software testing where the software isn't actually used. This is in contrast to dynamic testing. It is generally not detailed testing, but checks mainly for the sanity of the code, algorithm, or document. It is primarily syntax checking of the code and/or manually reviewing the code or document to find errors. This type of testing can be used by the developer who wrote the code, in isolation. Code reviews, inspections and walkthroughs are also used.
From the black box testing point of view, static testing involves reviewing requirements and specifications. This is done with an eye toward completeness or appropriateness for the task at hand. This is the verification portion of Verification and Validation.
Even static testing can be automated. A static testing test suite consists of programs to be analyzed by an interpreter or a compiler that asserts the programs syntactic validity.
Bugs discovered at this stage of development are less expensive to fix than later in the development cycle.
The people involved in static testing are application developers, testers, and business analyst.
There are many approaches to software testing. Reviews, walkthroughs  or inspections are considered as static testing, whereas actually executing programmed code with a given set of test cases is referred to as dynamic testing. Static testing can be (and unfortunately in practice often is) omitted.
Dynamic testing takes place when the program itself is used for the first time (which is generally considered the beginning of the testing stage).

Walk Through:
1.     Meeting start by author.
2.     May be documented.
3.     Optional may be use of check list permeating preparation.

Benefit: it is quite informal to very formal.
Purpose: Find effect & learning

Inspection:
1.     Meeting let by moderator.
2.     Planning entry /exit criteria.
3.     Kick off(distribute document).
4.     Entry criteria.
5.     Individual preparation.
6.     Review meeting.
7.     Scribe.
8.     Rework.
9.     Follow up(exit criteria).

Peer Review (By Technical Persons):
1.     Meeting let by moderator.

Benefit:
 1. Early defect detection and correction.
 2. Lifetime cost reduction.
 3. Fewer defects and improve communication.
 4. Reduce testing cost and time.




Or
Under Static Testing code is not executed. Rather it manually checks the code, requirement documents, and design documents to find errors. Hence, the name "static".

Main objective of this testing is to improve the quality of software products by finding errors in early stages of the development cycle. This testing is also called as Non-execution technique or verification testing.
Static testing involves manual or automated reviews of the documents. This review, is  done during initial phase of testing to catch defect early in STLC. It examines work documents and provides review comments
Work document can be of following:
 •    Requirement specifications
 •    Design document
 •    Source Code
 •     Test Plans
 •    Test Cases
 •     Test Scripts
 •    Help or User document
 •    Web Page Content           


Dynamic Testing
Dynamic testing may begin before the program is 100% complete in order to test particular sections of code (modules or discrete functions). Typical techniques for this are either using stubs/drivers or execution from a debugger environment. For example, spreadsheet programs are, by their very nature, tested to a large extent interactively ("on the fly"), with results displayed immediately after each calculation or text manipulation.      

Dynamic testing (or dynamic analysis) is a term used in software engineering to describe the testing of the dynamic behavior of code. That is, dynamic analysis refers to the examination of the physical response from the system to variables that are not constant and change with time. In dynamic testing the software must actually be compiled and run. It involves working with the software, giving input values and checking if the output is as expected by executing specific test cases which can be done manually or with the use of an automated process. This is in contrast to static testing. Unit tests, integration tests, system tests and acceptance tests utilize dynamic testing.         

Dynamic testing is a method of assessing the feasibility of a software program by giving input and examining output (I/O). The dynamic method requires that the code be compiled and run. The alternative method of software testing, static testing, does not involve program execution but an examination of the code and associated documents.
Types of dynamic testing include unit testing, integration testing, system testing and acceptance testing.
Or
Under Dynamic Testing code is executed. It checks for functional behavior of software system , memory/cpu usage and overall performance of the system. Hence the name "Dynamic"
Main objective of this testing is to confirm that the software product works in conformance with  the business requirements. This testing is also called as Execution technique or validation testing.
Dynamic testing executes the software and validates the output with the expected outcome. Dynamic testing is performed at all levels of testing and it can be either black or white box testing.








Testing Techniques used for Static Testing
 •    Informal Reviews: This is one of the type of review which doesn't follow any process to find errors in the document. Under this technique , you just review the document and give informal comments on it.
 •   Technical Reviews: A team consisting of your  peers,   review the technical specification of the software product and checks whether it is suitable for the project. They try to  find any discrepancies in the specifications and standards followed. This review concentrates mainly on the technical document related to the software such as Test Strategy, Test Plan and requirement specification documents.
 •    Walkthrough: The author of the work product explains the product to his team. Participants can ask questions if any.  Meeting is led by the author. Scribe makes note of review comments
 •    Inspection: The main purpose is to find defects and meeting is led by trained moderator. This review is a formal type of review where it follows strict process to find the defects. Reviewers have checklist to review the work products .They record the defect and inform the participants to rectify those errors.
 •    Static code Review: This is systematic review of the software source code without executing the code. It checks the syntax of the code, coding standards, code optimization, etc. This is also termed as white box testing .This review can be done at any point during development.

Testing Techniques used for Dynamic Testing












 •   Unit Testing: Under unit testing, individual units or modules is tested by the developers. It involves testing of source code by developers.
 •   Integration Testing: Individual modules are grouped together and tested by the developers. The purpose is to determine that modules are working as expected once they are integrated.
 •   System Testing: System testing is performed on the whole system by checking whether the system or application meets the requirement specification document.
     Also, Non-functional testing like performance, security testing fall under the category of dynamic testing.

Static Testing vs Dynamic Testing

S.No
Static Testing
Dynamic Testing
1
Static Testing is a form of software testing. Where the software isn’t actually used.
In the dynamic testing the software must actually be completed and run.
2
It is generally not detailed testing. But checks mainly for the sanity of the code, algorithm, or document. It is primarily syntax checking of the code or and manually reading of the code or document to find errors.
Dynamic analysis refers to the examination of the physical response from the system to variables that are not constant and change with the time
3
This type of testing can be used by the developer
Some of the dynamic testing methodologies include unit testing, integration testing, system testing and acceptance testing.
Who wrote the code, in isolation, Code reviews, inspections and walkthroughs are also used.

4
This is a verification portion of Verification and Validation
Dynamic testing is the validation portion of Verification and Validation
5
These are verification activities, Code Reviews, inspection and walkthroughs are few of the static testing methodologies.
These are validation activities, Unit Tests, Integration Tests System Tests and Acceptance Tests are few of the Dynamic Testing  methodologies
6
Testing done without executing the program
Testing done by executing the program
7
This testing does verification process
Dynamic testing does validation process
8
Static testing is about prevention of defects
Dynamic testing is about finding and fixing the defects
9
Static testing gives assessment of code and documentation
Dynamic testing gives bugs/bottlenecks in the software system.
10
Static testing involves checklist and process to be followed
Dynamic testing involves test cases for execution
11
This testing can be performed before compilation
Dynamic testing is performed after compilation
12
Static testing covers the structural and statement coverage testing
Dynamic testing covers the executable file of the code
13
Cost of finding defects and fixing is less
Cost of finding and fixing defects is high
14
Return on investment will be high as this process involved at early stage
Return on investment will be low as this process involves after the development phase
15
More reviews  comments are highly recommended for good quality
More defects are highly recommended for good quality.
16
Requires loads of meetings
Comparatively requires lesser meetings



No comments:

Post a Comment