软件测试课程(八):WEB测试

2019年10月的15至17日三天共上了3次课,共6小时,主要学习了WEB测试的一些知识,现笔记归纳如下:

Internet 和Intranet

•定义:Internet,国际互联网。它是由那些使用公用语言互相通信的计算机连接而成的全球网络。
•起源:美国国防部高级研究计划局的前身ARPA建立的ARPAnet,该网于1969年投入使用。
•目的:允许世界上数以亿计的人们进行通讯和共享信息。

•定义:Intranet是企业内部网。
•特点:

  • 相对封闭的网络环境。
  • 防火墙保护
  • 有权限控制

•目的:使企业内部的秘密或敏感信息受到保护。

三种网络体系结构

•C/S(Client/Server)架构

  • 胖客户端
  • 360安全卫士、手机APP

•B/S(Browser/Server)架构

  • 瘦客户端
  • WWW浏览器
  • 服务器端实现事务逻辑

•P2P(Point-to-Point)架构

  • 点对点
  • 飞秋

B/S 模式优缺点

•优点

  • 具有分布性特点,可以随时随地进行查询、浏览等业务处理。
  • 业务扩展简单方便,通过增加网页即可增加服务器功能。
  • 维护简单方便,只需要改变网页,即可实现所有用户的同步更新。

•缺点

  • 个性化特点明显降低,无法实现具有个性化的功能要求。
  • 操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
  • 页面动态刷新,响应速度明显降低。

C/S 模式优缺点

•优点:

  • 客户端与服务器的直接相连,响应速度快。
  • 界面多样性,满足客户个性化要求。
  • 能实现复杂的业务流程。
  • 面对有限群体,高机密性

•缺点:

  • 客户端安装程序,不能够实现快速部署安装和配置。
  • 兼容性差,各操作系统、多版本都要面对。
  • 升级成本较高。

WEB的特点

  • Web是图形化的和易于导航的
  • Web是与平台无关的
  • Web是分布式的
  • Web 是动态的
  • Web是交互的

Web测试与传统测试的异同

1、相同之处

  • 测试内容:功能、性能、易用性、兼容性、安全性等
  • 测试方法:因果图法、边界值法、场景法等
  • 测试手段:人工测试、工具测试、评估等

2、不同之处

  • Web测试更加注重性能测试和安全性测试

Web测试技术-功能测试

1、功能测试通常从以下几个角度来对软件测试进行评价:

  • 软件是否正确实现了需求规格说明书中明确定义的需求。
  • 软件是否遗漏了需求规格说明书中明确定义的需求。
  • 软件是否将需求规格说明书中未定义的需求实现。
  • 软件是否对异常情况进行了处理,容错性好。
  • 软件是否满足用户的使用需求。

2、在大多数情况下,功能测试主要关注于业务逻辑层面。而我们为大家介绍的功能测试,则忽略具体系统的业务逻辑,主要关注于WEB 系统通用的一些测试点。

  • 链接测试
  • 表单测试
  • Cookie测试
  • 文件上传测试
  • 数据库测试
链接测试 •该链接将用户带到它所说明的地方。
•被链接页面是存在的。
•保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面。
•链接测试工具:Linkbot、Xenu
表单测试 •程序是否检验信息的正确性
•以设计黑盒测试用例来生成可能产生问题的输入:如输入错误的数据类型,传递可能导致问题的字符如逗号(,)、单引号(’)等
•表单界面的显示
•文字环绕、随窗口的大小调整页面大小
Cookies测试 •Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。
•硬盘中的Cookies文件可以被Web浏览器读取,它的命令格式为:用户名@网站地址[数字].txt。
•测试的内容可包括:
  • Cookies是否起作用
  • 是否按预定的时间进行保存
  • 刷新对Cookies有什么影响等
  • 关键信息是否保密
文件上传测试 •只能上传允许的附件类型。
•不能上传脚本或可执行文件。
•不能单纯以后缀名来判断文件类型。
•浏览好文件后,将目标文件删除这种异常情况可以正常处理。
•上传超大文件时可以正常处理,比如给出提示信息等。
•上传的文件应该提供接口查看。
•上传的文件不应该直接保存于数据库中,而是将文件保存在服务器端硬盘,而在数据库中保存该文件的基本信息。
•文件上传到服务器端后应该被重命名,防止文件名冲突。
数据库测试 •数据一致性错误,如没有条件限制或回滚功能,错误的记录被保存下来
•输出错误:数据源是正确的,但是由于数据传输或在程序设计中数据提取和操作的指令问题。
•上面两种错误在基于黑盒的表单测试下错误现象是一样的,所以需要进一步确定问题是否是数据库错误
•数据库涉及到并发测试和安全性测试


Cookie测试方法

1、屏蔽Cookie(用例1)

•目的:这是最简单的Cookie 测试方法,检查当Cookie 被屏蔽时Web 系统会出现什么问题。
•步骤1:首先关闭所有浏览器实例,删除测试机器上的所有cookie。设置IE 屏蔽Cookie,可通过把IE 的“隐私”设置为“阻止所有Cookie”。
•步骤2:然后运行Web系统的所有主要功能,很多时候会出现功能不能正常运行的情况。这时系统就会提示用户必须激活Cookie 使用设置才能正常运行web系统,这时检查系统提示的cookie内容和需求说明书上的cookie种植点是否一致?

2、有选择性地拒绝Cookie(用例2)

•目的:测试如果某些Cookie 被接受,某些Cookie 被拒绝,Web 系统会发生什么事情?
•步骤1:首先删除测试机器上的所有Cookie,然后设置IE的Cookie 选项,当Web 系统试图设置一个Cookie 时弹出提示。
•步骤2:然后运行Web系统的所有主要功能。在弹出的Cookie 提示中,接受某些Cookie,拒绝某些Cookie。
•步骤3:检查Web系统的工作情况,看Web 服务器是否能检测出某些Cookie 被拒绝了,是否出现正确的提示信息。有可能Web 系统会因为这样而出现错误、崩溃、数据错乱,或其他不正常的行为。

3、Cookie 加密测试(用例3)

•目的:检查存储的Cookie 文件内容,看是否有用户名、密码等敏感信息存储,并且未被加密处理。某些类型的数据即使是加密了也绝对不能存储在Cookie 文件中的,例如:网银交易中的信用卡号和交易密码。
•测试方法:可以手工地打开所有Cookie 文件来查看,也可以利用一些Cookie 编辑工具来查看。

4、Cookie 安全内容检查

•Cookie 安全内容检查包括前面讲的存储内容的检查,还包括以下方面:
•Cookie 过期日期设置的合理性:检查是否把Cookie 的过期日期设置得过长。
•HttpOnly属性的设置:把Cookie 的HttpOnly属性设置为True 有助于缓解跨站点脚本威胁,防止Cookie 被窃取。
•Secure 属性的设置:把Cookie 的Secure 属性设置为True,在传输Cookie 时使用SSL连接,能保护数据在传输过程中不被篡改。

易用性测试

•明确最终用户

  • 服务器端用户
  • 客户端用户
  • 两个出错提示的比较

•图形测试,如图片的大小和显示

•辅助功能测试,如使用说明、导航、站点地图、帮助等

•如果测试将要本地化的产品,就需要仔细检查内容,以确保其适应使用该软件的地区。

•美国人的日期显示通常为MM/DD/YYYY,如05/05/2011,而中国人通常不喜欢这样的显示方式,我们更喜欢显示为2011年5月5日。

性能测试

•性能测试是检验系统的性能是否符合要求的测试
•性能测试包括压力测试、负载测试、连接速度测试
•性能测试的目的:

  • 测算系统的性能指标
  • 查找系统的性能瓶颈
  • 给出较适合的软硬件配置方案
  • 检验硬件配置能否满足客户要求

•自动化性能测试工具:LoadRunner、WebLoad、Apache JMeter, WAS,ACT 等。

负载测试和压力测试的区别:

•负载测试关注的是不同负载水平的系统的性能指标。为了得到压力数确定下的性能指数。例如我们可以找到系统的最大用户数和最佳用户数。
•压力测试则是关注在超高负载(超过系统最大用户数)的情况下,系统是否还能稳定处理,如果不能稳定处理,那么系统还能坚持多久。其重点是关注系统是如何失效的,以便于制定系统正式上线后的风险控制措施。

Web测试技术-安全性测试

•没有完全的安全性测试
•涉及安全技术、网络技术、程序设计以及防范攻击等知识

  • 认证与授权
  • 文件上传漏洞
  • 缓存溢出漏洞
  • SQL 注入
  • XSS 跨站攻击
  • DDoS拒绝服务攻击
认证和授权

•认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够做什么。
•认证:Authentication (who am I ?)
•认证实际上就是一个验证凭证的过程。
•多因素认证的强度要高于单因素的认证,但是在用户体验上,多因素认证或多或少会带来一些不方便的地方。
•密码策略:长度、复杂度,要经过不可逆的加密后保存在数据库中。
•多因素认证:支付宝

•登录失败的错误提示消息不应该明确告知是用户名不存在还是密码错误,避免客户端使用暴力破解方式。
•连接N 次登录失败,应该暂停用户登录。并将该信息发送给系统管理员,并告知客户端的IP 地址。举例:网银登陆3次锁定2小时。
•必须要登录成功后才能访问的页面中都需要用Session 对客户端进行验证,确认当前Session 已经登录过,否则访问该页面时应该自动跳转到登录页面。避免客户端直接在URL 地址栏输入某个地址进行访问,绕开登录验证。举例:OA复制URL访问。
•登录时应该使用图片验证码,避免机器人暴力工具。
目前图片验证码是被证明最可靠的防攻击手段之一。

文件上传漏洞 •对文件类型进行过滤,比如只能允许上传图片或压缩文件。不能允许用户上传可执行程序或代码
•不能单纯只是以文件的后缀名来进行类型的判断。把exe文件改成txt?
•文件上传的大小必须有限制。
缓存溢出漏洞 •缓存溢出即是功能性bug,也是安全性bug
•Mercury Quality Center所安装的以下ActiveX控件:Progid: SPIDERLib.LoaderClsid: 98C53984-8BF8-4D11-9B1C-C324FCA9CADEFile: C:\WINDOWS\Downloaded Program Files\Spider90.ocx
在处理超长的ProgColor属性时存在栈溢出漏洞,允许攻击者远程执行任意指令。
SQL注入 •定义:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力。
•由于没有对用户的输入数据进行必要的合法性判断,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些他想得到的数据。
•举例:
•在用户名输入框中输入:’or 1=1# ,密码随便输入,这时候的合成后的SQL查询语句为:
•select * from users where username='' or 1=1#' and password=md5('')
•等价于:select * from users where username='' or 1=1
•进而等价于:select * from users
XSS攻击 跨站脚本攻击Cross Site Scripting (也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。
拒绝服务 •Denial of Service(DoS)
•利用大量的虚假请求或电子邮件信息攻击服务器,致使服务器无法正常处理提交的合法请求
•SYN (Synchronize Denial of Service )攻击,耗完可用的TCP连接,利用“三次握手”的原理来实现攻击的目的。
•SYN Flood、xdos、独裁者
•有效的办法是使用硬件防火墙,它从物理线路上直接过滤掉虚假的SYN数据包