Web Based application(s) testing


Web sites are essentially client/server applications they can be divided as web servers and 'browser' clients. Consideration should be given to the interactions between HTML pages, protocols, security, applications that run in web pages such as applets, JavaScript, plug-in applications, and applications that run on the server side such as CGI scripts, database interfaces, logging applications, dynamic page generators, etc.
Additionally, there are a wide variety of servers and browsers, various versions of each. Small but sometimes significant differences between them, variations in connection speeds, rapidly changing technologies, and multiple standards and protocols. The end result is that testing for web sites can become a major ongoing effort.

Things to be considered for web testing
a) What are the expected loads on the server and does it meets the expected performance       And the stress
b) What are the different browser(s) capabilities of the application?
c)  How is the connection speed internal & external (real time)
d) What are the security threats and how it is secured (firewalls, encryptions Etc)
e)  How is the server recovery from down time or an crash
f)  What are the different injections or vulnerabilities (SQL injection, cross site scripting?  
      Etc) that might occur and how it is handled
g) How is the master slave severs performance, that is when one server is down how effectually the slave or the other server will come up (if configured)
h) How is the web page layout, fonts, colors, text, graphics and user Interface? Etc.
i)  Cookie handling

Security vulnerability: -
Security vulnerability can be said as threat to the application from unauthorized access
And corruption of the application data. Following are the few security vulnerabilities.

Injection attacks
Cross site scripting
Session hacking
Form tampering
Port Scanning / Foot Printing
Injection Attacks:-
Following are the different types of injections
SQL injection
Ldap injection
Command Injection ETC

SQL Injection:-
Try the following steps
a) Open the Web site in a browser
b) Find a script which has common scripting-language file extensions
    Like .asp or .cfm
c) The “search” filed of an application is the field most vulnerable The Uniform Resource      Locator (URL) on the results page will likely contain a script. Also try hovering your cursor over links while watching the Bottom status bar. If the status bar doesn't display URLs click on links and watch the address bar until you find a URL that has parameters.
Once you are on a page whose URL contains parameters, you are ready to test for SQL Injection vulnerability. There are two methods. Be sure to test each parameter value, one at a time, with each method

Method 1:-
In the address bar URL, highlight a parameter value. Replace it with a single quote.
 
Method 2:-
Instead of highlighting the entire parameter value, click inside the value and type a single quote.

And click on send/enter/submit. Look for database error message      
                                  
(Note)  Sometimes the error message does not display on screen. To find it, you may have to search the HTML source of the page. (View | Source in Microsoft Internet Explorer or View | Page Source in Netscape.) A document will open. Use that program's search tool to look for either of these phrases:
                        Microsoft OLE DB
                                     Or
                          [ODBC]







Other way to test for SQL Injection
If you are using the normal string concatenation method of writing the code then you have to just enter the following in this manner in the text box.
                                      ‘Or 1=1 --- 
This will allow u to breach into sql and if u know how to create a windows acc then follow it up with the command, u well be able to create an account.

Cross Site Scripting:
Cross site scripting (also known as XSS) occurs when a web application gathers malicious data from a user. The data is usually gathered in the form of a hyperlink which contains malicious content within it. The user will most likely click on this link from another website
Try out by dong this

See the value here which is java and this value have been assigned to “box”. So now u needs to change this URL to


And enter this new URL in browser and say Enter, which would display the current session cookie which is a serious security bug.

*** You need to learn some stuff in URL syntax or manipulation or programming to give this script there. You can’t just blindly give this anywhere in your URL.

Session ID hacking: -
A session is piece of code that is encrypted or encoded into a randomly organized string. This is used by the web server and browser for Authenticity /access to the authorized resource. To hack a session ID we need to have a sniffer. For example in domain where
We have three systems. A, B, C, system A has a web application, System B
Has a sniffer installed in it and C has a web server installed on it

a) Configure the sniffer and make it ready
b) Do an authentication from the system which has the web application installed on it
c) When it is successfully authenticated and session is alive get the information from the  
     Sinffer –system B

d) Since the captured information mostly in the machine language you need to Write a    small program to convert it to get the clear information Get the session id , append this ID with in the URL and access the  Protected resources

* NEED MORE R&D

Quality certifications for organizations



Capability maturity model:-
Software CMM is a business process management and quality improvement concepts to software development and maintenance. It’s a community-developed guide for evolving towards a culture of engineering excellence, model for organizational improvement. The underlying structure for reliable and consistent software process assessments and software capability evaluations. The Capability Maturity Model for Software (CMM) is a framework that describes the key elements of an effective software process.
It has the following 5 levels

CMM level 1 (initial): Software development follows little to no rules. The project may go from one crisis to the next. The success of the project depends on the skills of individual developers. They may need to finish the project in a heroic effort.

CMM level 2 (repeatable): Software development successes are repeatable. The organization may use some basic project management to track cost and schedule. The precise implementation differs from project to project within the organization.

CMM level 3 (defined): Software development across the organization uses the same rules and events for project management. Crucially, the organization follows this process even under schedule pressures, ideally because management recognizes that it is the fastest way to finish.

CMM level 4 (managed): Using precise measurements, management can effectively control the software development effort. In particular, management can identify ways to adjust and adapt the process to particular projects without measurable losses of quality or deviations from specifications.

CMM level 5 (optimizing): Quantitative feedback from previous projects is used to improve the project management, usually using pilot projects, using the skills shown in level 4.

(Note) All of the above mentioned levels have many key processing areas in it

ISO:-
International Organization for Standardization, it provides a reference framework, or a common technological language, for different industry types which will help Industries to develop & maintain quality of the products. The ISO 9000 and ISO 14000 families are among ISO's most widely known standards ever. The familiar three standards ISO 9001, ISO 9002 and ISO 9003 have been integrated into the new ISO 9001:2000.        
                         
Six Sigma
Six Sigma is a rigorous and a systematic methodology that utilizes information (management by facts) and statistical analysis to measure and improve a company's operational performance, practices and systems by identifying and preventing 'defects' in manufacturing and service-related processes in order to anticipate and exceed expectations of all stakeholders to accomplish effectiveness.
Six sigma levels Metric: 3.4 Defects Per Million Opportunities. DPMO allows you to take complexity of product/process into account. Rule of thumb is to consider at least three opportunities for a physical part/component - one for form, one for fit and one for function, in absence of better considerations. Also you want to be Six Sigma in the “Critical to quality” characteristics and not the whole unit/characteristics.
Methodology: DMAIC/DFSS structured problem solving roadmap and tools.
Philosophy: Reduce variation in your business and take customer-focused, data driven decisions.

BS7799: -
BS 7799, Information Security Management, released by the British Standards Institution (BSI) in 1995, and revised in 1998 and 1999, provides a comprehensive set of controls comprising the best information security management system (ISMS) practices.
BS 7799 applies to information systems used by organizations in industry and commerce, including information processing technology in the area of networks and communications. Organizations complying with BS 7799 should assess security risks, select controls and develop guidelines. This standard may be used for ISMS audits and as a basis for a registration scheme. It covers such areas as document control, security policy and organization, asset classification and control, physical and environmental security, communications and operations management, access control and compliance with legal requirements.

(Note)The advantage of having these certifications for an organization is that, it will provide an identification and good will in the market. That makes the customers More belief towards these organizations when they are approaching for different type of the services and requirements

Quality in software


Software Quality can be defined as “an application/system/product which satisfies the requirements and expectations of the customer(s) developed with in the time and budget". Quality is obviously a subjective term. Hence definition is frequently changed.

What is quality assurance


Quality assurance can be defined as a defined process which is applied on application/product/system to confirm that it has satisfied the specifications, requirements of the customer. This is can be also called validation.

What are alpha / beta testing?


Alpha Testing:-
Testing of an application when development is nearing the completion of the Product. Minor design changes may be done as a result of such testing. Alpha Testing is typically performed by end users but not programmers or testers

Beta Testing: -
Testing the application when testing and development are essentially completed and final bugs are needed to be found before the final release Testing is typically   performed by end users but not programmers or testers
 The basic purpose of alpha and beta tests are
 a) To give confidence that the software is in a suitable state to be seen by customers
  (But not necessarily released.) 
b) To find bugs that may only be found under operational conditions. Any other major defects or performance issues should have been discovered by this stage. 

Acceptance Testing


Testing of the application to evaluate the adequacy of a production-ready system from a customer perspective i.e., to focus on usage scenarios, interface design, and usability Etc
Few points about acceptance testing

* Acceptance testing will be done by the client side test team
* Only test cases specific to functionality are executed
* No negative scenarios are validated

System testing


A type of testing to confirm that all modules work as specified, and that the system as a whole performs adequately as per the design and the requirements on the platform on which it will be deployed.

(Note) The major difference between integration testing and system testing is that, Integration testing is carried out on independent modules as well as combination of the modules, where as system testing, all modules are combined together and tested

Specific tests that are to be performed during system testing:-
a) Installation Testing
b) Performance Testing
c) Load testing
d) Stress Testing

a) Installation Testing: -
Testing the application by full installation, partial installation, or upgrading, uninstallation of the product on the specified operating system(s) to ensure that all above activities will work fine with the application/system/product

(Note) In case of a web application apart from the installation test, check the
Browser compatibility on different versions of browsers.

Performance Testing: -
Performance Testing deals with, how fast application/system/product
Will respond to user input.
a) Specify the bench marks for the application to determine the application
    Performance
b) Best method to determine an applications performance is through a tool only
c) If no tool is used and manually we have to determine, then do like this, for example If    25 records are to be displayed for user input in 25seconds- to test this, Use a stop watch to test the performance of the application by clicking the corresponding button/link and notice the time in the stop watch .

C) Load Testing: -
Testing an application under heavy loads, to determine at what point of time the system response time degrades or fails. For example write a script Which will create 100 virtual users and pulls the data to an web application by opening 100 browses versions, wait and see the response if it Works fine or not then increase it to an extent, at certain point of time it will not respond or degrades or fails, this is the point that is the maximum load that The application can accept.

D) Stress Testing: -
This term often used interchangeably with 'load' and 'performance' testing. Also used to describe such tests as system functional testing while under unusually heavy loads, heavy repetition of certain actions or inputs, input of large numerical values, large complex queries to a database system, etc. for example write a script which will repeatedly do the same kind of action by sending different type of input data the application and see the behavior of the application