Web端cookie知识介绍

首先,我们要关注什么是cookie以及cookie是如何工作的。当对cookie的定义以及工作原理、如何获得存储在硬盘上的cookie以及应该怎样对cookie进行编辑、设置有一个比较清晰地认识时,那么cookie测试你就会游刃有余了。

Web端cookie知识介绍

  什么是cookie?

cookie是web服务器存储在客户端硬盘上的一小段文本信息。这些信息存储后用于Web浏览器去检索来自相关计算机的信息。通常,cookie包含用于在不同网页之间通信的个性化用户数据和信息。

  为什么使用cookie?

cookie标识着计算机上用户的身份,并用于跟踪用户浏览整个网站页面的过程。我们知道Web浏览器和Web服务器之间的通信是无状态的。

比如,你访问域名,Web浏览器将查询来自网络服务器的页面,下次当你输入网址的时候,浏览器就会发送新的请求发给网络服务器的网页,而整个过程中Web服务器根本不知道前一页已经提供过相关服务了。

如果你想让Web服务器知道该用户在前一段时间的通信历史,就需要在Web浏览器和Web服务器的交互过程中维持用户的状态信息,而这正是cookie作用的地方。因此,cookie服务的目的是维持Web服务器和用户间的交互。

  cookie是怎样工作的?

用来在网络上进行超文本信息传输的HTTP协议负责维护cookie。事实上HTTP协议有两种类型,无状态的HTTP协议和有状态HTTP协议。无状态HTTP协议不保留以前访问过的网页的历史记录。但是有状态HTTP协议将会保留Web浏览器和Web服务器交互的一些历史,有状态HTTP协议将使用cookie来维持用户交互。

当你访问一个使用cookie的网站或网页时,网页中的一小段代码(js、php和perl等脚本语言)将会把cookie写入到用户的机器中。

下面是用来写cookie的一个例子,它可以放置任何HTML网页内:

Set-Cookie:NAME=VALUE;expires=DATE;path=PATH;domain=DOMAIN_NAME;

译者注:若您想模拟响应Cookie,可使用三剑客接口测试平台Xmock模块。

当用户访问同一页面或同一域以后,这个cookie将会从磁盘中被读取并用于识别该域的同一个用户的第二次访问。另外需要解释的是cookie的过期时间设置,这个时间是由使用cookie的应用决定的。

通常有两种类型的cookie会被写入用户的计算机上。

1)会话cookie:从打开浏览器开始,这个cookie就是活跃的,直到我们关闭浏览器,这个cookie才会被删除。有些时候应用程序也会将该cookie的过期时间设置为20分钟。

2)永久cookie:它是永久写入用户机器上的,有效期可以持续数月或数年。

  cookie在哪里存储?

任何网页应用程序写入的cookie都会被保存在用户本地硬盘的一个文本文件中。而且cookie的存储路径也与浏览器的设置有关。不同的浏览器会在不同的路径下存储cookie。例如IE浏览器存储cookie的路径为 “C:Users Default User AppDataRoamingMicrosoftWindowsCookies”,这里的“Default User”表示当前登录的用户,比如 “Administrator”等。

通过浏览器导航选项可以很容易的发现cookie的存储位置。在Mozilla Firefox浏览器的选项中,你甚至可以看到cookie的数据信息。具体操作为:打开Mozilla Firefox浏览器,点击工具- >选项- >隐私,然后点击“显示cookie”按钮。

  cookie是怎么存储的?

让我们来举一个例子,在Mozilla Firefox浏览器写下的cookie,当在Mozilla Firefox浏览器打开网址或登录rediff账户时,一个cookie就被写入到你的硬盘上。要查看此cookie只需找到上面提到的路径点击“显示Cookie”按钮。点击站点下这个cookie列表。你可以看到不同rediff域名写入的不同cookie。

  cookie的应用场景

1)要实现购物车:你可以用来维持在线订购系统的一些状态,能够记住用户想要买什么。假设用户在他们的购物车增加了一些产品,但是由于某种原因,用户不希望购买这些产品,并关闭了浏览器窗口,而当下次相同的用户访问购买页面,他是可以看到自己上一次访问过程中在购物车添加的商品的。

2)个性化网站:用户在浏览网页时,根据个人偏好设置一些网页为不可见,或是将某些网站设置为不可访问,cookie将会记住用户的设置,下次用户在浏览网页的时候,cookie会根据用户的设置屏蔽一些网页。

3)用户追踪:要在特定的时间里,追踪一些特殊的访客。

4)营销:有些公司通过cookie在用户的机器上展示广告。cookie可以控制这些广告,什么时候、以什么样的形式被展示,同时也可以用来判断什么广告是用户感兴趣的,哪些关键字是用户曾在网站上搜索过的,所有这些东西都会记录在cookie中。

5)用户会话:cookie可以使用用户ID和密码在特定的域追踪用户的会话。

  cookie的缺点

1)即使cookie是维持用户交互的好方法,但是如果用户设置浏览器为:写cookie警告或完全禁止cookie,那么包含cookie的网站将被完全禁用,用户将不能执行任何操作,从而造成网站流量的大量丢失。

2)cookie冗余:如果你在每一个网页导航中写太多cookie,用户打开浏览器选项:写cookie警告,这足可以使用户对你的网站敬而远之。

3)安全问题:用户的个人信息被存储在cookie中,如果有黑客劫持了用户的cookie,则黑客可以访问用户的个人信息。甚至别的域也可以读取一些损坏的cookie,从而带来安全问题。

4)敏感信息:有些网站可能在cookie中存储敏感信息,由于涉及隐私,这么做是禁止的。

Test Cases

1)在设计文档中的一种隐私策略是确保个人信息或敏感数据都不要存储在cookie中。

2)如果没有别的选择,必须要将敏感数据存保存在cookie的时候,那么敏感数据需要以一种加密的方式存储到cookie中。

3)测试人员必须确保网站上没有过度使用cookie。若浏览器频繁的提示写入cookie会给用户造成很大的困扰,可能导致网站失去流量,并最终失去业务。

4)在浏览器的设置中禁用cookie:如果在网站中使用cookie,当用户禁用cookie时,网站主要功能将不起作用,因此,应当确保没有cookie时网站也是可用的。不应该由于禁用cookie而让页面有任何崩溃(在执行这个测试之前,请确保关闭所有浏览器,并且删除所有之前写的cookie)。

5)接受或者拒绝一些cookie:检查网站的功能最好的办法是不接受任何cookie。可以在web应用程序写10个cookie,然后随机接受一些cookie,假如接受5个,拒绝5个。我们在执行这个测试用例时可以通过设置浏览器选项为在写入cookie时给出提示。在这个提示窗口中你可以接受或拒绝cookie。尽量访问该网站的主要功能,看看页面是否会因此崩溃或者出现数据损坏等现象。

6)删除cookie:在测试环境下,允许网站写入cookie,然后关闭所有浏览器并手动从网站中删除所有cookie;访问网页并且检查页面的行为。

7)破坏cookie:破坏一个cookie是容易的`。前面我们已经知道cookie存储的位置。可以在记事本中手动编辑cookie并改变一些模糊的参数的值。像改变cookie内容,cookie的名称或cookie的有效期限,然后查看网站的功能。在某些情况下损坏cookie能够读取其他域里面的数据。在网站中这是不应该发生的。注意如果cookie是由域写的,就不可以被其他的域访问,比如,除非cookie被损坏或者有人试着攻击cookie数据。

8)从web应用程序页面检查cookie的删除: 在测试一些“行动跟踪”门户网站时经常出现的场景:域已经向cookie中写入数据,但是被这个域下的另一个网页删除。在“行为追踪”或“购买行为追踪”的网页测试中,当用户产生行为或是产生购买记录的时候,需要将已经写入磁盘的cookie删除,从而避免同一个cookie下产生多个行为或购买记录。适当的删除cookie中的内容,检查是否能够追踪到你的行为或是购买页面;另外检查cookie中同一个用户下不会存在非法的行为或购买记录。

9)在多个浏览器测试cookie:检查你的web应用程序页面是否能在不同的浏览器上写入cookie,并且网站使用这些cookie可以正常工作,这是最重要的事情。你可以在常用的浏览器上测试你的web应用程序,例如不同版本的Internet explorer、Mozilla Firefox、netscape、opera等。

10)如果你的web应用程序使用cookie维护用户的日志状态,并且你的应用程序使用用户名和密码记录,在许多情况下,你可以直接在浏览器地址栏看到登录用户ID参数。通过改变这个参数,你可以看到其他用户的相关信息。假定如果以前的用户ID是100,修改为 101,然后按enter键。当前用户的访问消息应该显示给用户,但是用户不应该能看到其他用户的账户信息。

在测试网站cookie的时候,这些都是一些常用的测试用例。你可以在这些测试场景中,通过执行多个测试用例的组合来进行web的cookie测试。如果你有不同的应用场景,你可以在下面的评论中说说你的测试用例。