Wednesday, March 18, 2009

Tuesday, March 17, 2009

Testing Types

Testing types are:
1.Unit Testing
Testing small testable parts of an application for proper operation is Unit Testing.Usually, unit testing is carried out by Software developers to ensure that the code developed by them meets the specified requirements and behaves as they intended.

2.Integration Testing
Testing the combined parts of an application to ensure that they function together correctly.
Different types of Integration testing are :

  • Bottom-up
  • Top-down
Bottom-up integration testing starts with unit testing, and then progress towards higher level combination of units called modules.Dummy modules called 'Drivers' are used for simulation of super-unit.
Top-down integration testing starts with the top integrated modules and then progress towards the smaller units.In this testing,dummy modules called 'stubs' are used to simulate smaller units.

3.System Testing
Testing based on overall requirements specification and it covers all combined parts of a system.The focus in system testing is typically to ensure that the product responds correctly to all possible input conditions and the product handles exceptions in a controlled and acceptable fashion.

4.Performance testing:
It determines how fast some aspect of a system performs under a particular workload. It can also serve to validate and verify other quality attributes of the system, such as scalability, reliability and resource usage.
Types

  • Load Testing
  • Stress testing
  • Endurance testing
  • Spike testing
Load Testing
This is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the application under a specific expected load. This load can be the expected concurrent number of users on the application performing a specific number of transaction within the set duration. This test will give out the response times of all the important business critical transactions. If the database, application server, etc are also monitored, then this simple test can itself point towards the bottleneck in the application.

Stress Testing
This testing is normally used to break the application. Double the number of users are added to the application and the test is run again until the application breaks down. This kind of test is done to determine the application's robustness in times of extreme load and helps application administrators to determine if the application will perform sufficiently if the current load goes well above the expected load.

Endurance Testing (Soak Testing)
This test is usually done to determine if the application can sustain the continuous expected load. Generally this test is done to determine if there are any memory leaks in the application.

Spike Testing
Spike testing, as the name suggests is done by spiking the number of users and understanding the behavior of the application whether it will go down or will it be able to handle dramatic changes in load.

5.Volume Testing
Volume testing refers to testing a software application with a certain amount of data. This amount can, in generic terms, be the database size or it could also be the size of an interface file that is the subject of volume testing.This testing can be done by increasing the database size or by increasing the size of an interface file.
Example:
A bank system tested for faults at much larger volumes of data.

6.Security Testing
Security testing is the process to determine that an IS (Information System) protects data and maintains functionality as intended.It is essential for software which processes confidential data and to prevent unauthorized access of data by others.

7.Usability Testing
Testing to determine whether the system/software meets the specified usability requirements.That is, testing for 'user friendliness'.
Usability goals based on:
System goals (the reason for having the system, the difference it is to make for the organisation or individual, its purpose and the tasks it will aid) &
The contexts of use for the software/system(who is to use the system and the environment in which it is to be used, user characteristics and user tasks).

8.Compatibility Testing
Testing how well software performs in a particular hardware/software/operating system/network/etc. environment.

9.Recovery Testing
Testing how well a system recovers from crashes, hardware failures or other catastrophic problems.

10.Installation Testing
Testing full, partial or upgrade install/uninstall progress.

11.Exploratory Testing
Exploratory Testing can be a creative, informal software test that is not based on formal test plans or test cases, testers may be learning the software as they test it.

12.Ad-hoc Testing
Ad-hoc testing is similar to exploratory testing, but often taken to mean that the testers have significant understanding of the software before testing it

13.Retesting
It is a type of testing that is performed to check for the functionality of an application by using different inputs after the fix is done for the bugs that were recorded during the earlier testing.

14.Regression Testing
Regression testing is performed on an application to ensure that the new fixes made do not have any sought of impact on the existing functionality. The system is expected to perform normally as per the requirement

15.Smoke Testing
It verifies the major functionality at high level in order to determine if further testing is possible. The Smoke test scenarios should emphasize breadth more than depth.All components should be touched, and every major feature should be tested briefly. If test fails, the build is returned to developers un-tested.

16.Sanity Testing
Sanity testing is cursory testing, and performed whenever cursory testing 'is' sufficient to prove the application is functioning according to specifications. Sanity testing is a subset of regression testing. It normally includes a set of core tests such as basic GUI functionality to demonstrate connectivity to the database, application servers, printers,etc.

17.Alpha Testing
Simulated or actual operational testing by potential users/customers or an independent test team at the developer's site.

18.Beta Testing
Beta testing comes after Alpha testing.Versions of the software, known as beta versions are released to a limited audience outside of the programming team.The software is released to groups of people so that further testing can ensure the product has few faults or bugs.

Friday, March 13, 2009

Web Testing Guide

Some details on web application testing with web testing test cases.
Web testing checklist.

1) Functionality Testing
2) Usability testing
3) Interface testing
4) Compatibility testing
5) Performance testing
6) Security testing

1) Functionality Testing:
Test for - all the links in web pages, database connection, forms used in the web pages for submitting or getting information from user, Cookie testing.

Check all the links:
  • Test the outgoing links from all the pages from specific domain under test.
  • Test all internal links.
  • Test links jumping on the same pages.
  • Test links used to send the email to admin or other users from web pages.
  • Test to check if there are any orphan pages.
  • Lastly in link checking, check for broken links in all above-mentioned links.

Test forms in all pages:
Forms are the integral part of any web site. Forms are used to get information from users and to keep interaction with them.
  • First check all the validations on each field.
  • Check for the default values of fields.
  • Wrong inputs to the fields in the forms.
  • Options to create forms if any, form delete, view or modify the forms.

Example:
Forget Password/ID in yahoo mail.
In Forget Password/ID, each step is different but dependent on other steps. So flow should get executed correctly. There are different field validations like email Ids, User info validations etc. All these validations should get checked in manual or automated web testing.

Cookies testing:
Cookies are small files stored on user machine. These are basically used to maintain the session mainly login sessions. Test the application by enabling or disabling the cookies in your browser options.

Database testing:
Data consistency is very important in web application. Check for data integrity and errors while editing, deleting, modifying the forms or doing any DB related functionality.
Check if all the database queries are executing correctly, data is retrieved correctly and also updated correctly.

2) Usability Testing:
Test for navigation:
Navigation means how the user surfs the web pages, different controls like buttons, boxes or how user using the links on the pages to surf different pages.

Usability testing includes:
Web site should be easy to use. Main menu should be provided on each page. It should be consistent.

Content checking:
Content should be logical and easy to understand. Check for spelling errors.
Other user information for user help: “Search in the site” option will help users to find content pages they are looking for easily and quickly.

3) Interface Testing:
The main interfaces are:
  • Web server and application server interface
  • Application server and Database server interface.
Check if all the interactions between these servers are executed properly &errors are handled properly.
If database or web server returns any error message for any query by application server, then the application server should catch and display these error messages appropriately to users.
Check what happens if user interrupts any transaction in-between?
Check what happens if connection to web server is reset in between?

4) Compatibility Testing:
Compatibility of your web site is very important testing aspect. See which compatibility test to be executed:
  • Browser compatibility
  • Operating system compatibility
  • Printing options
Browser compatibility:
Test web application on different browsers like Internet explorer, Firefox, Netscape navigator, AOL, Safari, Opera browsers with different versions.

OS compatibility:
Test web application on different operating systems like Windows, Unix, MAC, Linux, Solaris with different OS flavors.

Printing options:
If page-printing options are provided,then make sure fonts, page alignment, page graphics getting printed properly. Pages should be fit to paper size or as per the size mentioned in printing option.

5) Performance testing:

Web application should sustain to heavy load. Web performance testing should include:
  • Web Load Testing
  • Web Stress Testing
Test application performance on different internet connection speed.
Web Load testing:
Test if many users are accessing or requesting the same page. Can system sustain in peak load times? Site should handle many simultaneous user requests, large input data from users, Simultaneous connection to DB, heavy load on specific pages etc.

Stress testing:
Generally stress means stretching the system beyond its specification limits. Web stress testing is performed to break the site by giving stress and checked how system reacts to stress and how system recovers from crashes.

Stress is generally given on input fields, login and sign up areas.

In web performance testing web site functionality on different operating systems, different hardware platforms is checked for software, hardware memory leakage errors.

6) Security Testing:
Following are some test cases for web security testing:
  • Test by pasting internal url directly into browser address bar without login. Internal pages should not open.
  • Log in using username and password and browse internal pages.Then try changing url options directly.
  • Try some invalid inputs in input fields like login username, password, input text boxes. Check the system reaction on all invalid inputs.
  • Test if SSL is used for security measures. If used proper message should get displayed when user switch from non-secure http:// pages to secure https:// pages and vice versa.
  • All transactions, error messages, security breach attempts should get logged in log files somewhere on web server.

Thursday, March 12, 2009

Testing Techniques

1.Equivalence partitioning
Equivalence partitioning is a Software testing related technique with the goal:

  • To reduce the number of test cases to a necessary minimum.
  • To select the right test cases to cover all possible scenarios.
The equivalence partitions are usually derived from the specification of the component's behavior.An input has certain ranges which are valid and other ranges which are invalid.

Example: To check the month of a date. The valid range for the month is 1 to 12. This valid range is called a partition. Example for invalid range are <= 0 and >= 13.

2.Boundary value analysis(BVA)
To set up boundary value analysis test cases,determine
the boundaries at the interface of a software component.This has to be done by applying the equivalence partitioning technique. Boundary value analysis and equivalence partitioning are inevitably linked together.
The boundary value analysis can have 6 test cases. n, n-1,n+1 for the upper limit and n, n-1,n+1 for the lower limit.
are Testing Techniques
Guidelines for BVA are close to those for equivalence partitioning:
  • If an input condition specifies a range bounded by values a and b, test cases should be produced with values a and b, just above and just below a and b, respectively.
  • If an input condition specifies various values, test cases should be produced to exercise the minimum and maximum numbers.
  • If internal program data structures have prescribed boundaries, produce test cases to exercise that data structure at its boundary.
3.Cause-Effect Graphing TechniquesTesting Techniques
Cause-effect graphing is a test case design approach that offers a concise depiction of logical conditions and associated actions. The approach has four stages:
oftware Testing Techniques
  • Cause (input conditions) and effects (actions) are listed for a module and an identifier is allocated to each.
  • A cause-effect graph is created.
  • The graph is altered into a decision table.
  • Decision table rules are modified to test cases.



Wednesday, March 11, 2009

Testing Levels

Testing levels are:
  • Unit Testing
  • Integration Testing
  • System Testing
  • Acceptance Testing
Unit Testing
Testing small testable parts of an application for proper operation is Unit Testing.Usually, unit testing is carried out by Software developers to ensure that the code developed by them meets the specified requirements and behaves as they intended.
Integration Testing
Testing the combined parts of an application to ensure that they function together correctly.
Different types of Integration testing are :

  • Bottom-up
  • Top-down
Bottom-up integration testing starts with unit testing, and then progress towards higher level combination of units called modules.Dummy modules called 'Drivers' are used for simulation of super-unit.
Top-down integration testing starts with the top integrated modules and then progress towards the smaller units.In this testing,dummy modules called 'stubs' are used to simulate smaller units.
System Testing
Testing based on overall requirements specification and it covers all combined parts of a system.The focus in system testing is typically to ensure that the product responds correctly to all possible input conditions and the product handles exceptions in a controlled and acceptable fashion.
Acceptance Testing
Acceptance testing can mean one of two things:
1.A Smoke test is used as an acceptance test prior to introducing a build to the main testing process.
2.Acceptance testing performed by the customer is known as User Acceptance Testing(UAT).

Before shipping the final version of the software, Alpha and Beta Testing are often done additionally.
Alpha Testing
Simulated or actual operational testing by potential users/customers or an independent test team at the developer's site.
Beta Testing
Beta testing comes after Alpha testing.Versions of the software, known as beta versions are released to a limited audience outside of the programming team.The software is released to groups of people so that further testing can ensure the product has few faults or bugs.




Wednesday, March 4, 2009

Testing Life cycle

Typical cycle for testing:
  • Requirement Analysis- Testing should begin in the requirements phase of the software development life cycle.During the design phase, testers work with developers in determining what aspects of a design are testable and with what parameters those tests work.
  • Test Planning- Test Strategy(Approach to testing),Test Plan,Test Bed(platform for experimentation for large development projects) creation.
  • Test Development- Test Procedures,Test scenarios,Test Cases,Test Datasets,Test scripts to use in testing software.
  • Test Execution & Defect Tracking- Testers execute the software based on the plans & test cases.Capture,review & analyze test results and report any errors found, to the development team.
  • Retesting the resolved defects.Once a defect has been dealt with by the development team, it is retested by the testing team.
  • Regression Testing- Small test program to ensure that the modified or fixed software has not ruined anything and that the software produce as a whole is still working properly.
  • Test Reports- Once testing is completed, testers generate metrics and make final reports on their test effort and whether or not the software tested is ready for release.
  • Test Closure- Once the test meets exit criteria, the activities such as capturing results,logs,documents related to the project are archived and used as reference for future projects.
Testing life cycle may differ for each organization.




Testing Methods

Software Testing methods are traditionally divided into black-box testing and white-box testing.

Black-box/Behavioral testing is based on requirements and functionality. It is not based on any knowledge of internal design or code.
Example: User Acceptance Testing (UAT) and Systems Testing.
An example of Black- box testing is testing Search option. Use different data sets and see how the search option is working.

White-box/Glass-box testing relies on analyzing the code itself and the internal logic of the software.It uses techniques which range from highly technical or technology specific testing to things like code inspections.
Although white-box techniques can be used at any stage in a software product's life cycle, they tend to be found in Unit Testing activities.
It requires programming skills to identify all paths through the software. The tester chooses test case inputs to exercise paths through the code and determines the appropriate outputs

Typical white box test design techniques include

  • Control flow testing
  • Data flow testing
  • Branch Testing
There are principally three different possibilities of program testing

  • program internally, to check completeness and consistency
  • considering pre-defined rules
  • comparing the program with its specification or documentation.
White box testing:As with glass-box testing, you should test your code with each set of test data

Tuesday, March 3, 2009

Client Server Applicating Testing & Web Application Testing

In client-server application,application is loaded on server machine while the application exe is on every client machine. So there are 2 different components to test. This environment is mostly used in Intranet networks and aware of number of clients & servers and their locations in the test scenario.
Have to test broadly in categories like GUI on both sides, functionality, load client-server interaction, back-end.

In Web Application, application is loaded on the server whose location may or may not be known and no exe is installed in the client machine.So have to test the application on different web browsers.
Web application is mainly tested for browser compatibility & operating system compatibility, error handling, static pages, backend testing and load testing.



A client-server application is a two tier application.
This has forms & reporting at front-end (monitoring & manipulations are done) [using vb, vc++, core java, c, c++, d2k, power builder etc.,] -> database server at the backend [data storage & retrieval) [using ms access, sql server, oracle, sybase, mysql, quadbase etc.,].
The tests performed on these applications would be : User interface testing, Functionality testing, Compatibility testing, Intersystem testing.

A web-application is a three-tier application.
This has a browser (monitors data) [monitoring is done using html, dhtml, xml, javascript]-> webserver (manipulates data) [manipulations are done using programming languages or scripts like adv java, asp, jsp, vbscript, javascript, perl, coldfusion, php] -> database server (stores data) [data storage and retrieval is done using databases like oracle, sql server, sybase, mysql].
The types of tests, which can be applied on this type of applications, are: User interface testing for validation & user friendliness, Functionality testing to validate behaviors, i/p, error handling, o/p, manipulations, services levels, order of functionality, links, content of web page & backend coverage’s, Security testing, Browser compatibility, Load / stress testing, Interoperability testing, Storage & data volume testing.

Software Testing Vs Quality Assurance

Software Testing is the process of evaluating a system by manual or automated means to verify that the system meets the requirements or whether the expected result is equal to the actual result .It is oriented to 'detection'.
It is 'product oriented'.Testing comes under Quality control and it is focused towards correcting the defects

Software QA involves the entire software development process-monitoring and improving the process, making sure that they agreed-upon standards and procedures are followed, and ensuring that problems are dealt with. It is oriented to 'prevention'.
It is 'process oriented'.It is focused towards preventing the defects.