Thursday, January 8, 2009

What is the Difference between Desktop, WEB and Client-Server Apllication Testing

Each one differs in the environment in which they are tested and you will lose control over the environment in which application you are testing, while you move from desktop to web applications.


Desktop application runs on personal computers and work stations, so when you test the desktop application you are focusing on a specific environment. You will test complete application broadly in categories like GUI, functionality, Load, and backend i.e DB.

In Client-Server Application you have two different components to test. Application is loaded on server machine while the application exe on every client machine. You will test broadly in categories like, GUI on both sides, functionality, Load, client-server interaction, backend. This environment is mostly used in Intranet networks. You are aware of number of clients and servers and their locations in the test scenario.

Web Application is a bit different and complex to test as tester don’t have that much control over the application. Application is loaded on the server whose location may or may not be known and no exe is installed on the client machine, you have to test it on different web browsers. Web applications are supposed to be tested on different browsers and OS platforms so broadly Web application is tested mainly for browser compatibility and operating system compatibility, error handling, static pages, backend testing and load testing.

Keep in mind that even the difference exist in these three environment, the basic quality assurance and testing principles remains same and applies to all.

Monday, January 5, 2009

Charles Web debugging Proxy

Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).
Charles can act as a man-in-the-middle for HTTP/SSL communication, enabling you to debug the content of your HTTPS sessions.
Charles simulates modem speeds by effectively throttling your bandwidth and introducing latency, so that you can experience an entire website as a modem user might (bandwidth simulator).

...

Friday, December 19, 2008

How to intentionally fail a particular call to get 404 in Fidller ???

See earlier post and adds " *bpafter" as action for auto-responder rule. It will return 404 for any call.

This allows the request to hit the server, but break on the response... So finally we get 404 :-)

*bpu : Break on request before hitting server : This could also be used...

Wednesday, December 17, 2008

How to fail a particular HTTP call through Fiddler?

I am a Quality Engineer who test a lot of things in softwares. Currently I am working on a hybrid application where a desktop software make some internet calls.

Recently I came across a scenario where I wanted to fail a particular call in middle of a set of HTTP calls. Fiddler helped me to do so.

Here are the steps to make this happen:

I am taking an example for explaining this. Lets take a case where one thread make 5 calls Call-1, Call-2....Call-5 and I want to fail Call-3. Here are the steps I need to follow:

- Run this thread after starting fiddler.
- It will list all five calls.
- Select Call-3 and select AutoResponder Tab on the right side
- Check the option for "Enable Automatic Responses"
- Click Add Button
- Call-1 URL will be listed in Rule Editor in Right-Bottom
- Enter any random value in other text-box on the right side of Rule-Editor.
- Save this.

In future whenever you will run this thread, Call-3 will always fail.

All the Best!!!

Sunday, November 16, 2008

Fundas of Contiguous Memory Allocation - Part I

Through Contiguous Memory Allocation, the memory manager strictly allocates contiguous memory locations to an object loaded in the memory. The Contiguous Memory Allocation can be done in two ways, static and dynamic.



In the Static Memory Allocation, the memory is divided into equal sized partitions and objects are loaded into these partitions as the processes ask for them. With this type of memory allocation, we see a fragmentation that is known as internal fragmentation that occurs when a small object is loaded into a partition of a larger size. The space that is not occupied by the object cannot be allocated to another object and hence is wasted.

In case of Dynamic Memory Allocation, the internal fragmentation is eliminated by making each partition only as large as necessary for a particular object. When an object is removed from memory, the space occupied by it is returned to the pool of available memory spaces. However, in this case, a fragmentation known as External Fragmentation is observed because over the time, dynamic partitioning 0f memory has a tendency to fragment memory into interspersed areas of allocated and unused memory. As these areas are not contiguous, allocation may fail to find a free region to honor a request, even when the combined size of the free memory exceeds the need of the object by a wide margin.

Another type of fragmentation that can be seen in case of contiguous memoy allocation is the table fragmentation. This is attributed to the space occupied by the data structures needed for operation of the memory manager.