Sunday, June 5, 2011

Some Important Testing Terms.

Smoke and Sanity Testing

This tutorial explains with a real world scenario, what Sanity/Smoke Testing is, & why it is important.
• Consider a scenario, when after fixing defects of integration testing , the system is made available to the testing team for system testing
• You look at the initial screen , system looks fine and delay system test execution for the next day since you have other critical testing requirements to attend to
• To avoid such situation sanity also know SMOKE testing is done to check critical functionalities of the system before its is accepted for major testing. Sanity testing is quick and is non- exhaustive. Goal is not to find defects but to check system health

Non Functional Testing

• Apart from Functional testing, non – functional requirements like performance, usability, and load factor are also important.
• Performance testing is carried out to check & fine tune system response times. The goal of performance testing is to reduce response time to an acceptable level
• That’s all to Types of Testing

There are three testing types

1) Functional
2) Non – Functional
3) Maintenance.

Web Application Testing.

What is Web Testing?

Web Testing in simple terms is checking your web application for potential bugs before it’s made live or before code is moved into

Web Application Testing Checklist:

Some or all of the following testing types may be performed depending on your web testing requirements.

1. Functionality Testing:

This is used to check of your product is as per the specifications you intended for it as well as the functional requirements you charted out for it in your developmental documentation.
Test all links in your WebPages are working correctly and make sure there are no broken links. Links to be checked will include -
• Outgoing links
• Internal links
• Anchor Links
• Mailto Links

Test Forms are working as expected. This will include-

• Scripting checks on the form are working as expected. For example- if a user does not fill a mandatory field in a form an error message is shown.
• Check default values are being populated
• Once submitted , the data in the forms is submitted to a live database or is linked to an working email address
• Forms are optimally formatted for better readability

Test Cookies are working as expected. Cookies are small files used by websites to primarily remember active user sessions so you do not to log in every time you visit a website. Cookie Testing will include
• Testing cookies (sessions) are deleted either when cache is cleared or when they reach their expiry.
• Delete cookies (sessions) and test that login credentials are asked for when you next visit the site.

Test HTML and CSS to ensure that search engines can crawl your site easily. This will include

• Checking for Syntax Errors
• Readable Color Schemas
• Standard Compliance. Ensure standards such W3C, IETF, ISO, ECMA, or WS-I are followed.
Test business workflow- This will include
• Testing your end - to - end workflow/ business scenarios which takes the user through a series of webpage's to complete.
• Test negative scenarios as well , such that when a user executes an unexpected step , appropriate error message or help is shown in your web application.
Tools that can be used: QTP , IBM Rational, Selenium

2. Usability testing:

Usability testing has now become a vital part of any web based project. It can carry out by testers like you or a small focus group similar to the target audience of the web application.
Test the site Navigation:
• Menus , buttons or Links to different pages on your site should be easily visible and consistent on all WebPages
Test the Content:
• Content should be legible with no spelling or grammatical errors.
• Images if present should contain and "alt" text

3.Interface Testing:

Three areas to be tested here are - Application, Web and Database Server
Application: Test requests are sent correctly to the Database and output at the client side is displayed correctly. Errors if any must be caught by the application and must be only shown to the administrator and not the end user.

Web Server: Test Web server is handling all application requests without any service denial.

Database Server: Make sure queries sent to the database give expected results.
Test system response when connection between the three layers (Application, Web and Database) can not be established and appropriate message is shown to the end user.

4.Database Testing:

Database is one critical component of your web application and stress must be laid to test it thoroughly. Testing activities will include-
• Test if any errors are shown while executing queries
• Data Integrity is maintained while creating, updating or deleting data in database.
• Check response time of queries and fine tune them if necessary.
• Test data retrieved from your database is shown accurately in your web application

5. Compatibility testing.

Compatibility tests ensure that your web application displays correctly across different devices. This would include-
Browser Compatibility Test: Same website in different browsers will display differently. You need to test if your web application is being displayed correctly across browsers, JavaScript, AJAX and authentication is working fine. You may also check for Mobile Browser Compatibility. The rendering of web elements like buttons, text fields etc changes with change in Operating System. Make sure your website works fine for various combination of Operating systems such as Windows, Linux, Mac and Browsers such as Fire fox, Internet Explorer, Safari etc.

6.Performance Testing:

This will ensure your site works under all loads. Testing activities will include but not limited to -
• Website application response times at different connection speeds
• Load test your web application to determine its behavior under normal and peak loads
• Stress test your web site to determine its break point when pushed to beyond normal loads at peak time.
• Test if a crash occurs due to peak load , how does the site recover from such an event
• Make sure optimization techniques like gzip compression , browser and server side cache enabled to reduce load times
Tools that can be used: Loadrunner, JMeter

7. Security testing:

Security testing is vital for e-commerce website that store sensitive customer information like credit cards. Testing Activities will include-
• Test unauthorized access to secure pages should not be permitted
• Restricted files should not be downloadable without appropriate access
• Check sessions are automatically killed after prolonged user inactivity
• On use of SSL certificates, website should re-direct to encrypted SSL pages.

Tools that can be used: Babel Enterprise, BFBTester and CROSS

8. Crowd Testing:

You will select a large number of people (crowd) to execute tests which otherwise would have been executed a select group of people in the company. Crowd sourced testing is an interesting and upcoming concept and helps unravel many a unnoticed defects.

Tuesday, May 24, 2011

Software Testing Notes

Testing method where user is not required:

Functional Testing:
In this type of testing, the software is tested for the functional requirements. The tests are written in order to check if the application behaves as expected.

Stress Testing:
The application is tested against heavy load such as complex numerical values, large number of inputs, large number of queries etc. which checks for the stress/load the applications can withstand.
Load Testing:
The application is tested against heavy loads or inputs such as testing of web sites in order to find out at what point the web-site/application fails or at what point its performance degrades.

Ad-hoc Testing:
This type of testing is done without any formal Test Plan or Test Case creation. Ad-hoc testing helps in deciding the scope and duration of the various other testing and it also helps testers in learning the application prior starting with any other testing.

Exploratory Testing:
This testing is similar to the ad-hoc testing and is done in order to learn/explore the application.

Usability Testing:
This testing is also called as ‘Testing for User-Friendliness’. This testing is done if User Interface of the application stands an important consideration and needs to be specific for the specific type of user.

Smoke Testing:
This type of testing is also called sanity testing and is done in order to check if the application is ready for further major testing and is working properly without failing up to least expected level.

Recovery Testing:
Recovery testing is basically done in order to check how fast and better the application can recover against any type of crash or hardware failure etc. Type or extent of recovery is specified in the requirement specifications.

Volume Testing:
Volume testing is done against the efficiency of the application. Huge amount of data is processed through the application (which is being tested) in order to check the extreme limitations of the system.

Testing where user plays a role/user is required:

User Acceptance Testing:
In this type of testing, the software is handed over to the user in order to find out if the software meets the user expectations and works as it is expected to.


Alpha Testing:
In this type of testing, the users are invited at the development center where they use the application and the developers note every particular input or action carried out by the user. Any type of abnormal behavior of the system is noted and rectified by the developers.

Beta Testing:
In this type of testing, the software is distributed as a beta version to the users and users test the application at their sites. As the users explore the software, in case if any exception/defect occurs that is reported to the developers

What is a White Box Testing Strategy?

White box testing strategy deals with the internal logic and structure of the code. White box testing is also called as glass, structural, open box or clear box testing. The tests written based on the white box testing strategy incorporate coverage of the code written, branches, paths, statements and internal logic of the code etc.

In order to implement white box testing, the tester has to deal with the code and hence is needed to possess knowledge of coding and logic i.e. internal working of the code. White box test also needs the tester to look into the code and find out which unit/statement/chunk of the code is malfunctioning.

Advantages of White box testing are:
i) 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.
ii) The other advantage of white box testing is that it helps in optimizing the code
iii) It helps in removing the extra lines of code, which can bring in hidden defects.

Disadvantages of white box testing are:
i) As knowledge of code and internal structure is a prerequisite, a skilled tester is needed to carry out this type of testing, which increases the cost.
ii) And it is nearly impossible to look into every bit of code to find out hidden errors, which may create problems, resulting in failure of the application.

Types of testing under White/Glass Box Testing Strategy:

Unit Testing:
The developer carries out unit testing in order to check if the particular module or unit of code is working fine. The Unit Testing comes at the very basic level as it is carried out as and when the unit of the code is developed or a particular functionality is built.

Static and dynamic Analysis:
Static analysis involves going through the code in order to find out any possible defect in the code. Dynamic analysis involves executing the code and analyzing the output.

Statement Coverage:
In this type of testing the code is executed in such a manner that every statement of the application is executed at least once. It helps in assuring that all the statements execute without any side effect.

Branch Coverage:
No software application can be written in a continuous mode of coding, at some point we need to branch out the code in order to perform a particular functionality. Branch coverage testing helps in validating of all the branches in the code and making sure that no branching leads to abnormal behavior of the application.

Security Testing:
Security Testing is carried out in order to find out how well the system can protect itself from unauthorized access, hacking – cracking, any code damage etc. which deals with the code of application. This type of testing needs sophisticated testing techniques.

Mutation Testing:
A kind of testing in which, the application is tested for the code that was modified after fixing a particular bug/defect. It also helps in finding out which code and which strategy of coding can help in developing the functionality effectively.

Besides all the testing types given above, there are some more types which fall under both Black box and White box testing strategies such as: Functional testing (which deals with the code in order to check its functional performance), Incremental integration testing (which deals with the testing of newly added code in the application), Performance and Load testing (which helps in finding out how the particular code manages resources and give performance etc.) etc.

Introduction

When thinking of the types of software testing, many mistakenly equate the mechanism by which the testing is performed with types of software testing. The mechanism simply refers to whether you are using manual or automated software testing. This article goes beyond that simple mechanism-based definition to define the intrinsic nature of the tests themselves.

Types of Software Testing

There are a number of types of software testing, categorized by what is being tested and the purpose, or objective, of the test. The objectives range from usability to disaster recovery. For many organizations the most common testing types are: functionality testing, compatibility testing, performance testing, scalability testing, usability testing, application security testing, accessibility testing, and regulatory-compliance testing. A short list follows:

  1. QA Testing - QA Testing is loosely defined vernacular for a combination of requirements-based, regression and feature level testing performed during post code-delivered phases such as the system, integration and final test phase, to assess and assure the quality of the product.

Note: Currently, the term "QA testing" is widely misused to refer to functionality validation and verification testing. This is technically incorrect, but since its use is pervasive, we offer the above definition for it.

  1. Functionality, or feature-level, testing - Functionality, or feature-level, testing is performed to verify the proper functionality of the software. It may include testing of the mathematical and algorithm correctness of scientific and financial software, as well as testing of GUI functionality.
  2. Compatibility testing - Compatibility testing ensures that the software is compatible with the hardware, operating systems, and other software packages that it will be working with.
  3. Performance testing - Performance testing determines how well the software performs in terms of the speed of computations or responsiveness to the user.
  4. Scalability testing - Scalability testing is performed to ensure that the software will function well as the number of users, size of data sets, or other factors change from small to large values.
  5. Usability testing - Usability testing ensures that the software has a good level of ease of use.
  6. Application security testing - Application security testing determines how well the software can defend against attacks, such as firewall software securing a computer against Internet viruses and worms.
  7. Accessibility testing - Accessibility testing is performed to ensure that the software will be accessible under various scenarios by the intended users.
Regulatory-compliance testing - Regulatory-compliance testing is performed to ensure that the software is in compliance with all applicable regulations

Monday, May 23, 2011

Software Testing Some Importent Tips

What are the steps to perform software testing?
  • Understand requirements and business logic
  • Determine required standards and processes
  • Set priorities, and determine scope and limitations of tests
  • Determine test approaches and methods
  • Determine test environment, test ware, test input data requirements
  • Set milestones and prepare test plan document
  • Write test cases
  • Have needed reviews/inspections/approvals of test cases
  • Set up test environment
  • Execute test cases
  • Evaluate and report results
  • Bug Tracking and fixing
  • Retesting or regression testing if needed
  • Update test plans, test cases, test results, traceability matrix etc.
. What are the components of a bug report?
  • Application name
  • The function, module, name
  • Bug ID
  • Bug reporting date
  • Status
  • Test case ID
  • Bug description
  • Steps needed to reproduce the bug
  • Names and/or descriptions of file/data/messages/etc. used in test
  • Snapshot that would be helpful in finding the cause of the problem
  • Severity estimate
  • Was the bug reproducible?
  • Name of tester
  • Description of problem cause (filled by developers)
  • Description of fix (filled by developers)
  • Code section/file/module/class/method that was fixed (filled by developers)
  • Date of fix (filled by developers)
  • Date of retest or regression testing
  • Any remarks or comments
What is configuration management?

It covers the processes used to control, coordinate, and track: code, requirements, documentation, problems, change requests, designs, tools / compilers / libraries / patches, changes made to them, and who makes the changes.

How can web based applications be tested?

Apart from functionality consider the following:
  • What are the expected loads on the server and what kind of performance is expected on the client side?
  • Who is the target audience?
  • Will down time for server and content maintenance / upgrades be allowed?
  • What kinds of security will be required and what is it expected to do?
  • How reliable are the site's Internet / intranet connections required to be?
  • How do the internet / intranet affect backup system or redundant connection requirements and testing?
  • What variations will be allowed for targeted browsers?
  • Will there be any standards or requirements for page appearance and / or graphics throughout a site or parts of a site?
  • How will internal and external links be validated and updated?
  • How are browser caching and variations in browser option settings?
  • How are flash, applets, java scripts, ActiveX components, etc. to be maintained, tracked, controlled, and tested?

From the usability point of view consider the following:

  • Pages should be 3-5 screens longer.
  • The page layouts and design elements should be consistent throughout the application / web site.
  • Pages should be as browser-independent or generate based on the browser-type.
  • There should be no dead-end pages. A link to a contact person or organization should be included on each page.
Read More about Software Testing Tutorials