Friday, 26 April 2013

Black box testing and White box testing

What is black box testing and white box testing :

Black Box Testing :

Black-box testing is a method of software testing that examines the functionality of an application (e.g. what the software does) without peering into its internal structures or workings.

Definition by ISTQB

  • Black box testing: Testing, either anatomic or non-functional, after advertence to the Centralized anatomy of the basic or system.

White Box Testing :

White box testing is aswell accepted as Clear Box Testing, Open Box Testing, Glass Box Testing, Transparent Box Testing, Code-Based Testing or Structural Testing!

Definition by ISTQB

  • White-box testing: Testing based on an assay of the centralized anatomy of the basic or system
Read more about Manual Testing , Automation Testing and Manual Testing vs Automated testing

Advantages and Disadvantages of Black box Testing

Advantages and Disadvantages of Black box Testing :

Advantages of Black box Testing
Disadvantages of Black box Testing

Advantages :
  • Tests are done from a user’s point of view and will help in exposing discrepancies in the specifications
  • Tester need not know programming languages or how the software has been implemented
  • Tests can be conducted by a body independent from the developers, allowing for an objective perspective and the avoidance of developer-bias
  • Test cases can be designed as soon as the specifications are complete

Disadvantages :
  • Only a small number of possible inputs can be tested and many program paths will be left untested
  • Without clear specifications, which is the situation in many projects, test cases will be difficult to design
  • Tests can be redundant if the software designer/ developer has already run a test case.
  • Ever wondered why a soothsayer closes the eyes when foretelling events? So is almost the case in Black Box Testing.
Read more about White Box Testing Advantages and Disadvantages

Wednesday, 24 April 2013

Advantages and Dis-advantages of Waterfall Model

What are the Advantages & Dis-advantages of Waterfall Model

Advantages of waterfall model:

advantages-of-waterfall-model

  • It allows for departmentalization and managerial control.
  • Simple and easy to understand and use.
  • Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Works well for smaller projects where requirements are very well understood.
  • A schedule can be set with deadlines for each stage of development and a product can proceed through the development process like a car in a car-wash, and theoretically, be delivered on time.

What is Waterfall model and list its advantages, disadvantages

What is Waterfall model

List its advantages and disadvantages

What is Waterfall Model ?

The waterfall model is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to the systems development life cycle, the waterfall model describes a development method that is linear and sequential. Waterfall development has distinct goals for each phase of development. Imagine a waterfall on the cliff of a steep mountain. Once the water has flowed over the edge of the cliff and has begun its journey down the side of the mountain, it cannot turn back. It is the same with waterfall development. Once a phase of development is completed, the development proceeds to the next phase and there is no turning back.
sdlc-waterfall-model


Saturday, 13 April 2013

V-Model in SDLC (Software Development Lifecycle)

V-Model in SDLC (Software Development Lifecycle)

The V-model represents a software development process (also applicable to hardware development) which may be considered an extension of the waterfall model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represents time or project completeness (left-to-right) and level of abstraction (coarsest-grain abstraction uppermost), respectively.

v-model-sdlc
Click on the image for Zoom view

Overview : 

The V-model is a graphical representation of the systems development lifecycle. It summarizes the main steps to be taken in conjunction with the corresponding deliverables within computerized system validation framework.

The V represents the sequence of steps in a project life cycle development. It describes the activities to be performed and the results that have to be produced during product development. The left side of the "V" represents the decomposition of requirements, and creation of system specifications. The right side of the V represents integration of parts and their validation.

It is sometimes said that validation can be expressed by the query "Are you building the right thing?" and verification by "Are you building it right?"

In practice, the usage of these terms varies. Sometimes they are even used interchangeably.

The PMBOK guide, an IEEE standard, defines them as follows in its 4th edition:
"Validation. The assurance that a product, service, or system meets the needs of the customer and other identified stakeholders. It often involves acceptance and suitability with external customers. Contrast with verification."
"Verification. The evaluation of whether or not a product, service, or system complies with a regulation, requirement, specification, or imposed condition. It is often an internal process. Contrast with validation."

Software Development Lifecycle (SDLC) Models

Software Development Lifecycle (SDLC) Models

What is Software Development Lifecycle (SDLC) :

The software development life cycle (SDLC) is a conceptual model used in project management that describes the stages involved in an information system development project, from an initial feasibility study through maintenance of the completed application/product.

sdlc-software-testing-lifecycle
  1. Understand the relationship between development, test activities and work products in the Development life cycle and give examples based on project and product characteristics and context.
  2. Recognize the fact that software development models must be adapted to the context of project and product characteristics.
  3. Recall reasons for different levels of testing and characteristics of good testing in any life cycle model.

Thursday, 4 April 2013

Common types of computer bugs

What are the common types of computer bugs and define it ?

What are the types of bugs?

A bug could be an abstruse absurdity (code is syntactically correct, about the activated scientist or artist declared it to try to to one affair else).

types-of-bugs

  • Arithmetic bugs
  • Interfacing bugs
  • Teamworking bugs
  • Performance bugs
  • Multi-threading programming bugs
  • Resource bugs
  • Syntax bugs
  • Access violations
  • Logic bugs

Compare Quality-Assurance, Quality-Control, Testing

Comparison of Quality Assurance (QA), Quality Control (QC), Testing ?

qa-and-testing



No.
Quality Assurance (QA)
Quality Control (QC)
Testing
1 Quality Assurance: A set of activities designed to ensure that the development and/or maintenance process is adequate to ensure a system will meet its objectives. Quality Control: A set of activities designed to evaluate a developed work product. Testing: The process of executing a system with the intent of finding defects. (Note that the "process of executing a system" includes test planning prior to the execution of the test cases.)
2 QA activities ensure that the process is defined and appropriate. Methodology and standards development are examples of QA activities. A QA review would focus on the process elements of a project - e.g., are requirements being defined at the proper level of detail. QC activities focus on finding defects in specific deliverables - e.g., are the defined requirements the right requirements Testing is one example of a QC activity, but there are others such as inspections
3 QA is process oriented QC is product oriented. Testing therefore is product oriented and thus is in the QC domain.
4 Preventive activities. It is a antidotal method. It is a antidotal method.
5 Quality Assurance makes sure you are doing the right things, the right way. Quality Control makes sure the results of what you've done are what you expected. Testing for quality isn't assuring quality, it's controlling it.

These are the main differences between Quality Assurance (QA), Quality Control (QC), Testing


Compare-Quality-Assurance-Quality-Control-Testing

qa-qc-comparison
Click on the image for Zoom view

Difference between QA and QC are as follows : 

qa-qc-difference


Quality Assurance Quality Control
1. Quality Assurance helps us to build processes. 1. Quality Control helps us to implements the build processes.
2. It is the Duty of the complete team. 2. It is only the Duty of the Testing team.
3. QA comes under the category of Verification. 3. QC comes under the category of Validation.
4. Quality Assurance is considered as the process oriented exercise. 4. Quality Control is considered as the product oriented exercise.
5. It prevents the occurrence of issues, bugs or defects in the application. 5. It always detects, corrects and reports the bugs or defects in the application.
6. It does not involve executing the program or code. 6. It always involves executing the program or code.
7. It is done before Quality Control.

7. It is done only after Quality Assurance activity is completed.

8. It can catch an error and mistakes that Quality Control cannot catch, that is why considered as Low Level Activity.

8. It can catch an error that Quality Assurance cannot catch, that is why considered as High Level Activity.

9. It is human based checking of documents or files. 9. It is computer based execution of program or code.
10. Quality Assurance means Planning done for doing a process. 10. Quality Control Means Action has taken on the process by execute them.
11. Its main focuses on preventing Defects or Bugs in the system. 11. Its main focuses on identifying Defects or Bugs in the system.
12. It is not considered as a time consuming activity. 12. It is always considered as a time consuming activity.
13. Quality Assurance makes sure that you are doing the right things in the right way that is the reason it is always comes under the category of verification activity. 13. Quality Control makes sure that whatever we have done is as per the requirement means it is as per what we have expected, that is the reason it is comes under the category of validation activity.
14. QA is Pro-active means it identifies weaknesses in the processes. 14. QC is Reactive means it identifies the defects and also corrects the defects or bugs also.


Click on the image for zoom view

Differences between Black box, White box, Gray box testing

What are the Differences between Black Box / White Box / Gray box Testing ?


Differences-between-Black-box-White-box-Gray-box-testing


Note that Gray is aswell spelt as Grey. Hence Grey Box Testing and Gray Box Testing beggarly the same.

Differences-between-Black-box-White-box-Gray-box-testing
Click on the image for zoom view

Click to read about Differences between Black Box and White Box Testing , Compare Quality-Assurance, Quality-Control, Testing


Differences between Black Box and White Box Testing

What is the differences between Black Box Testing and White Box Testing ?

difference-between-black-box-white-box


Here are some common differences between Black Box Testing and White Box Testing :

Criteria Black Box Testing White Box Testing
Definition Black Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is NOT known to the tester White Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is known to the tester.
Levels Applicable To Mainly applicable to higher levels of testing:Acceptance Testing
System Testing
Mainly applicable to lower levels of testing:Unit Testing
Integration Testing
Responsibility Generally, independent Software Testers Generally, Software Developers
Programming Knowledge Not Required Required
Implementation Knowledge Not Required Required
Basis for Test Cases Requirement Specifications Detail Design

Traceability matrix in Software Testing with example template

What is Traceability Matrix :

A traceability matrix is a document, usually in the form of a table, that correlates any two baselined documents that require a many-to-many relationship to determine the completeness of the relationship. It is often used with high-level requirements (these often consist of marketing requirements) and detailed requirements of the product to the matching parts of high-level design, detailed design, test plan, and test cases.

A requirements traceability matrix may be used to check to see if the current project requirements are being met, and to help in the creation of a request for proposal, software requirements specification, various deliverable documents, and project plan tasks.

What is the need for Requirements Traceability Matrix in Software Testing?

Automation requirement in an organization initiates it to go for a custom built Software. The client who had ordered for the product specifies his requirements to the development Team and the process of Software Development gets started. 

In addition to the requirements specified by the client, the development team may also propose various value added suggestions that could be added on to the software. But maintaining a track of all the requirements specified in the requirement document and checking whether all the requirements have been met by the end product is a cumbersome and a laborious process.

The remedy for this problem is the Requirements Traceability Matrix.

What is Traceability Matrix from Software Testing perspective?

  • A requirements traceability matrix is a document that traces and maps user requirements [requirement Ids from requirement specification document] with the test case ids. Purpose is to make sure that all the requirements are covered in test cases so that while testing no functionality can be missed.
  • This document is prepared to make the clients satisfy that the coverage done is complete as end to end, this document consists of Requirement/Base line doc Ref No., Test case/Condition, and Defects/Bug id. Using this document the person can track the Requirement based on the Defect id
Types of Traceability Matrix:
  • Forward Traceability – Mapping of Requirements to Test cases
  • Backward Traceability – Mapping of Test Cases to Requirements
  • Bi-Directional Traceability - A Good Traceability matrix is the References from test cases to basis documentation and vice versa.
Types of Traceability Matrix:

Why Bi-Directional Traceability is required?

  • Bi-Directional Traceability contains both Forward & Backward Traceability. Through Backward Traceability Matrix, we can see that test cases are mapped with which requirements.
  • This will help us in identifying if there are test cases that do not trace to any coverage item— in which case the test case is not required and should be removed (or maybe a specification like a requirement or two should be added!). This “backward” Traceability is also very helpful if you want to identify that a particular test case is covering how many requirements?
  • Through Forward Traceability – we can check that requirements are covered in which test cases? Whether is the requirements are coved in the test cases or not?
  • Forward Traceability Matrix ensures – We are building the Right Product. and Backward Traceability Matrix ensures – We the Building the Product Right.

Disadvantages of not using Traceability Matrix [some possible (seen) impact] :

No traceability or Incomplete Traceability Results into:
  • Poor or unknown test coverage, more defects found in production 
  • It will lead to miss some bugs in earlier test cycles which may arise in later test cycles. Then a lot of discussions arguments with other teams and managers before release.
  • Difficult project planning and tracking, misunderstandings between different teams over project dependencies, delays, etc

Benefits of using Traceability Matrix :

  • Make obvious to the client that the software is being developed as per the requirements.
  • To make sure that all requirements included in the test cases
  • To make sure that developers are not creating features that no one has requested
  • Easy to identify the missing functionalities.
  • If there is a change request for a requirement, then we can easily find out which test cases need to update.
  • The completed system may have “Extra” functionality that may have not been specified in the design specification, resulting in wastage of manpower, time and effort.

Steps to create Traceability Martix:

  • Make use of excel to create Traceability Matrix:
  • Define following columns:
    • Base Specification/Requirement ID (If any)
    • Requirement ID
    • Requirement description
    • TC 001
    • TC 002
    • TC 003.. So on.
  • Identify all the testable requirements in granular level from requirement document. Typical requirements you need to capture are as follows: 
    • Used cases (all the flows are captured) 
    • Error Messages 
    • Business rules 
    • Functional rules
    • SRS 
    • FRS  and So on…
  • Identity all the test scenarios and test flows.
  • Map Requirement IDs to the test cases. Assume (as per below table), Test case “TC 001” is your one flow/scenario. Now in this scenario, Requirements SR-1.1 and SR-1.2 are covered. So mark “x” for these requirements.
  • Now from below table you can conclude –
    • Requirement SR-1.1 is covered in TC 001
    • Requirement SR-1.2 is covered in TC 001
    • Requirement SR-1.5 is covered in TC 001, TC 003 [Now it is easy to identify, which test cases need to be updated if there is any change request].
    • TC 001 Covers SR-1.1, SR, 1.2 [we can easily identify that test cases covers which requirements].
    • TC 002 covers SR-1.3.. So on..
Requirement ID Requirement description TC 001 TC 002 TC 003
SR-1.1 User should be able to do this x
SR-1.2 User should be able to do that x
SR-1.3 On clicking this, following message should appear x
SR-1.4 x
SR-1.5 x x
SR-1.6 x
SR-1.7 x

This is a very basic traceability matrix format. You can add more following columns and make it more effective:
ID, Assoc ID, Technical Assumption(s) and/or Customer Need(s), Functional Requirement, Status, Architectural/Design Document, Technical Specification, System Component(s), Software Module(s), Test Case Number, Tested In, Implemented In, Verification, Additional Comments.

The RTM Template shows the Mapping between the actual Requirement and User Requirement/System Requirement. 

Any changes that happens after the system has been built we can trace the impact of the change on the Application through RTM Matrix. This is also the mapping between actual Requirement and Design Specification. This helps us in tracing the changes that may happen with respect to the Design Document during the Development process of the application. Here we will give specific Document unique ID, which is associated with that particular requirement to easily trace that particular document. 


In any case, if you want to change the Requirement in future then you can use the RTM to make the respective changes and you can easily judge how many associated test scripts will be changing.

sample-traceability-matrix-template

Click to read about other Test Documents

Advantages and Disadvantages of White box testing

Advantages and Disadvantages of White box testing :

White Box Testing Advantages

White Box Testing Advantages

  • Testing can be commenced at an earlier stage. One need not wait for the GUI to be available.
  • Testing is more thorough, with the possibility of covering most paths.

White Box Testing Dis-Advantages

White Box Testing Dis-Advantages

  • Since tests can be very complex, highly skilled resources are required, with thorough knowledge of programming and implementation.
  • Test script maintenance can be a burden if the implementation changes too frequently.
  • Since this method of testing it closely tied with the application being testing, tools to cater to every kind of implementation/platform may not be readily available.
  • White Box Testing is like the work of a mechanic who examines the engine to see why the car is not moving.

Black box testing and its advantages and disadvantages

What is black box testing ?

Black Box Testing, also known as Behavioral Testing, is a software testing method in which the internal structure/design/implementation of the item being tested is not known to the tester. These tests can be functional or non-functional, though usually functional.

Definition by ISTQB :
Black box testing: Testing, either functional or non-functional, without reference to the internal structure of the component or system. Black box test design technique: Procedure to derive and/or select test cases based on an analysis of the specification, either functional or non-functional, of a component or system without reference to its internal structure.

 Black-Box-Testing

This method is named so because the software program, in the eyes of the tester, is like a black box; inside which one cannot see.

This method of attempts to find errors in the following categories:

  • Incorrect or missing functions
  • Interface errors
  • Errors in data structures or external database access
  • Behavior or performance errors
  • Initialization and termination errors


Example :
A tester, without knowledge of the internal structures of a website, tests the web pages by using a browser; providing inputs (clicks, keystrokes) and verifying the outputs against the expected outcome.

black-box-testing

Black Box Testing Techniques :

Following are some techniques that can be used for designing black box tests.

  • Equivalence partitioning
  • Boundary Value Analysis
  • Cause Effect Graphing

Equivalence partitioning

Equivalence Partitioning is a software test design technique that involves dividing input values into valid and invalid partitions and selecting representative values from each partition as test data.

Boundary Value Analysis

Boundary Value Analysis is a software test design technique that involves determination of boundaries for input values and selecting values that are at the boundaries and just inside/outside of the boundaries as test data.

Cause Effect Graphing

Cause Effect Graphing is a software test design technique that involves identifying the cases (input conditions) and effects (output conditions), producing a Cause-Effect Graph, and generating test cases accordingly.

Advantages of Black Box Testing :

Tests are done from a user’s point of view and will help in exposing discrepancies in the specifications
Tester need not know programming languages or how the software has been implemented
Tests can be conducted by a body independent from the developers, allowing for an objective perspective and the avoidance of developer-bias
Test cases can be designed as soon as the specifications are complete

Disadvantages of Black Box Testing :

Only a small number of possible inputs can be tested and many program paths will be left untested
Without clear specifications, which is the situation in many projects, test cases will be difficult to design
Tests can be redundant if the software designer/ developer has already run a test case.
Ever wondered why a soothsayer closes the eyes when foretelling events? So is almost the case in Black Box Testing.

Click to know about White box testing and Gray box testing and Differences between Black Box and White Box Testing and Compare Quality-Assurance, Quality-Control, Testing

Manual Testing vs Automated testing

Discuss about adverse between Manual Testing vs Automated testing :

contrast-between-manual-automation-testing

  • Manual testing is an simple action as compared to automatic testing. Automated testing is beneath time balance as compared to chiral testing.
  • Manual testing is accessible up to assertive akin but Automatic testing is accessible at every level. Automated testing is added big-ticket as compared to chiral testing.
  • Manual testing is acclimated for baby projects where-as Automatic testing is acclimated for continued appellation projects.
  • Manual testing is based on functions and abstraction of the activity but the abutment of Automatic testing is bound to few languages.
  • Manual Testing requires circuitous Chiral Setup and tears down, admitting Automatic Tests can accept been capricious scopes and crave beneath circuitous setups and teardown.
  • Manual Testing has a top accident of missing out on something, admitting Automatic Tests accept aught risks of missing out a pre-decided test.
  • Manual Tests do not accommodate a safety-net, admitting Automatic Tests accommodate a safety-net for refactoring / additions.

Manual Testing and its Advantages, Disadvantages

What is Manual Testing ?

  • Manual testing is the oldest and most rigorous type of software testing. Manual testing requires a tester to perform manual test operations on the test software without the help of Test automation. 
  • Manual testing is a laborious activity that requires the tester to possess a certain set of qualities;
    • To be patient,
    • Observant,
    • Speculative,
    • Creative,
    • Innovative,
    • Open-minded,
    • Resourceful,
    • Un-opinionated,
    • Skillful.

Difference between Manual testing and Automation testing

What are the differences between Manual testing and Automation testing ?

  • Executing the test cases manually without any tool support is known as manual testing.
  • Taking tool support and executing the test cases by using automation tool is known as automation testing.
  • Following table shows the difference between manual testing and automation testing.
manual-vs-automation-testing

Manual Testing
Automation Testing
1. Time consuming and tedious: Since test cases are executed by human resources so it is very slow and tedious. 1. Fast Automation runs test cases significantly faster than human resources.

2. Huge investment in human resources: As test cases need to be executed manually so more testers are required in manual testing. 2. Less investment in human resources:Test cases are executed by using automation tool so less tester are required in automation testing.
3. Less reliable: Manual testing is less reliable as tests may not be performed with precision each time because of human errors. 3. More reliable: Automation tests perform precisely same operation each time they are run.

4. Non-programmable: No programming can be done to write sophisticated tests which fetch hidden information 4. Programmable: Testers can program sophisticated tests to bring out hidden information.

Disadvantages of Automation Testing

What are the disadvantages of Automation Testing?


disadvantages-of-automated-testing

Though the automation testing has many advantages, it has its own disadvantages too. Some of the disadvantages are:

  • Proficiency is required to write the automation test scripts.
  • Debugging the test script is major issue. If any error is present in the test script, sometimes it may lead to deadly consequences.
  • Test maintenance is costly in case of playback methods. Even though a minor change occurs in the GUI, the test script has to be re-recorded or replaced by a new test script.
  • Maintenance of test data files is difficult, if the test script tests more screens.
Some of the above disadvantages often cause damage to the benefit gained from the automated scripts. Though the automation testing has pros and corns, it is adapted widely all over the world.

Click to check about Advantages of Automation testing and Manual Testing

    Advantages of Automation testing

    What are the Advantages / Benefits of Automation testing ?

    benefits-of-automation-testing
    1. Fast: Runs tests significantly faster than human users.
    2. Repeatable: Testers can test how the website or software reacts after repeated execution of the same operation.
    3. Reusable: Tests can be re-used on different versions of the software.
    4. Reliable: Tests perform precisely the same operation each time they are run thereby eliminating human error.
    5. Comprehensive: Testers can build test suites of tests that covers every feature in software software application.
    6. Programmable: Testers can program sophisticated tests that bring hidden information.
    7. Test automation enables one to achieve detailed product testing with significant reduction in test cycle time.
    8. The efficiency of automated testing incorporated into product life cycle can generate sustainable time and money savings.
    9. Better, faster testing.
    10. Rapid validation of software changes with each new release of application is possible.
    11. Automated testing increases the significance and accuracy of testing and results in greater test coverage.
    12. Automated testing offers a level of consistency, which is not achievable through the use of manual testing.
    13. Automated testing eliminates the time constraints associated with manual testing. Scripts can be executed at any time without human intervention.
    14. Automated test scripts are re-usable, and can be used across varying scenarios and environments.
    15. Enhanced productivity.
    16. Automation eliminates many of the mundane functions associated with regression testing.


    advantages-of-automation-testing