We will first focus on what exactly cookies are and how they work. It would be easy for you to understand the test cases for testing cookies when you have clear understanding of how cookies work. How are cookies stored on hard drive? And how can we edit cookie settings?
What is a Cookie?
A cookie is some small information stored in a text file on the user’s hard drive by a web server. This information is later used by the web browser to retrieve information from that machine. Generally, a cookie contains personalized user data or information that is used to communicate between different web pages.
Why are Cookies used?
Cookies are nothing but the user’s identity and used to track where the user has navigated throughout the web site pages. The communication between the web browser and the web server is stateless.
For example if you are accessing domain http://www.example.com/1.html then the web browser will simply query to example.com web server for the page 1.html. Next time if you type the page as http://www.example.com/2.html then the new request is sent to example.com web server for sending 2.html page and the web server won’t know anything about to whom the previous page 1.html served.
What if you want the previous history of this user communication with the web server? You need to maintain the user state and interaction between the web browser and the web server somewhere. This is where a cookie comes into picture. Cookies serve the purpose of maintaining user interactions with the web server.
How do cookies work?
The HTTP protocol used to exchange information files on the web is used to maintain the cookies. There are two types of HTTP protocols. Stateless HTTP and Stateful HTTP protocol. The Stateless HTTP protocol does not keep any record of previously accessed web page history. But the Stateful HTTP protocol does keep some history of previous web browser and web server interactions and this protocol is used by cookies to maintain the user interactions.
Here is one example of the code that is used to write a cookie and can be placed inside any HTML page:
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
When the user visits the same page or domain later, this cookie is read from the disk and is used to identify the second visit of the same user on that domain. Expiration time is set while writing the cookie. This time is decided by the application that is going to use the cookie.
Generally two types of cookies are written on the user machine.
Session cookies: This cookie is active till the browser that invoked the cookie is open. When we close the browser this session cookie gets deleted. Some time session of say 20 minutes can be set to expire the cookie.
- Persistent cookies: The cookies that are written permanently on user machine and lasts for months or years.
Where are cookies stored?
When any web page application writes a cookie, it gets saved in a text file on user hard disk drive. The path where the cookies get stored depends on the browser. Different browsers store cookies at different locations. E.g. Internet explorer store cookies at “C:\Documents and Settings\Default User\Cookies”
Here the “Default User” can be replaced by the current user you logged in as. Like “Administrator”, or user name like “Vijay” etc.
The cookie path can be easily found by navigating through the browser options. In Mozilla Firefox browser you can even see the cookies in browser options itself. Open the Mozila browser, click on Tools->Options->Privacy and then “Show cookies” button.
How are cookies stored?
Lets take an example of a cookie written by rediff.com on a Mozilla Firefox browser:
On a Mozilla Firefox browser, when you open the page rediff.com or login to your rediffmail account, a cookie will get written on your hard disk. To view this cookie simply click on “Show cookies” button mentioned on above path. Click on Rediff.com site under this cookie list. You can see different cookies written by rediff domain with different names.
Site: Rediff.com Cookie name: RMID
Name: RMID (Name of the cookie)
Content: 1d11c8ec44bf49e0… (Encrypted content)
Path: / (Any path after the domain name)
Send For: Any type of connection
Expires: Thursday, December 31, 2020 11:59:59 PM
Applications where cookies can be used:
To implement a shopping cart: Cookies are used for maintaining online ordering system. Cookies remember what the user wants to buy. What if the user adds some products in his shopping cart and if due to some reason, the user doesn’t want to buy those products this time and closes the browser window? Well, when the next time the same user visits the purchase page, he can see all the products he added in the shopping cart in his last visit.
Personalized sites: When a user visits certain pages he is generally asked about his preferences. User options are stored in a cookie and till the user is online, the pages are customizes as per his preferences.
User tracking: To track the number of unique visitors online at a particular time.
Call 4 Speakers – 8th IndicThreads Conference On Java, Mobile, Cloud & Big Data. Dec 2013 – Pune, India
- User sessions: Cookies can track user sessions to particular domain using user ID and password.
Drawbacks of cookies:
Though writing a cookie is a great way to maintain user interaction, if the user has set browser options to give him warnings before writing any cookie or he disables cookies, then a site containing cookies will be completely disabled and will not be able to perform any operation resulting in loss of site traffic.
Too many Cookies:
If you are writing too many cookies on every page navigation and if the user has turned on option to warn before writing cookie, this could turn away user from your site.
Some times a user’s personal information is stored in cookies and if someone hacks the cookie, then the hacker can get access to your personal information. Even corrupted cookies can be read by different domains and lead to security issues.
- Sensitive information:
Some sites may write and store your sensitive information in cookies, which should not be allowed due to privacy concerns.
This should be enough to know what cookies are. If you want more cookie info see Cookie Central page.
Some Major Test cases for web application cookie testing: The first obvious test case is to test if your application is writing cookies properly on disk. You can use the Cookie Tester application also if you don’t have any web application to test but you want to understand the cookie concept for testing.
If you have no option than saving sensitive data in cookie make sure data stored in cookie is stored in encrypted format.
Disable the cookies from your browser settings: If you are using cookies on your site, your sites major functionality will not work by disabling the cookies. Then try to access the web site under test. Navigate through the site. See if appropriate messages are displayed to the user like “For smooth functioning of this site make sure that cookies are enabled on your browser”. There should not be any page crash due to disabling the cookies. (Please make sure that you close all browsers, delete all previously written cookies before performing this test)
Accepts/Reject some cookies: The best way to check web site functionality is to not accept all cookies. If you are writing 10 cookies in your web application, then randomly accept some cookies, say accept 5 and reject 5 cookies. For executing this test case you can set browser options to prompt whenever cookie is being written to disk. On this prompt window you can either accept or reject cookie. Try to access a major feature of web site. Check if pages crash or data becomes corrupt.
Delete cookie: Allow site to write the cookies and then close all browsers and manually delete all cookies for web site under test. Access the web pages and check the behavior of the pages.
Corrupt the cookies: Corrupting a cookie is easy. You know where cookies are stored. Manually edit the cookie in notepad and change the parameters to some vague values. You can alter the cookie content, the name of the cookie or expiry date of the cookie and check the site functionality. In some cases, corrupted cookies allow other domains to read the data inside them. This should not happen in case of your web site cookies. Note that the cookies written by one domain say rediff.com can’t be accessed by other domain say yahoo.com unless and until the cookies are corrupted and someone tries to hack the cookie data.
Checking the deletion of cookies from your web application page: Sometimes a cookie written by a domain, say rediff.com may be deleted by the same domain but by a different page under that domain. This is the general case if you are testing some ‘action tracking’ web portal. Action tracking or purchase tracking pixel is placed on the action web page and when any action or purchase occurs by the user, the cookie written on the disk is deleted to avoid multiple action logging from same cookie. Check if reaching your action or purchase page deletes the cookie properly and no more invalid actions or purchases get logged from the same user.
Cookie Testing on Multiple browsers: It is an important to check if your web application page is writing the cookies properly on different browsers as intended and site works properly using these cookies. You can test your web application on popular browsers like Internet explorer (Various versions), Mozilla Firefox, Netscape, Opera etc.
- If your web application is using cookies to maintain the logging state of any user, then log in to your web application using some username and password. In many cases you can see the logged in user ID parameter directly in browser address bar. Change this parameter to different value say if previous user ID is 100 then make it 101 and press enter. The proper access message should be displayed to user and user should not be able to see other users account.
These are some Major test cases to be considered while testing website cookies. You can write multiple test cases from these test cases by performing various combinations. If you have some different application scenarios, you can mention your test cases