Thursday 26 April 2012

SQL Joins

SQL Joins:

To retrieve data from multiple tables, the SQL Server allows you to apply JOINS.

USING AN INNER JOIN:
When an inner join is applied, only rows with values satisfying the join condition in the common column are displayed.
A join is implemented by using the SELECT statement, where the SELECT list contains the name of the columns to be retrieved from the tables. The FROM clause contains the names of the tables from which combined data is to be retrieved. The WHERE clause specifies the condition, with a comparison operator, based on which the tables will be joined.
The syntax of applying an inner join in the SELECT query is:
                     SELECT column_name1,column_name_2 FROM table1_name JOIN table2_name
                       ON table1_name.ref_column_name join_operator table2_name.ref_column_name

where,
table1_name and table2_name are the names of the tables that are joined
join_operator is the comparison operatror based on which the join is applied
table1_name.ref_column_name & table2_name.ref_column_name are the names of the columns on which the join is applied.

Example:

SELECT e.employeeid, e.title, eph.rate, eph.payfrequency
FROM Employee e JOIN EmployeePayHistory eph ON e.employeeid=eph.employeeid




In the preceding query, the Employee and EmployeePayHistory tables are joined on the common column,employeeid. The query also assigns e as tha alias of the Employee table and eph as the alias of the EmployeePayHistory table. The column names are also listed with the table alias names.

USING AN OUTER JOIN:
In comparison to an inner join, an outer join displays the result set containing all the rows from one table and the matching rowsfrom another table. For example, if you create an outer join on Table A and Table B, it will show you all the records of Table A and only those records from TableB for which the condition on the common column holds true.

An outer join displays NULL for the columns of the related table where it does not find matching records. The syntax of applying an outer join is:
SELECT column_name, column_name FROM table1_name [LEFT|RIGHT|FULL] OUTER JOIN table2_name ON table1_name.ref_column_name join_operator table2_name.ref_column_name

An Outer join is of three types:
- Left outer join
- Right outer join
- Full outer join

Using a Left Outer Join
A left outer join returns all rows from the table specified on the left side of the LEFT OUTER JOIN keyword and the matching rows from the table specified on the right side. The rows in the table specified on the left side for which the matching rows are not found in the table specified on the right side, NULL values are displayed in the columns that get data from the table specified on the right side.
Using a Right Outer Join
A right outer join returns all the rows from the table specified on the right side of the RIGHT OUTER JOIN keyword and the matching rows from the table specified on the left side.
Using a Full Outer Join
A full outer join is a combination of left outer join and right outer join. This join returns all the matching and non-matcing rows from both the tables. However, the matching records are displayed only once. In case of non-matching rows, a NULL value is displayed for the columns for which data is not available. 
USING A CROSS JOIN:
A CROSS JOIN, also known as cartesian product, between two tables joins each row from one table with each row of other table.
USING AN EQUI JOIN:
An EQUI JOIN is the same as an inner join and joins tables with the help of a foreign key. However, an equi join is used to display all the columns from both the tables. The common column from all the joining tables is displayed.
USING A SELF JOIN:
In a SELF JOIN, a table is joined with itself. As a result, one row in a table correlates with other rows in the same table. In a self join, a table name is used twice in the query. Therefore, to differentiate the two instances of a single table, the table is given two alias names.



















Retrieving Data using SELECT statement

The SQL SELECT Statement

The SELECT statement is used to select data from a database.
The result is stored in a result table, called the result-set.

SQL SELECT Syntax

SELECT column_name(s)
FROM table_name
and
SELECT * FROM table_name
Note Note: SQL is not case sensitive. SELECT is the same as select.

An SQL SELECT Example

The "Persons" table:
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Now we want to select the content of the columns named "LastName" and "FirstName" from the table above.
We use the following SELECT statement:
SELECT LastName,FirstName FROM Persons
The result-set will look like this:
LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari


SELECT * Example

Now we want to select all the columns from the "Persons" table.
We use the following SELECT statement:
SELECT * FROM Persons
Tip: The asterisk (*) is a quick way of selecting all columns!
The result-set will look like this:
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

SQL-RDBMS concepts

What is RDBMS?

RDBMS stands for Relational Database Management System. RDBMS is the basis for SQL, and for all modern database systems like MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access.
A Relational database management system (RDBMS) is a database management system (DBMS) that is based on the relational model as introduced by E. F. Codd.

What is table ?

The data in RDBMS is stored in database objects called tables. The table is a collection of related data entries and it consists of columns and rows.
Remember, a table is the most common and simplest form of data storage in a relational database. Following is the example of a CUSTOMERS table:
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

What is field?

Every table is broken up into smaller entities called fields. The fields in the CUSTOMERS table consist of ID, NAME, AGE, ADDRESS and SALARY.
A field is a column in a table that is designed to maintain specific information about every record in the table.

What is record, or row?

A record, also called a row of data, is each individual entry that exists in a table. For example there are 7 records in the above CUSTOMERS table. Following is a single row of data or record in the CUSTOMERS table:
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+
A record is a horizontal entity in a table.

What is column?

A column is a vertical entity in a table that contains all information associated with a specific field in a table.
For example, a column in the CUSTOMERS table is ADDRESS which represents location description and would consist of the following:
+-----------+
| ADDRESS   |
+-----------+
| Ahmedabad |
| Delhi     |
| Kota      |
| Mumbai    |
| Bhopal    |
| MP        |
| Indore    |
+----+------+

What is NULL value?

A NULL value in a table is a value in a field that appears to be blank which means A field with a NULL value is a field with no value.
It is very important to understand that a NULL value is different than a zero value or a field that contains spaces. A field with a NULL value is one that has been left blank during record creation.

SQL Constraints:

Constraints are the rules enforced on data columns on table. These are used to limit the type of data that can go into a table. This ensures the accuracy and reliability of the data in the database.
Contraints could be column level or table level. Column level constraints are applied only to one column where as table level constraints are applied to the whole table.
Following are commonly used constraints available in SQL:
  • NOT NULL Constraint: Ensures that a column cannot have NULL value.
  • DEFAULT Constraint : Provides a default value for a column when none is specified.
  • UNIQUE Constraint: Ensures that all values in a column are different.
  • PRIMARY Key: Uniquely identified each rows/records in a database table.
  • FOREIGN Key: Uniquely identified a rows/records in any another database table.
  • CHECK Constraint: The CHECK constraint ensures that all values in a column satisfy certain conditions.
  • INDEX: Use to create and retrieve data from the database very quickly.

Data Integrity:

The following categories of the data integrity exist with each RDBMS:
  • Entity Integrity : There are no duplicate rows in a table.
  • Domain Integrity : Enforces valid entries for a given column by restricting the type, the format, or the range of values.
  • Referential integrity : Rows cannot be deleted, which are used by other records.
  • User-Defined Integrity : Enforces some specific business rules that do not fall into entity, domain, or referential integrity.

SQL STATEMENTS

The SQL statements can be categorized as:

 DATA DEFINITION LANGUAGE (DDL): is used by to define the database, data types, structures, and constraints on the data. Some of the DDL commands are:
  • CREATE: used to create new database object such as table.
  • ALTER: used to modify the database object.
  • DROP: used to delete the objects.
DATA MANIPULATION LANGUAGE (DML): is used to manipulate the data in the database objects. Some of the DML commands are:
  • INSERT: used to insert a new record in the table
  • UPDATE: used to modify an existing record in the table
  • DELETE: used to delete a record from a table
DATA CONTROL LANGUAGE (DCL): is used to control the data access in the database. Some of the DCL commands ae:
  • GRANT:used to assign permissions to the user to access a database object.
  • REVOKE:used to deny permissions to users to access the database.
DATA QUERY LANGUAGE (DQL): is used to query data from the database objects. SELECT is the DQL command that is used to select data from the database in different ways and formats.

Denormalization

The intentional introduction of redundancy in a table in order to improve performance is called denormalization.

Normal Forms (1NF, 2NF, 3NF, BCNF)

First Normal Form (1NF): A table is said to be in 1NF when each cell of the table contains precisely one value.
Second Normal Form (2NF):  A table is said to be in 2NF when it is in 1NF and every attribute in the row is functionally dependent upon the whole key, and not just part of the key.
Third Normal Form (3NF): A table is said to be in 3NF when it is in 2NF and every non-key attribute is functionally dependent only on the primary key.
Boyce-Codd Normal Form (BCNF): The original definition of 3NF was inadequate in some situations. It was not satisfactory for the tables:
- that had multiple candidate keys
- where multiple candidate keys were composite
- where the multiple candidate keys overlapped.

Therefore, a new normal form, the BCNF was introduced. You must understand that in tables where the above three conditions do not apply, you can stop at the 3NF. In such cases, the 3NF is the same as the BCNF.

A relation is in the BCNF if and only if every determinant is a candidate key.

Normalization

Normalization is used to reduce the redundancy and duplicity.

definition: Normalization is a simple scientific method of breaking down complex table structures into simple table structures by using certain rules.

Some rules that should be followed to achieve a good database design are:

- Each table should have an identifier.
- Each table should store data for a single type of entity.
- Columns that accept NULLs should be avoided.
- The repetition of values or columns should be avoided.

Software testing interview question for experienced

1. In an application currently in production, one module of code is being modified. Is it necessary to re-test the whole application or is it enough to just test functionality associated with that module?
2. What is the most challenging situation you had during testing?
3. What are you going to do if there is no Functional Spec or any documents related to the system and developer who wrote the code does not work in the company anymore, but you have system and need to test?
4. What is difference between Performance Testing, Load Testing and Stress Testing?
Q Customer has reported severe defects in Daily balance report. The customer
is unhappy that the problem is not fixed even after a week. What action you
as a PM will take to restore confidence of customer and ensure that this will
not happen in suture?

Answer:
Conflict resolution – Get on your customer wavelength. Get the facts and ask
questions, get detail info and take notes listen carefully. Establish and initiate an
action program(admit error if it is there, negotiate satisfactory solution, state the
solution and get agreement, take action and follow up with customer). Finally
establish proper daily problem review process to prevent such problems in future.
Q. It’s observed that the testers in your organization are performing tests on the
deliverable even after significant defects have been found. This has resulted
in unnecessary testing of little value because re-testing needs to be done
after defects have been rectified. You are the test manager and going to
update the test plan with recommendations on when to stop testing. List the
recommendations you are going to make.

Answer:
Following steps need to be taken .
a) Acceptance criteria should tighten
b) Test cases should be re-evaluated (preferably peer review)
c) If possible more test cases should be added. With boundary value and
equivalence class partition cases.
d) More test cases with invalid condition should be added
e) Stop criteria needs to be modified
Q. You are newly appointed as a test lead in an organization which uses manual
testing. Your boss wants you to put forth three testing tools and their features
to create awareness about the testing tools in the top management. Suggest
any three testing tools for your test Environment and why do you suggest
them?

Answer:The third question is very important one. You can write about test Director, Win
runner/Load runner, McCable or any other coverage tool. Test director is useful to
track defect. WR or LR to do functionality/Load testing, Coverage tool to check the
code coverage thereby helping in White box testing.
Q. You are working on a project, where the requirements change dynamically.
The data in the project comes from various ends (from various Platforms) and
are inter-dependent. You see this as a big risk in the project. How would you
plan accordingly?

Answer:
Give a Plan which takes care of the risk and is identified in the Risk Areas. Say that
the testing scope would concentrate more on Data driven tests etc.

 ALL THE BEST!!!

software testing interview questions for freshers?

different SDLC models?
steps in SDLC?
V-model?
Agile model?
what is agile testing model?
difference between black box and white box testing?
sanity testing?
smoke testing?
adhoc testing?
exploratory testing?
what is test plan?
what is test strategy?
What is STLC?
Defect life cyle?
what is traceability matrix?
difference between performance testing, load testing, stress testng?
types of testing?
what is test bed?
what is test setup environment?
what are the skills a test engineer should have?
what is web service and how do you test web service?
how to write testcases ( for example they may ask you to write test cases for pen)


These are the basic a questions a fresher faces at the time of interview..

Be prepared with these basics

Post me if do not know answer for any of these questions

ALL THE BEST!!!!


Game testing tips and considerations


Video games are also considered as software that needs sufficient testing before releasing in the market. In fact, many software developers want to become game developers.

Game testing is the process of verifying game environment and behavior. Its occurrence in game development depends on its budget. High-budgeted projects test their products when the draft version is finished. On the other hand, low-budgeted games might only support testing of the probable final version. Other types like public betas and stress tests are also used in actual game industry, but it less systematic and scientific because testing is being done by simply playing the game from the start to finish and reporting random bugs that occur and detected accidentally. Scientific and methodological approaches in testing have the following purposes:


Game Functionality
This includes gaming environment, textures, and elements. Issues like stability and game messages are also included in this purpose. The exciting part about functional testing is verifying the correctness of game elements, because for example, checking if weapons like swords can really incur damage to enemies and of course, the most practical way to do it is to play the actual game.

Game Compliance
Most games are not stand-alone system. They need to interact with hardware devices and this is especially true for console games. Protocol compatibility and hardware pin assignments should be compatible for both software and hardware side. This is often seen as an area outside the scope of game testers because it now deals with issues beyond the gaming environment.

Game Localization
It is  the common knowledge that most RPGs and other story-based games came from Japan. Thus, scripts may have inconsistencies when translated from one language to another. Unlike functional testers who need to play the actual game, localization testers often face a spreadsheet-like interface where all game scripts and its translation are listed.

Game Soaking
Soaking simply means exposing the game for an exaggerated long period of execution. This is to test if the game will exhibit unreleased segments of memory and mathematical rounding discrepancies. Rounding errors can be problematic for games because it can affect its pointing system, health value consumption, and other game parameters that involve numerical computation.

Games need thorough evaluation to deliver maximum playing experience. For this reason, its testing focuses on some crucial part and breakdown to achieve realistic game behavior. Listed below are some game testing components:
  • Menus, sub menus, and its functions 
  • Graphics, texture, and animation 
  • Character audio, sound effects, and special effect 
  • Game difficulty level 
  • World, dungeons, and map settings 
  • Player, action, and inanimate attributes 
  • Artificial intelligence for the defense and offense mode 
  • Game flow, logic, and sequencing  
  • Life points, magic points, and player points 
  • Game pad vibration, analog stick, and other hardware issues

Game testing tips and considerations are greatly focused in game graphics. For example, testers should verify a realistic behavior when multiple objects overlapped with each other. Collision effects between two objects should also be realistic. This is especially true for games involved in sports. In terms of considerations, testers should be aware of the so-called crack bugs and placeholder. This often appears in the development period. Crack bugs are also called false bugs because it is just the result of misjudgment by the tester, while placeholders are shapes used to cover temporarily some part of the game screen while the real image is not yet finished.

How to test web applications?

Let’s have first 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. So what should be checked on these forms?
  • 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.
Let’s take example of the search engine project currently I am working on, In this project we have advertiser and affiliate signup steps. Each sign up step is different but dependent on other steps. So sign up flow should get executed correctly. There are different field validations like email Ids, User financial info validations. 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. Test if the cookies are encrypted before writing to user machine. If you are testing the session cookies (i.e. cookies expire after the sessions ends) check for login sessions and user stats after session end. Check effect on application security by deleting the cookies. (I will soon write separate article on cookie testing)
Validate your HTML/CSS:
If you are optimizing your site for Search engines then HTML/CSS validation is very important. Mainly validate the site for HTML syntax errors. Check if site is crawlable to different search engines.
Database testing:
Data consistency is very important in web application. Check for data integrity and errors while you edit, delete, modify the forms or do any DB related functionality.
Check if all the database queries are executing correctly, data is retrieved correctly and also updated correctly. More on database testing could be load on DB, we will address this in web load or performance testing below.
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. Instructions should be provided clearly. Check if the provided instructions are correct means whether they satisfy purpose.
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. Use of dark colors annoys users and should not be used in site theme. You can follow some standards that are used for web page and content building. These are common accepted standards like as I mentioned above about annoying colors, fonts, frames etc.
Content should be meaningful. All the anchor text links should be working properly. Images should be placed properly with proper sizes.
These are some basic standards that should be followed in web development. Your task is to validate all for UI testing
Other user information for user help:
Like search option, sitemap, help files etc. Sitemap should be present with all the links in web sites with proper tree view of navigation. Check for all links on the sitemap.
“Search in the site” option will help users to find content pages they are looking for easily and quickly. These are all optional items and if present should be validated.
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 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
  • Mobile browsing
  • Printing options
Browser compatibility:
In my web-testing career I have experienced this as most influencing part on web site testing.
Some applications are very dependent on browsers. Different browsers have different configurations and settings that your web page should be compatible with. Your web site coding should be cross browser platform compatible. If you are using java scripts or AJAX calls for UI functionality, performing security checks or validations then give more stress on browser compatibility testing of your web application.
Test web application on different browsers like Internet explorer, Firefox, Netscape navigator, AOL, Safari, Opera browsers with different versions.
OS compatibility:
Some functionality in your web application is may not be compatible with all operating systems. All new technologies used in web development like graphics designs, interface calls like different API’s may not be available in all Operating Systems.
Test your web application on different operating systems like Windows, Unix, MAC, Linux, Solaris with different OS flavors.
Mobile browsing:
This is new technology age. So in future Mobile browsing will rock. Test your web pages on mobile browsers. Compatibility issues may be there on mobile.
Printing options:
If you are giving page-printing options 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.
In 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.
  • If you are logged in using username and password and browsing internal pages then try changing url options directly. I.e. If you are checking some publisher site statistics with publisher site ID= 123. Try directly changing the url site ID parameter to different site ID which is not related to logged in user. Access should denied for this user to view others stats.
  • Try some invalid inputs in input fields like login username, password, input text boxes. Check the system reaction on all invalid inputs.
  • Web directories or files should not be accessible directly unless given download option.
  • Test the CAPTCHA for automates scripts logins.
  • 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.
I think I have addressed all major web testing methods. I have worked for around 2 years out of my testing career on web testing. There are some experts who have spent their whole career life on web testing. If I missed out addressing some important web testing aspect then let me know in comments below. I will keep on updating the article for latest testing information.

BUG LIFE CYCLE STAGES

Introduction:Bug can be defined as the abnormal behavior of the software. No software exists without a bug. The elimination of bugs from the software depends upon the efficiency of testing done on the software. A bug is a specific concern about the quality of the Application under Test (AUT).

Bug Life Cycle:In software development process, the bug has a life cycle. The bug should go through the life cycle to be closed. A specific life cycle ensures that the process is standardized. The bug attains different states in the life cycle. The life cycle of the bug can be shown diagrammatically as follows:

The different states of a bug can be summarized as follows:
1. New
2. Open
3. Assign
4. Test
5. Verified
6. Deferred
7. Reopened
8. Duplicate
9. Rejected and 10. Closed

Description of Various Stages:
1. New: When the bug is posted for the first time, its state will be “NEW”. This means that the bug is not yet approved.

2. Open: After a tester has posted a bug, the lead of the tester approves that the bug is genuine and he changes the state as “OPEN”.

3. Assign: Once the lead changes the state as “OPEN”, he assigns the bug to corresponding developer or developer team. The state of the bug now is changed to “ASSIGN”.

4. Test: Once the developer fixes the bug, he has to assign the bug to the testing team for next round of testing. Before he releases the software with bug fixed, he changes the state of bug to “TEST”. It specifies that the bug has been fixed and is released to testing team.

5. Deferred: The bug, changed to deferred state means the bug is expected to be fixed in next releases. The reasons for changing the bug to this state have many factors. Some of them are priority of the bug may be low, lack of time for the release or the bug may not have major effect on the software.

6. Rejected: If the developer feels that the bug is not genuine, he rejects the bug. Then the state of the bug is changed to “REJECTED”.

7. Duplicate: If the bug is repeated twice or the two bugs mention the same concept of the bug, then one bug status is changed to “DUPLICATE”.

8. Verified: Once the bug is fixed and the status is changed to “TEST”, the tester tests the bug. If the bug is not present in the software, he approves that the bug is fixed and changes the status to “VERIFIED”.

9. Reopened: If the bug still exists even after the bug is fixed by the developer, the tester changes the status to “REOPENED”. The bug traverses the life cycle once again.

10. Closed: Once the bug is fixed, it is tested by the tester. If the tester feels that the bug no longer exists in the software, he changes the status of the bug to “CLOSED”. This state means that the bug is fixed, tested and approved.

While defect prevention is much more effective and efficient in reducing the number of defects, most organization conducts defect discovery and removal. Discovering and removing defects is an expensive and inefficient process. It is much more efficient for an organization to conduct activities that prevent defects.

Guidelines on deciding the Severity of Bug:

Indicate the impact each defect has on testing efforts or users and administrators of the application under test. This information is used by developers and management as the basis for assigning priority of work on defects.

A sample guideline for assignment of Priority Levels during the product test phase includes:

1. Critical / Show Stopper — An item that prevents further testing of the product or function under test can be classified as Critical Bug. No workaround is possible for such bugs. Examples of this include a missing menu option or security permission required to access a function under test. .

2. Major / High — A defect that does not function as expected/designed or cause other functionality to fail to meet requirements can be classified as Major Bug. The workaround can be provided for such bugs. Examples of this include inaccurate calculations; the wrong field being updated, etc. .

3. Average / Medium — The defects which do not conform to standards and conventions can be classified as Medium Bugs. Easy workarounds exists to achieve functionality objectives. Examples include matching visual and text links which lead to different end points. .

4. Minor / Low — Cosmetic defects which does not affect the functionality of the system can be classified as Minor Bugs.

White Box Testing

White Box Testing:
In White box testing, the tester has intimate knowledge of the architecture and the code. This knowledge allows the testers to tailor their tests to test specific potential problem areas. For example, if some data value is stored as a 16-bit signed integer the tester can try to see what happens if values greater than 2 to the power of 15 are used. As another exmple, if tester knows that the back end is using a relational database, they may try entering data what contains some sql keywords or reserved characters such as LIKE or %. Having internal knowledge of the software can also help make testing more efficient. In simple, testing based on an analysis of internal workings and structure of a piece of software. Includes techniques such as branch testing and path testing. Also known as structural testing and glass box testing.

System integration testing

System integration testing:
Testing a specific hardware/software installation. This is typically performed on a COTS (commercial off the shelf) system or any other system comprised of disparent parts where custom configurations and/or unique installations are the norm.

STRESS TESTING

STRESS TESTING: 
It is done to evaluate the application's behaviour beyond normal or peak load conditions. It is basically testing the functionality of the application under high loads. Normally these are related to synchronization issues, memory leaks or race conditions etc. Some testing experts also call it as fatigue testing. Sometimes, it becomes difficult to set up a controlled environment before running the test. Example of Stress testing is:

A banking application can take a maximum user load of 20000 concurrent users. Increase the load to 21000 and do some transaction like deposit or withdraw. As soon as you did the transaction, banking application server database will sync with ATM database server. Now check with the user load of 21000 does this sync happened successfully. Now repeat the same test with 22000 thousand concurrent users and so on.
Spike test is also a part of stress testing which is performed when application is loaded with heavy loads repeatedly and increase beyond production operations for short duration.
Stress Testing helps to determine:
  • Errors in slowness & at peak user loads
  • Any security loop holes with over loads
  • How the hardware reacts with over loads
  • Data corruption issues at over loads

Testing with the intent of determining how well a product performs when a load is placed on the system resources that nears and then exceeds capacity.

Under stress testing, various activities to overload the existing resources with excess jobs are carried out in an attempt to break the system down. Negative testing, which includes removal of the components from the system is also done as a part of stress testing. Also known as fatigue testing, this testing should capture the stability of the application by testing it beyond its bandwidth capacity.
The purpose behind stress testing is to ascertain the failure of system and to monitor how the system recovers back gracefully. The challenge here is to set up a controlled environment before launching the test so that you could precisely capture the behaviour of system repeatedly, under the most unpredictable scenarios.
Stress Testing Goal:
The goal of the stress testing is to analyse post-crash reports to define the behaviour of application after failure. The biggest issue is to ensure that the system does not compromise with the security of sensitive data after the failure. In a successful stress testing, the system will come back to normality along with all its components, after even the most terrible break down.
Example:
As an example, a word processor like Writer1.1.0 by OpenOffice.org is utilized in development of letters, presentations, spread sheets etc… Purpose of our stress testing is to load it with the excess of characters.
To do this, we will repeatedly paste a line of data, till it reaches its threshold limit of handling large volume of text. As soon as the character size reaches 65,535 characters, it would simply refuse to accept more data. The result of stress testing on Writer 1.1.0 produces the result that, it does not crash under the stress and that it handle the situation gracefully, which make sure that application is working correctly even under rigorous stress conditions.

SECURITY TESTING

SECURITY TESTING:
Testing of database and network software in order to keep company data and resources secure from mistaken/accidental users, hackers, and other malevolent attackers.