Tuesday 26 March 2013

Software Testing Types

What are the different types of Testing ? Explain.

Listed below are the most common types of software testing. Lets discuss about each in the following section:
  1. Adhoc Testing 
  2. Exploratory Testing 
  3. Exhaustive Testing 
  4. Sanity Testing 
  5. Smoke Testing 
  6. Soak Testing 
  7. Regression Testing 
  8. Retesting 
  9. Performance Testing 
  10. Stress Testing 
  11. Load Testing 
  12. Compatibility Testing 
  13. Alpha Testing 
  14. Beta Testing 
  15. Acceptance Testing 
  16. Static Testing 
  17. Dynamic testing 
  18. i18n / Internationalization 
  19. L10N / Localization

Thursday 14 March 2013

What is Acceptance Testing - Alpha, Beta Testing

What is Acceptance Testing :

This is arguably the most importance type of testing as it is conducted by the Quality Assurance Team who will gauge whether the application meets the intended specifications and satisfies the client.s requirements. The QA team will have a set of pre written scenarios and Test Cases that will be used to test the application.

More ideas will be shared about the application and more tests can be performed on it to gauge its accuracy and the reasons why the project was initiated. Acceptance tests are not only intended to point out simple spelling mistakes, cosmetic errors or Interface gaps, but also to point out any bugs in the application that will result in system crashers or major errors in the application.

By performing acceptance tests on an application the testing team will deduce how the application will perform in production. There are also legal and contractual requirements for acceptance of the system.

When is it performed?

Acceptance Testing is performed after System Testing and before making the system available for actual use.

Who performs it?

  • Internal Acceptance Testing (Also known as Alpha Testing) is performed by members of the organization that developed the software but who are not directly involved in the project (Development or Testing). Usually, it is the members of Product Management, Sales and/or Customer Support.
  • External Acceptance Testing is performed by people who are not employees of the organization that developed the software.
  • Customer Acceptance Testing is performed by the customers of the organization that developed the software. They are the ones who asked the organization to develop the software for them. [This is in the case of the software not being owned by the organization that developed it.]
  • User Acceptance Testing (Also known as Beta Testing) is performed by the end users of the software. They can be the customers themselves or the customers’ customers.

Definition by ISTQB for Acceptance Testing

Formal testing with respect to user needs, requirements, and business processes conducted to determine  whether or not a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system.

Define Alpha-Beta Testing :

Alpha Testing

This test is the first stage of testing and will be performed amongst the teams (developer and QA teams). Unit testing, integration testing and system testing when combined are known as alpha testing. During this phase, the following will be tested in the application:
  • Spelling Mistakes
  • Broken Links
  • Cloudy Directions
The Application will be tested on machines with the lowest specification to test loading times and any latency problems.

Beta Testing

This test is performed after Alpha testing has been successfully performed. In beta testing a sample of the intended audience tests the application. Beta testing is also known as pre-release testing. Beta test versions of software are ideally distributed to a wide audience on the Web, partly to give the program a "real-world" test and partly to provide a preview of the next release. In this phase the audience will be testing the following:
  • Users will install, run the application and send their feedback to the project team.
  • Typographical errors, confusing application flow, and even crashes.
  • Getting the feedback, the project team can fix the problems before releasing the software to the actual users.
  • The more issues you fix that solve real user problems, the higher the quality of your application will be.
  • Having a higher-quality application when you release to the general public will increase customer satisfaction.

Thursday 7 March 2013

Testing (vs) Debugging differences between

Discuss the differences between Testing vs Debugging:

Testing

Testing activity is carried down by a team of testers, in order to find the defect in the software. Test engineers run their tests on the piece of software and if they encounter any defect (i.e. actual results don't match expected results), they report it to the development team. Along with the nature of defect, testers also have to report at what point the defect occurred and what happened due the occurrence of that defect. All this information will be used by development team to DEBUG the defect.

Debugging

Debugging is the activity which is carried out by the development team (or developer), after getting the test report from the testing team about defect(s) (you may note defects can also be reports by the client). The developer then tries to find the cause of the defect, in this quest he may need to go through lines of code and find which part of code in causing that defect. After finding out the bug, he tries to modify that portion of code and then he rechecks if the defect has been finally removed. After fixing the bug, developers send the software back to testers.

Testing vs Debugging:

testing-vs-debugging
Click on the image for Zoom view

Tuesday 5 March 2013

Gray-Box Testing Definition, Example

What is Grey / Gray box testing ?

Definition :
Gray Box Testing is a software testing method which is a combination of Black Box Testing method and White Box Testing method. In Black Box Testing, the internal structure of the item being tested is unknown to the tester and in White Box Testing the internal structure in known. In Gray Box Testing, the internal structure is partially known. This involves having access to internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level.

Gray Box Testing is named so because the software program, in the eyes of the tester is like a gray/semi-transparent box; inside which one can partially see.

What is Grey/Gray box testing ?

White-Box Testing Definition, Example, Application, Advantages, Disadvantages

What is White box Testing ?

Definition :
White Box Testing (also known as Clear Box Testing, Open Box Testing, Glass Box Testing, Transparent Box Testing, Code-Based Testing or Structural Testing) is a software testing method in which the internal structure/design/implementation of the item being tested is known to the tester.

The tester chooses inputs to exercise paths through the code and determines the appropriate outputs. Programming know-how and the implementation knowledge is essential. White box testing is testing beyond the user interface and into the nitty-gritty of a system.

white-box-testing

Sunday 3 March 2013

Unit Testing - Definition, Execution, Disadvantages

Unit Testing:


unit-testing
Click on the image for zoom view

A unit is smallest testable piece of software :

  • Can be compiled, linked, loaded
  • E.g functions/procedures, classes, interfaces
  • Normally done by programmer
  • Test cases written after coding

Top-down and Bottom-up Software Testing approaches

Top-down and Bottom-up Software Testing approaches

Types of Software Testing Approaches :

  • Top-down 
  • Bottom-up

software-testing-approaches

Top-down and bottom-up are both strategies of information processing and knowledge ordering, used in a variety of fields including software, humanistic and scientific theories (see systemics), and management and organization. In practice, they can be seen as a style of thinking and teaching.


Levels of Software Testing

What are the Levels of Software Testing ?

There are different levels during the process of Testing. In this chapter a brief description is provided about these levels.

levels-of-testing

Why test at different levels ?

  • Software development naturally splitto phases
  • Easily track bugs
  • Ensures a working subsystem / component / library
  • Software re-use more practical 

Levels of testing include the different methodologies that can be used while conducting Software Testing. Following are the main levels of Software Testing:

1) Functional Testing

  • Integration testing
  • System Testing
  • Regression Testing

    • Alpha Testing
    • Beta Testing

2) Non-Functional Testing

  • Performance Testing

    • Load Testing
    • Stress Testing

  • Usability Testing

    • UI VS Usability Testing

  • Security Testing

  • Portability Testing

Software Test Documents

What are the documents that are used for Software Testing ? (Or) What are the reports we create during Testing?

Testing documentation involves the documentation of artifacts which should be developed before or during the testing of Software.

Documentation for Software testing helps in estimating the testing effort required, test coverage, requirement tracking/tracing etc. This section includes the description of some commonly used documented artifacts related to Software testing such as:
  • Test Plan
  • Test Scenario
  • Test Case
  • Traceability Matrix
  • Test Script
  • Test Suite
  • Test fixture or test data
  • Test Harness
Lets discuss concerning every document intimately below:

What is a Software Defect, Bug and Debugging

What is a Software Defect / Bug?

A software bug is an
  • Error,
  • Flaw,
  • Failure,
  • (or) Fault

Saturday 2 March 2013

What is Software Testing - Software Testing Tutorials

What is Software Testing - Software Testing Tutorials ?

Testing is the process of evaluating a system or its component(s) with the intent to find that whether it satisfies the specified requirements or not. It consists of all test life cycle activities like static and dynamic testing concerned with planning, preparation and evaluation of software products to determine that the software products satisfy customers requirements and are fit for customers use. Software Testing is done to find software defects or failures in advance.

According to Wikipedia:

Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs.

Software testing can also be stated as the process of validating and verifying that a software program/application/product:
  • Meets the business and technical requirements that guided its design and development.
  • Works as expected; and
  • Can be implemented with the same characteristics.