Introduction to Cookies
Primarily we will focus on what exactly HTTP cookies or Internet cookies are and how they work.
It would be easy for you to understand the test cases for testing website cookies when you have a clear understanding of how cookies work, how cookies get stored on the hard drive, and how we can edit cookie settings.
What is an HTTP or Internet Cookie?
A web cookie is a small piece of 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, the cookie contains personalized user data or information that is used to communicate between different web pages.
What You Will Learn:
Why are Web Cookies Used For?
Cookies are nothing but the user’s identity and are used to track where the user navigated throughout the website pages. The communication between the web browser and a web server is stateless.
If you are accessing the domain “http://www.example.com/1.html” then the web browser will simply query the example.com web server for page 1.html.
Next time if you type the page as “http://www.example.com/2.html” then the new request will be sent to the example.com web server for sending 2.html page and the web server does not know anything about to whom the previous page 1.html was served.
What if you want the previous history of this user communication with the webserver? You need to maintain the user state and interaction between a web browser and a web server somewhere. This is where the cookie comes into the picture. Cookies serve the purpose of maintaining user interactions with a 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 the previously accessed web page history.
While the Stateful HTTP protocol does keep some history of previous web browser and web server interactions, this protocol is used by the cookies to maintain the user interactions.
Here is an example of a code that is used to write a Cookie and can be placed on any HTML page:
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
When a user visits the same page or domain at a later time this cookie is read from a disk and used to identify the second visit of the same user on that domain. The 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
#1) Session Cookies: This cookie is active until the browser that invoked the cookie is open. When we close the browser this session cookie gets deleted. Sometimes a session of, say, 20 minutes can be set to expire the cookie.
#2) Persistent Cookies: These are cookies that are written permanently on the user’s machine and last for months or years.
Where are Cookies Stored?
When any web page application writes a cookie, then it gets saved in a text file on the user’s hard disk drive. The path where the cookies get stored depends upon the browser. Different browsers store cookies in different paths.
The below-mentioned paths are examples of where cookies are stored:
Internet Explorer: “C:\Users\username\AppData\Roaming\Microsoft\Windows\Cookies”.
Windows 7: “C:\Users\username\AppData\Roaming\Microsoft\Windows\Cookies\Low”.
Windows 8 and Windows 10: “C:\Users\username\AppData\Local\Microsoft\Windows\INetCookies”.
Here the “Default User” can be replaced by the current user you logged in as like “Administrator”, or username like “Vijay” etc. The cookie path can be easily found by navigating through the browser options.
In the Mozilla Firefox browser, you can even see the cookies in the browser option itself. Open the Mozilla browser, press the “Open menu” button? “Web Developer”? “Storage Inspector” or by pressing combination “Shift + F9”.
In the Google Chrome browser, you can find cookies by typing “chrome://settings/content/cookies” in your address bar. Cookies can also be accessed using the browser console: Press F12 –> application –> storage –> cookies.
How are Cookies Stored?
Take an example of a cookie written by rediff.com on the Mozilla Firefox browser. On the Mozilla Firefox browser, when you open the rediff.com page or log in to your Rediffmail account, a cookie will get written on your Hard disk.
To view this cookie, simply click on the “Show cookies” button mentioned in the above path. Click on the Rediff.com site under this cookie list.
You can see different Cookies written in the 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:
#1) To implement the shopping cart: Cookies are used for maintaining an online ordering system. Cookies, remember what the user wants to buy. What if the user adds some products to their shopping cart and if due to some reason the user doesn’t want to buy those products this time and closes the browser window?
In the above instance, the next time the same user visits the purchase page, he can see all the products he added to the shopping cart during his last visit.
#2) Personalized sites: When a user visits a certain page, they are asked which pages they don’t want to visit or display. User options get stored in a cookie and until the user is online, those pages are not shown to him.
#3) User tracking: To track the number of unique visitors online at a particular time.
#5) User sessions: Cookies can track user sessions to a particular domain using a user ID and password.
Drawbacks of Cookies
#1) Even writing a Cookie is a great way to maintain user interaction, if the user has set browser options to warn before writing any Cookies or disabled the Cookies completely then the site containing Cookie will be completely disabled and it cannot perform any operation thereby resulting in loss of site traffic. This can be disabled/enabled in your browser settings.
In addition to browser settings, there are some changes in regulations in the EU and US that force developers to warn a user that Cookies are used on the website. Compliance with such new regulations should also be a part of test scenarios for certain regions.
#2) Too many Cookies: If you are writing too many cookies on every page navigation and if the user has turned on an option to warn before writing the Cookie, this could even turn away user from your site.
#3) Security Issues: Sometimes, the users’ personal information is stored in Cookies and if someone hacks the Cookie then a hacker can get access to your personal information. Even corrupted cookies can be read by different domains and lead to security issues.
#4) Sensitive Information: Some sites may write and store your sensitive information in cookies, which indeed should not be allowed due to privacy concerns. This should be enough to know what Cookies are.
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 also use the Cookie Tester application if you don’t have any web application to test, but you must understand the Cookie concept for testing.
Some Major Test Cases for Web Application Cookie Testing
#2) If you have no option other than saving sensitive data in a Cookie, then make sure that the data stored in a cookie is stored in an encrypted format.
#4) Disable the Cookies from your browser settings. If you are using cookies on your site, your site’s major functionality will not work by disabling the Cookies. Then try to access the website under test.
Navigate to the site to 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”.
No page should crash due to disabling Cookies. Make sure to close all browsers and delete all previously written cookies before performing this test.
#5) Accepts/Reject some cookies: The best way to check the website functionality is, not to accept all Cookies. If you are writing 10 Cookies on your web application then randomly accept some cookies, say accept 5 and reject 5 Cookies.
To execute the above test case, you can set the browser options to prompt whenever the Cookie is being written on disk. In this prompt window, you can either accept or reject the Cookie. Try to access the main functionality of the website and see if the pages are getting crashed or data is getting corrupted.
#6) Delete the Cookie: Allow the site to write the cookies and then close all browsers and manually delete all Cookies for a website under test. Access the web pages and check the behavior of the pages.
#7) Corrupt the Cookies: Corrupting a cookie is easy. As you know where the cookies are stored, you can manually edit the cookies in the notepad and change the parameters to some vague values like altering the cookie content, name of the cookie, or expiry date of the cookie and see the site functionality.
In some cases, corrupted cookies allow reading the data inside it for any other domain. This should not happen in the case of your website cookies. Note that if the cookies are written by one domain say rediff.com it can’t be accessed by another domain, say yahoo.com unless and until the cookies are corrupted and someone is trying to hack the cookie data.
#8 ) Checking the deletion of cookies from your web application page: Sometimes cookies 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.
Recommended reading => Methods to clear browser cache memory
Action tracking or purchase tracking pixel is placed on the action web page and when any action or purchase occurs by a user the Cookie written on disk gets deleted to avoid multiple actions logging from the 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.
#9) Cookie Testing on Multiple browsers: This is the most important case to check if your web application page is writing the cookies properly on different browsers as intended and the site works properly using these Cookies. You can test your web application on the most used browsers like Chrome, Internet Explorer, Mozilla Firefox, Netscape, Opera, etc.
#10) 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 the browser address bar. Change this parameter to a different value, say if the previous user ID is 100 then make it 101 and press enter. Proper access messages should be displayed to the user and the user should not be able to see the other user’s account details.
#11) Verify if cookies are persistent or not (according to your requirements) by checking the cookie type and expiration dates in Cookie file or browser console
#12) Validate if an expiration date is set accordingly to requirements. In some cases, it is vital to check if the Cookie expiration date is updated by working with an application (to refresh session for example). This can be checked in the browser console or in the cookie file itself.
Please note that decoding a cookie manually is not the best approach and it is easier to rely on browser data, but if required – this thread contains some answers on the Cookie file format.
#13) If some cookies are user-specific, it is important to ensure that they are deleted or simply ignored if another user logs into the application unless it is said differently in the specification.
#14) Specific test for multi-environment sites: Check if the same cookies are acceptable in all environments. Issues could be caused by the use of wildcards in the cookie path (so-called supercookies). If this is a requirement to allow it, some access issues can be caused because a different encryption key is used (e.g for .Net, it is a machine key that is usually unique unless specified otherwise).
These are some of the major test cases to be considered while testing the website cookies. You can write multiple test cases from these test cases by performing various combinations. If you have a different application scenario, you can mention your test cases in the comments below.
By now you should have a clear understanding of how to perform website cookie testing and how to write test cases for testing web application cookies.
Please share your thoughts/queries in the comment section below.