Friday, January 27, 2012

Cross Browser Compatibility Testing

In the world of multiple browsers and their versions, it is mandatory for web applications to support multiple browsers and their versions and on multiple platforms. A web page works well in Firefox on Windows, may not work as expected on Firefox on Linux, same is the case with Safari on Windows and Safari on Mac. As Mozilla is releasing more frequent releases of Firefox, testing and development teams have to gear up to support the last available versions of browser.

Browser compatibility testing is one of the important non-functional testing types in any product release. You cannot develop an application, assuming the end users use one or two browsers, and you cannot plan your development and testing on those browsers. Since there are many browsers and their versions in the market, testing teams have to make sure browser compatibility testing is part of final checklist without which product can not delivered.

There are few ways testing teams usually test the browser compatibility, like 1. A tester switches to different  the browser and version for each build, 2. Different testers work on different browsers, 3. Executing all high priority and sanity test cases on all browser versions in final or certification builds etc. These techniques fundamentally cover the browser compatibility of the application, but they are not efficient, time consuming, issues are not reported early due to priority of functional testing, and result insufficient coverage on multiple browsers.

There are various online services and tools available to check the web applications in various browsers. Some popular online tools are BrowserShots, CrossBrowserTesting, Adobe BrowserLab etc., and desktop tools are IE Tester, Microsoft Expression Web SuperPreview. Smashing Magazine has a detailed review of Cross BrowserTesting Tools. If your web application cannot be accessed on internet, then online services cannot be used for this testing. Microsoft SuperPreview is a good tool that supports all versions of IE and Firefox 3.5. This tool is yet to support other browsers like Chrome, Opera, Safari and latest versions of Firefox.

Further References:




P.S. I am sure this is not a latest topic or latest happening in testing industry.  Recently I had one specific requirement for testing a web application with multiple browsers in one of my projects and hence sharing my views on this topic.

Tuesday, January 17, 2012

Web Services Load Testing


Now-a-days large number of web applications are either consuming web services or providing their business functions as web services.  Like the performance of accessing the application services from user interface (web pages or desktop forms) is important for satisfaction of the end users, same should be with web services that application is providing.  I found performance requirements are not explicitly mentioned in requirements documents, testers should ensure the performance requirements are mentioned in requirement document similar to the way the performance requirements are mentioned for web pages and servers.

We can test performance of web services like the way we test the performance of normal web applications. We can track metrics like Response Time, Throughput, Memory Consumption, Application Server performance, I/O performance for web services performance testing. I have worked on testing of some applications where  complete  application is built on web services. It's a smart client application which interacts with the server via web services. In such scenarios it is difficult to performance test the application from user interface for huge loads. In such cases we can actually test the core of the application which are web services, rather than testing the client. Performance testing of web services is supported many open source and commercial tools.  There are some open source and free tools available which can server basic performance testing requirements. I found JMeter is good choice among open source tools, JMeter offers good extensibility and scalability and has good options to performance test web services.  In one of the projects, I had to test the web services with 3000 concurrent users with huge data transfers, which is difficult to test with some SOAP testing tools as the data exchange and processing involved with each request is huge. JMeter is the good choice and has good extensibility of the performance testing.

The challenges in load testing of web services is, verification of response of each web service, parameterization of input data, and finding error rate of the requests. We can add assertions on web service response to check whether response is correct or not. This may cause some overhead on JMeter to verify each response and may affect the correct metrics. If your web services have robust logging mechanism, the verification for correctness of response or output can be verified from log files or log message tables.

Some considerations while designing performance tests are, to include think time between calling of different web service methods to when trying to achieve a business flow,  providing appropriate ramp up time, adding more remote machines to JMeter is necessary step if we want to test with large number of virtual concurrent users, configuring the proper Heap memory of JMeter to accommodate more load.