课件

14.3软件功能测试.pdf

功能测试

上节 软件测试类型 提到功能测试是软件测试中工作量最大的一项工作,它是从用户的角度进行功能验证,以确认每一个功能是否能够正常使用。

界面、数据、操作、逻辑和接口这些都是功能测试需要考虑的主要方面。下面列出一些常用的功能测试检查项目:
CleanShot 2022-05-14 at 3 PM.59.54@2x.png

功能测试方法

CleanShot 2022-05-14 at 4 PM.03.14@2x.png
功能测试主要采用黑盒测试方法,它是结合测试内容对功能进行测试,同时在测试的过程中,对用户需求、设计文档和使用手册进行检查。

设计测试用例,要求:

  • 有代表性和典型性
  • 尽可能地发现更多的系统弱点
  • 除了正确的输入之外,还要考虑错误或异常的输入
  • 考虑用户实际使用的各种场景

回顾:测试用例文档

CleanShot 2022-05-14 at 4 PM.04.58@2x.png
这是 软件测试类型 提到的测试用例文档的示例,它主要包括测试环境、测试步骤、输入数据和预期结果等内容

回顾:等价类划分

在第 4 章介绍过等价类分析方法,这是一种典型的黑盒测试方法,它是把程序中所有可能的输入数据划分成若干个等价类,然后从每个等价类中选取具有代表性的数据作为测试用例,测试用例应该由有效等价类和无效等价类的代表组成。
CleanShot 2022-05-14 at 4 PM.08.06@2x.png

回顾:边界值分析

边界值分析是对输入或输出的边界值进行测试的一种方法。通常是作为等价类划分法的一个补充,它的测试用例来自于等价类的边界。
CleanShot 2022-05-14 at 4 PM.09.56@2x.png

场景法

场景法也是一种常用的功能测试方法,主要是根据业务流程生成一系列业务场景,再对应业务场景设计出相应的测试用例,从而发现需求和实现过程中存在的问题:
CleanShot 2022-05-14 at 4 PM.20.09@2x.png

以 ATM 取款为例,说明如何使用场景法设计测试用例
CleanShot 2022-05-14 at 4 PM.21.27@2x.png
正常情况下,用户把银行卡插入ATM机中,如果银行卡是合法的,ATM机就会提示用户输入银行卡的密码,如果密码正确而且取款金额符合要求,那么ATM机就点钞并且送出给用户,这样用户就可以成功取款。

设计测试用例的第一步,是根据需求说明描述出系统的基本流以及各项备选流。其中基本流代表正常的业务流程备选流代表一些失败或者意外的情况。在ATM取款这个例子中,正常流程就是刚才所说的成功取款的过程,但是实际操作时还有可能出现一些意外情况,比如下表所示:
CleanShot 2022-05-14 at 4 PM.26.32@2x.png

第二步,根据基本流和各种备选流我们可以生成不同的场景,这里列出了ATM取款的各种场景,如下表所示:
CleanShot 2022-05-14 at 4 PM.28.10@2x.png

第三步,对每一个场景生成相应的测试用例,最后对生成的所有测试用例进行检查,去除多余的测试用例。在测试用例确定之后,对每个测试用例选取合适的测试数据,下表给出ATM取款的部分测试用例:
CleanShot 2022-05-14 at 4 PM.29.51@2x.png

错误推测法

错误推测法也是一种常用的方法,我们可以根据经验或者直觉,推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例。
CleanShot 2022-05-14 at 4 PM.33.41@2x.png

Web应用功能测试

Web 应用系统涉及到比较复杂的硬件、软件、网络和业务逻辑,相应的测试也需要考虑更多的环节,一个 Web 应用系统通常需要服务于广大的用户群体,它本身只需要一个服务器端,但是需要通过各种各样的客户端来满足不同用户的要求,它的主要功能是使用 HTML、JavaScript 等语言,来将文本、图形、音频、视频的内容展现给用户,具有持续演化和及时性的特点,并且要求有良好的感观和一定的安全保障。

Web 应用功能测试主要是用来检测 Web 应用软件是否实现了预期的功能。
CleanShot 2022-05-14 at 4 PM.38.19@2x.png
对于网页来说,主要包括内容测试、链接测试、表单测试、Cookies测试。网站测试是在网页测试的基础上进行,具体包括特定功能的测试、数据库测试、设计语言测试等。

内容测试

内容测试主要是检测 Web 应用网页提供的信息,具体包括正确性、准确性和相关性三个方面。

  • 正确性:是指信息要是真实可靠,避免出现虚假内容。
  • 准确性:是指网页的文字表述要符合语法逻辑,没有拼写错误。测试人员需要检查网页面内容的文字表达是否恰当,样式看起来是否舒服。
  • 相关性:是指能否在当前网页找到与浏览信息相关的信息列表或者入口,有时网页上的图片还对应着文字标签,当用户把鼠标移动到图片上的时候,会弹出相关的文字说明。

CleanShot 2022-05-14 at 4 PM.44.35@2x.png
比如,当当网搜索图书的页面,进行内容测试时要检查两个部分,第一是对于指定的搜索关键字,比如说软件工程,检查是否列出含有软件工程名词的图书。第二是对于图书封面,当鼠标停留或滑过封面的图片时,应该显示相应的商品名称。

链接测试

网页上的链接可以使用户从一个页面浏览到另一个页面,链接测试主要是检查三个方面的问题:

  • 第一,用户点击链接是否可以顺利打开所要浏览的内容
  • 第二,所要链接的页面是否存在
  • 第三,要保证系统中没有孤立的页面。所谓孤立页面就是没有任何链接指向的页面

链接测试可以手动进行,也可以用工具自动检查。

表单测试

当用户向 Web 应用系统提交信息的时候,就需要使用表单操作。表单测试是模拟表单提交过程,检测其准确性,确保提交信息在整个过程中是正确的。表单测试主要考虑以下方面:

  • 表单的提交应该模拟用户的提交,以便验证是否完成了预期的功能
  • 测试提交操作的完整性,检查提交给服务器的信息是否正确
  • 验证数据的正确性以及异常处理的能力,注意是否符合易用性要求
  • 测试表单时会涉及到数据校验的问题,需要根据给定的规则对用户的输入进行校验

Cookies测试

CleanShot 2022-05-14 at 5 PM.13.16@2x.png
用户在访问网站的时候,Web 服务器会将一小部分信息存放在客户端的计算机上,Cookie 可以把用户在网站上的输入信息或者是一些选择都记录下来,当用户再一次访问网站的时候,Web 应用程序就可以直接读取 Cookie 包含的信息。

CleanShot 2022-05-14 at 5 PM.15.15@2x.png
这是新浪微博的登录页面,在做 Cookie 测试时需要检查下面的情况,比如:

  • 是否有 Cookie 记录,登陆成功之后这个记录是不是有问题
  • Cookie 信息是否进行加密,存放路径是否正确
  • 如果浏览器设置为不保存 Cookie,那么关闭浏览器之后,检查 Cookie 是否自动删除
  • 检查 Cookie 的时效,在有效时间里是否自动登陆,到期之后是否自动从本地删除、登陆状态是否自动退出
  • 用户登录之后再手动删除 Cookie,或者用户修改密码之后再次登陆,检查是否退出自动登陆

特定功能测试

测试人员需要对 Web 网站特定的功能需求进行验证,需要强调的是,应该是从用户实际的需要,而不是从产品本身呈现的进行评判。

数据库测试

数据库是 Web 应用中的重要部分,一般的数据库错误主要是由于用户提交错误的表单信息,或者程序设计本身的问题引起的:
CleanShot 2022-05-14 at 5 PM.19.53@2x.png
测试人员在了解数据库结构和设计内容之后,可以使用破坏性手段或者在并发环境下,来检查数据的完整性和一致性。

设计语言测试

设计语言版本的不同也会引起客户端或服务器端比较严重的问题,例如使用哪种版本的 HTML 等。此外,使用Java、JavaScript、ActiveX、VBScript 或 Perl 等开发的应用程序也要在不同的版本上进行验证。

兼容性测试

兼容性测试也非常关键,我们需要测试不同的操作系统平台、浏览器、显示分辨率以及打印机等外部设备:

  • 平台测试:市场上有很多不同的操作系统,常见的有 Windows、 Unix、Mac OS、 Linux 等, 同一个应用可能在某些操作系统下能正常运行,但在另一些操作系统下可能会运行失败。
  • 浏览器测试:浏览器是 Web 系统客户端最核心的软件,来自不同厂商的浏览器对 Java、 JavaScript、 ActiveX、plug-ins 或不同的 HTML 有不同的支持,并且有些 HTML 命令或脚本只能在某些特定的浏览器上运行。
  • 分辨率测试:应检查页面版式在不同的分辨率模式下是否显示正常、字体大小是否合适于浏览、文本和图片是否对齐等。
  • 打印机测试:用户可能会将网页打印下来,需要验证网页打印是否正常。有时在屏幕上显 示的图片和文本的对齐方式可能与打印出来的东西不一样,测试人员至少需要验证订单确 认页面打印是正常的。