Showing posts with label Integration testing. Show all posts
Showing posts with label Integration testing. Show all posts

Sunday, September 15, 2019

Levels of Software Testing

There are 4 levels of testing :

1. Unit Testing or Component Testing
2. Integration Testing ( Small & Large )
3. System Testing
4. Acceptance Testing (UAT  – Alpha Testing, Beta Testing )



1. Unit / Component/Module Testing

1.Testing of individual software components(BS 7925 –1)
2.Also known as Unit testing, Module testing, Program testing
3.Searches for defects in, and verifies the functioning of software components(Programs, Objects, Classes, etc.)
4.Stubs ,drivers and simulators may be used
5.May include testing of functionality and specific non-functional characteristics such as memory leaks etc.
6.Also includes structural testing(e.g: branch coverage) with access to the code
7.Usually done by the programmer who wrote the code
8.Defects are typically fixed as soon as they are found, without formally recording incidents
9.Prepare and automate test cases (e.g.: J Unit)
10.BS 7925 –2 defines techniques for the design and measurement of component testing.


2. Integration Testing

“Testing performed to expose faults in the interfaces and in the interaction
between integrated components”.

Two Types:
A) Integration in the Small
B) Integration in the Large



Guidelines on selection of integration method

A) Integration Testing in the Small

Four approaches are there:-
- Top-down
- Bottom-up
- Big-bang
- Functional Incrementation Testing

Integration testing in the small
  1. more than one (tested) component
  2. communication between components
  3. what the set can perform that is not possible individually
  4. non-functional aspects if possible
  5. integration strategy: big-bang vs incremental (top-down, bottomup,
  6. functional)
  7. done by designers, analysts, or independent tester.

Big-Bang Integration

In theory:
1. If we have already tested components why not just combine them all
at once? Wouldn’t this save time? (based on false assumption of no faults)
In practice:
1. Takes longer to locate and fix faults
2. Re-testing after fixes more extensive
3. End result? takes more time

Top-down Testing

  1. Main Program is tested first
  2. Modules are integrated one at a time
  3. Major emphasis is on testing interfaces
  4. Interface errors are discovered early
  5. Test Stub’s are needed
  6. Errors in critical modules at low levels are found late
  7. Uses Depth-First approach
  8. Design errors detected early

“Stubs are used as passive subprograms to allow high level control routines to be
tested when low level component is unavailable”


Stubs


Stub (Baan: dummy sessions) replaces a called component for integration testing.
Keep it Simple
1. Print/display name (I have been called)
2. Reply to calling module (single value)
3. Computed reply (variety of values)
4. Prompt for reply from tester
5. Search list of replies
6. Provide timing delay

Pros & cons of top-down approach


Advantages:
1. Critical control structure tested first and most often
2. Can demonstrate system early (show working menus)

Disadvantages:
1. Needs stubs
2. Detail left until last
3. May be difficult to "see" detailed output (but should have been tested
in component test)
4. May look more finished than it is

Bottom-up Testing:

1. Tests low-level units first
2. Modules are integrated one at a time
3. Test Driver’s s are needed
4. Errors in critical modules at low levels are found early
5. Uses Breadth-First approach
6. Design errors discovered late

“Drivers are used to run low-level modules and to test the interfaces or links
between them”


Bottom-Up Integration


Drivers

1. Driver (Baan: dummy sessions): test harness: scaffolding
2. Specially written or general purpose (commercial tools)
3. Invoke baseline
4. Send any data baseline expects
5. Receive any data baseline produces (print)
6. Each baseline has different requirements from the test driving software

Pros & cons of bottom-up approach

Advantages:
1. Lowest levels tested first and most thoroughly (but
should have been tested in unit testing)
2. Good for testing interfaces to external environment
(hardware, network)
3. Visibility of detail

Disadvantages
4. No working system until last baseline
5. Needs both drivers and stubs
6. Major control problems found last

B) Integration testing in the large

1.Tests the completed system working in conjunction with other systems.
2. LAN / WAN, communications middleware
3. Other internal systems (billing, stock, personnel, overnight batch,
branch offices, other countries)
4. External systems (stock exchange, news, suppliers)
5. Intranet, internet / www
6. 3rd party packages
7. Electronic data interchange (EDI)

Approach


Identify risks
1. Which areas missing or malfunctioning would be most critical - test them first
“Divide and conquer”
2. Test the outside first (at the interface to your system, e.g. test a package on its own)
3. Test the connections one at a time first (your system and one other)
4. Combine incrementally - safer than “big bang”
(non-incremental)


3.System Testing (ST)

Last integration step , Testing the System based on what it is supposed to do
(Functional) and how well it is doing(Non-Functional)

Test - Two Types : Functional & Non-functional

A. Functional
1. Functional requirements and requirements-based testing
2. Business process-based testing
3. Functional testing considers the external behaviour of the software (BBT)
B. Non-functional (product characteristics / requirements include):
Security, Reliability, Usability, Installability, Recovery, Interoperability etc…
1. As important as functional requirements
2. Often poorly specified

3. Must be tested , often done by independent test group.

4. Acceptance Testing: (UAT)


1. “Formal testing conducted to enable a user, customer or other authorized entity to determine whether to accept a system or
component “
2. Acceptance testing is high on the V model , a counter part to the Requirement specification process
3. Final user sign-off.
4. User Acceptance Testing:
5. Testing conducted by and visible to customer
6. It is conducted at the final stage of Validation
7. Contract Acceptance Testing:
8. A demonstration of the acceptance criteria which would have beendefined in the contract being met.
Share:

Sunday, August 4, 2019

Manual Testing




Manual Testing is a sort of Software Testing where Testers physically/manually execute test cases without using any automation tool for executing test cases/scripts. Manual Testing is the most crude of all testing forms and helps discover bugs in the software product .

Any new application must be manually tested before its testing is being automated. Manual Testing requires more exertion yet is important to check automation possibility.

One of the Software Testing Fundamental is "100% Automation is beyond the realm of imagination".

Types of Manual Testing

  1. Black Box Testing
  2. White Box Testing
  3. Unit Testing
  4. System Testing
  5. Integration Testing
  6. Acceptance Testing

Step by step instructions to perform Manual Testing

  • Analyse, Study and comprehend the  software product documentation/guidelines. Likewise, study the Application Under Test (AUT) if accessible. 
  • Write Test cases that describes all the requirements referenced in the documentation. 
  • Review the test cases with Team Lead, Client (as appropriate) 
  • Execute the test cases on the AUT 
  • Report bugs. 
  • When bugs are fixed, again execute the test cases to confirm they pass. 


Share:

Sunday, June 16, 2019

Types of Software Testing

As, we know the software testing is the process of finding bugs in the software and it is not a single activity. It is a collection of various activities. So therefore there is a need to identify the different types of testing. Software testing types is the categorization of software testing activities and each activity has its own strategy, objectives and deliverables. 



Below is the list of common types testings :
Functional Testing : 





  • Unit testing
  • Integration testing
  • System testing
  • Acceptance testing
  • Sanity testing
  • Smoke testing
  • Interface testing
  • Regression testing
  • Beta/Alpha testing        

  •  Non Functional Testing: 

    • Performance Testing
    • Load testing
    • Stress testing
    • Volume testing
    • Security testing
    • Compatibility testing
    • Recovery testing
    • Usability testing
    • Compliance testing  

    Detailed descriptions of each testing type mentioned above

    1) Unit Testing: It comes under whites box testing technique and usually performed by the developer. In this testing type individual units/components of the software are tested. The objective of the unit testing is to check the section of a code to verify its correctness. It is the very first level o software of testing.


    2) Integration Testing: It is the second level of software testing. Under this testing individual units/components are combined to form a system or subsystem and then tested . The objective of this testing is to find the bugs in the interaction between the integrated units.

    3) System Testing: System testing is done on fully integrated system in order to validate if the system is meeting the specified system requirement or not. It is done by the testing team under the required testing environment.

    4) Acceptance Testing: Acceptance Testing is the last level of software testing under this the complete system is tested for acceptability by the client or end user. The objective of this testing is to evaluate the system’s compliance with the business requirements and assess whether it is acceptable for delivery or not.


    5) Sanity Testing: Sanity testing is deep and narrow in its approach. It is done in order to test if the build is stable and testable or not.  The aim is to check that the proposed functionality works roughly as expected. If sanity testing fails then the build gets rejected to save the time and costs involved in a more rigorous testing.

    6) Smoke Testing:  Smoke testing is wide and shallow in its approach. It is also done to check the stability and testability of the software.  It is performed "before" any functional or regression tests are executed on the software. The aim is to reject a badly broken software so that the testing team does not waste time installing and testing the software.

    7) Interface Testing: Every software has various components that is server, database etc. The connection which integrates and facilitates the link between these components is termed as an Interface. the objective of this testing is to verifies that the communication between the systems are done correctly or not.

    8)  Regression Testing: Regression testing is done to find unexpected side effect on the existing functionality of the changes in the code. New changes can be an addition of  new functionality or changes due to the fixing of the previously reported bug.

    9) Alpha Testing: It is a user acceptance testing that is it is done to evaluate the system’s compliance with the business requirements at the developers side.

    10) Beta Testing:It is a user acceptance testing that is it is done to evaluate the system’s compliance with the business requirements at the clients site or at end users site.

    11) Performance Testing: It is done to test the performance of the software under its operational workload. 
    a) Speed:It is performed to test the request to response time.
    b) Scalability : to know the maximum load a software can handle.
    c)Stability: to know how software behaves under varying load.

    12)Load Testing: It is a kind of performance testing under this software is tested to check the speed of the request to response time to know how the software will respond when multiple users uses the software simultaneously.

    13) Stress Testing:  Testing technique which evaluates a system or component at or beyond the limits of its specified requirements.

    14) Volume Testing: This testing is done to know the  behavior of the software under varied volume of the data handled by the software.

    15) Security Testing: The objective of security testing is to identify the threats,security risk and loopholes in the software and to measure its potential vulnerabilities, so the software does not stop functioning or is exploited by the hackers. It also helps in detecting the security risks in the software so that the developers can fix the security issues.


    16)Compatibility Testing: It is performed to check if the software is compatible with the hardware,operating system, and with different browsers or not.

    17) Recovery Testing: Recovery Testing is performed to check how well a software product can recover from crash, hardware failures.

    18)Usability Testing: It is performed to test "How user friendly" a software product is. It mainly focuses on end users if the software is easy to use and can operate the software easily.

    19)Compliance Testing: Compliance testing  checks if the software has developed in accordance with standards, procedures and guidelines.



    Share:

    Email Subscription

    Enter your email address:

    Delivered by FeedBurner

    Follow my blog

    Total Pageviews

    Contact Form

    Name

    Email *

    Message *

    Translate