Software testing methods

47
Software Testing Methods A quick review on existing approaches, their benefits and pitfalls.

description

It's a quick

Transcript of Software testing methods

Page 1: Software testing methods

Software Testing MethodsA quick review on existing approaches, their benefits and pitfalls.

Page 2: Software testing methods

Basic Testing MethodsBasically, testing methods can be classified in this fields:

Dynamic or Static The Box Approach

White Box Black Box Gray Box

Visual Testing

Page 3: Software testing methods

Testing Levels classificationsBased on which level of software you want to test, we can implement the testing methods in these levels:

Unit testing Integration testing System testing

Page 4: Software testing methods

Testing Goals and Aims Performance testing Usability testing Scalability testing Software Stress testing Recovery testing Security testing Conformance testing Smoke testing Compatibility testing System testing Alpha testing Beta testing

Page 5: Software testing methods

Basic Testing MethodsDynamic or Static The Box Approach

White Box Black Box Gray Box

Visual Testing

Page 6: Software testing methods

Static Testing It is generally not detailed testing, but

checks mainly for the sanity of the code, algorithm, or document.

primarily syntax checking of the code and/or manually reviewing the code or document to find errors.

Mainly implemented in black-box point of view

Bugs discovered at this stage are less expensive to fix them later.

Page 7: Software testing methods

Dynamic Testing Dynamic Testing involves working with

the software, giving input values and checking if the output is as expected.

Unit Tests, Integration Tests, System Tests and Acceptance Tests are few of the Dynamic Testing methodologies.

In the dynamic testing, testing begins before the software becomes completed.

Page 8: Software testing methods

Basic Testing Methods Dynamic or Static

The Box ApproachWhite BoxBlack BoxGray Box

Visual Testing

Page 9: Software testing methods

White box testing the internal of the software, the

methods and it’s components to specify it can meet the needs of the end user.

The following types of testing fall under the white box testing technique - Unit Testing, Integration Testing

Page 10: Software testing methods

Black-Box examining the functionality without

knowing any information about how it is made.

The tester is only aware of what the software is supposed to do, not how it does it.

The following types of testing fall under the Black box testing technique - System Testing, Acceptance Testing.

Page 11: Software testing methods

Gray Box Testing Involves having knowledge of internal

data structures and algorithms for purposes of designing tests

The tester is not required to have full access to the software's source code

Page 12: Software testing methods

Basic Testing Methods Dynamic or Static The Box Approach

White Box Black Box Gray Box

Visual Testing

Page 13: Software testing methods

Visual Testing Recording of the entire test process –

capturing everything that occurs on the test system in video format.

It is suitable to apply in agile projects, since agile methods require greater communication between testers and developers and collaboration within small teams.

Page 14: Software testing methods

Testing Levels classificationsUnit testing Integration testing System testing

Page 15: Software testing methods

Unit testing A unit test is a procedure used to verify

that a particular module of source code is working properly.

The test cases should be written for each peace of code, functions and methods

This type of testing is mostly done by the developers and not by end-users.

Page 16: Software testing methods

Testing Levels classifications Unit testing

Integration testing System testing

Page 17: Software testing methods

Integration testing Integration Testing involves with verifying

the interfaces of system components in software design.

Tries to show the mistakes in interactions and interfaces between system modules.

To approaches is suggested for Integration Testing* : Bottom-Up Top-Down* Refer to the documents for further information(Integration Testing.pdf)

Page 18: Software testing methods

Testing Levels classifications Unit testing Integration testing

System testing

Page 19: Software testing methods

System Testing Mainly testing the system to meet its

requirements. Elaborating that how the third-party

systems or any external system is interacting with the system.

Page 20: Software testing methods

Section 2 :Software Testing Practices In this section, we’ll take a look at how testing can be implemented in popular project management methodologies:

1. Waterfall development2. Extreme Programming3. Scrum4. Agile

Page 21: Software testing methods

Waterfall Development Positive Points

The software is ready, and every step of testing process will be completely mature and sensible.

The test reporting results are clear and enables the management to specify which decision should be taken.

Page 22: Software testing methods

Waterfall Development Negative Points

It assumes that the system is completely ready, So It happens pretty late.

Fixing the errors found can be so expensive. Running a script for one user without errors

doesn't prove anything. Running all scripts together make it very

difficult to tune and troubleshoot Running a single large test (or even a few of

them) gives minimal information about the system behavior.

Page 23: Software testing methods

Section 2 :Software Testing Practices 1. Waterfall development2. Extreme Programming3. Scrum4. Agile

Page 24: Software testing methods

Extreme Programming Rather than designing whole of the system

at the start of the project, the preliminary design work is reduced to solving the simple tasks that have already been identified.

The developers communicate directly with customers and other developers to understand the initial requirements.

During the XP, developers usually work in pairs to test the code.

Page 25: Software testing methods

Extreme Programming Benefits

The best method when the customer doesn’t have a clear understanding of the details of the new system.

When the technology used to develop the system is new compared to other technologies.

When the team size is not very large (usually 2 to 12 people).

Page 26: Software testing methods

Extreme Programming Pitfalls:

All code must have Unit tests. All code must pass all Unit tests before it

can be released. When a Bug is found tests are created

before the bug is addressed (a bug is not an error in logic, it is a test you forgot to

write)

Page 27: Software testing methods

Section 3 :Testing Methods, Benefits and Pitfalls

Static Testing White Box Testing Black Box Testing Unit Testing Integration Testing System Testing

Page 28: Software testing methods

Static Testing Benefits

Capture defects early, so saves rework cost Checklist-based approach Focuses on coverage Group perspective Highest probability of finding defects

Pitfalls: Time-consuming Cannot test data dependencies High skill levels on each field required

Page 29: Software testing methods

Testing methods:benefits and pitfalls Static TestingWhite Box Testing Black Box Testing Unit Testing Integration Testing System Testing

Page 30: Software testing methods

White Box TestingDynamic testing implements in white-box testing methods. Benefits

Forces test developer in implementation Approximates the partitioning done by execution

equivalence Reveals errors in "hidden" code As the knowledge of internal coding structure is

prerequisite, it becomes very easy to find out which type of input/data can help in testing the application effectively.

It helps in optimizing the code. It helps in removing the extra lines of code, which can

bring in hidden defects.

Page 31: Software testing methods

White Box Testing Pitfalls:

Expensive Miss cases omitted in the code A skilled tester is needed to carry out this type of

testing, which increases the cost. It is nearly impossible to look into every bit of code to

find out hidden errors Not looking at the code in a runtime environment. (The

OS, environment and third-party situations can result in finding bugs that it

cannot recognize ) Very few white-box tests can be done without

modifying the program

Page 32: Software testing methods

Testing methods:benefits and pitfalls Static Testing White Box TestingBlack Box Testing Unit Testing Integration Testing System Testing

Page 33: Software testing methods

Black Box Testing Benefits

Black box tests are reproducible. The environment the program is running is also tested. The invested effort can be used multiple times. More effective on larger units of code than glass box

testing Tester needs no knowledge of implementation,

including specific programming languages Tests are done from a user's point of view Will help to expose any ambiguities or inconsistencies

in the specifications Efficient when used on Larger systems

Page 34: Software testing methods

Black Box Testing Benefits

Tester and developer are independent of each other, test is balanced and unprejudiced

Tester can be non-technical. There is no need of having detailed functional

knowledge of system to the tester. Tests will be done from an end user's point of view.

Because end user should accept the system. (Look for acceptance testing)

Testing helps to identify the vagueness and contradiction in functional specifications.

Test cases can be designed as soon as the functional specifications are complete

Page 35: Software testing methods

Black Box Testing Pitfalls:

The results are often overestimated. Not all properties of a software product can be tested The reason for a failure is not found. Only a small number of possible inputs can actually be

tested, to test every possible input stream would take nearly forever

Without clear and concise specifications, test cases are hard to design

There may be unnecessary repetition of test inputs if the tester is not informed of test cases the programmer has already tried

May leave many program paths untested Cannot be directed toward specific segments of code which

may be very complex (and therefore more error prone)

Page 36: Software testing methods

Black Box Testing Pitfalls:

Most testing related research has been directed toward glass box testing

Test cases are tough and challenging to design, without having clear functional specifications

It is difficult to identify tricky inputs, if the test cases are not developed based on specifications.

It is difficult to identify all possible inputs in limited testing time. So writing test cases is slow and difficult

Chances of having unidentified paths during this testing

Chances of having repetition of tests that are already done by programmer.

Page 37: Software testing methods

Testing methods:benefits and pitfalls Static Testing White Box Testing Black Box TestingUnit Testing Integration Testing System Testing

Page 38: Software testing methods

Unit Testing Benefits:

Unit testing provides a strict, written contract that the piece of code must satisfy.

allows the programmer to re-factor code at a later date, and make sure the module still works correctly

Unit testing helps eliminate uncertainty in the pieces themselves and can be used in a bottom-up testing style approach.

Unit testing provides a sort of "living document".

Page 39: Software testing methods

Unit Testing Pitfalls:

Unit-testing will not catch every error in the program, will not catch integration errors

A unit test can only show the presence of errors; it cannot show the absence of errors.

Page 40: Software testing methods

Testing methods:benefits and pitfalls Static Testing White Box Testing Black Box Testing Unit TestingIntegration Testing System Testing

Page 41: Software testing methods

Integration Testing Bottom-Up Approach

Benefits Helpful if errors like deep down in the

dependency structure. Test conditions are easier to create. Observation results are reasonable easy. Reduced effort in creating stub modules.

Page 42: Software testing methods

Integration Testing Bottom-Up Approach

Pitfalls: Need to create stub modules.(It is easier

than creating stub code) The entire system is subjected to the small

amount of test.(because the top modules are included in the tests at the final stage).

Page 43: Software testing methods

Integration Testing Top-Down Approach

Benefits: If major defects are more likely at the top

level modules top-down is beneficial. Getting I/O functions early can ease test

writing. Early demonstration of the main

functionality can be helpful in highlighting requirements issue and the in boosting morale.

Page 44: Software testing methods

Integration Testing Top-Down Approach

Pitfalls: Too much effort on stubs. Stub complexity can introduce errors. Defining stubs can be difficult if some code is yet

to be written. It may be impossible accurately to reproduce

test conditions. Some observation maybe possible to make. Encourages the idea that test and development

can overlap. Encourages deferring full testing of modules

(until lower level modules can complete.)

Page 45: Software testing methods

Testing methods:benefits and pitfalls Static Testing White Box Testing Black Box Testing Unit Testing Integration Testing

System Testing

Page 46: Software testing methods

System TestingSystem testing mainly is a sort of Black Box testing, to get more detailed information see black box testing benefits and pitfalls.

Page 47: Software testing methods

My Opinion Using the Black Box Approach with

Integration testing method – Top-Down view.

Breaking the system down into sub systems at the first step of each process.

Specify one person to run the test parts. Make a simple documentation for each

part with expecting features point of view.