课件
功能测试
上节 软件测试类型 提到功能测试是软件测试中工作量最大的一项工作,它是从用户的角度进行功能验证,以确认每一个功能是否能够正常使用。
界面、数据、操作、逻辑和接口这些都是功能测试需要考虑的主要方面。下面列出一些常用的功能测试检查项目:
功能测试方法
功能测试主要采用黑盒测试方法,它是结合测试内容对功能进行测试,同时在测试的过程中,对用户需求、设计文档和使用手册进行检查。
设计测试用例,要求:
- 有代表性和典型性
- 尽可能地发现更多的系统弱点
- 除了正确的输入之外,还要考虑错误或异常的输入
- 考虑用户实际使用的各种场景
回顾:测试用例文档
这是 软件测试类型 提到的测试用例文档的示例,它主要包括测试环境、测试步骤、输入数据和预期结果等内容
回顾:等价类划分
在第 4 章介绍过等价类分析方法,这是一种典型的黑盒测试方法,它是把程序中所有可能的输入数据划分成若干个等价类,然后从每个等价类中选取具有代表性的数据作为测试用例,测试用例应该由有效等价类和无效等价类的代表组成。
回顾:边界值分析
边界值分析是对输入或输出的边界值进行测试的一种方法。通常是作为等价类划分法的一个补充,它的测试用例来自于等价类的边界。
场景法
场景法也是一种常用的功能测试方法,主要是根据业务流程生成一系列业务场景,再对应业务场景设计出相应的测试用例,从而发现需求和实现过程中存在的问题:
以 ATM 取款为例,说明如何使用场景法设计测试用例
正常情况下,用户把银行卡插入ATM机中,如果银行卡是合法的,ATM机就会提示用户输入银行卡的密码,如果密码正确而且取款金额符合要求,那么ATM机就点钞并且送出给用户,这样用户就可以成功取款。
设计测试用例的第一步,是根据需求说明描述出系统的基本流以及各项备选流。其中基本流代表正常的业务流程,备选流代表一些失败或者意外的情况。在ATM取款这个例子中,正常流程就是刚才所说的成功取款的过程,但是实际操作时还有可能出现一些意外情况,比如下表所示:
第二步,根据基本流和各种备选流我们可以生成不同的场景,这里列出了ATM取款的各种场景,如下表所示:
第三步,对每一个场景生成相应的测试用例,最后对生成的所有测试用例进行检查,去除多余的测试用例。在测试用例确定之后,对每个测试用例选取合适的测试数据,下表给出ATM取款的部分测试用例:
错误推测法
错误推测法也是一种常用的方法,我们可以根据经验或者直觉,推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例。
Web应用功能测试
Web 应用系统涉及到比较复杂的硬件、软件、网络和业务逻辑,相应的测试也需要考虑更多的环节,一个 Web 应用系统通常需要服务于广大的用户群体,它本身只需要一个服务器端,但是需要通过各种各样的客户端来满足不同用户的要求,它的主要功能是使用 HTML、JavaScript 等语言,来将文本、图形、音频、视频的内容展现给用户,具有持续演化和及时性的特点,并且要求有良好的感观和一定的安全保障。
Web 应用功能测试主要是用来检测 Web 应用软件是否实现了预期的功能。
对于网页来说,主要包括内容测试、链接测试、表单测试、Cookies测试。网站测试是在网页测试的基础上进行,具体包括特定功能的测试、数据库测试、设计语言测试等。
内容测试
内容测试主要是检测 Web 应用网页提供的信息,具体包括正确性、准确性和相关性三个方面。
- 正确性:是指信息要是真实可靠,避免出现虚假内容。
- 准确性:是指网页的文字表述要符合语法逻辑,没有拼写错误。测试人员需要检查网页面内容的文字表达是否恰当,样式看起来是否舒服。
- 相关性:是指能否在当前网页找到与浏览信息相关的信息列表或者入口,有时网页上的图片还对应着文字标签,当用户把鼠标移动到图片上的时候,会弹出相关的文字说明。
比如,当当网搜索图书的页面,进行内容测试时要检查两个部分,第一是对于指定的搜索关键字,比如说软件工程,检查是否列出含有软件工程名词的图书。第二是对于图书封面,当鼠标停留或滑过封面的图片时,应该显示相应的商品名称。
链接测试
网页上的链接可以使用户从一个页面浏览到另一个页面,链接测试主要是检查三个方面的问题:
- 第一,用户点击链接是否可以顺利打开所要浏览的内容
- 第二,所要链接的页面是否存在
- 第三,要保证系统中没有孤立的页面。所谓孤立页面就是没有任何链接指向的页面
链接测试可以手动进行,也可以用工具自动检查。
表单测试
当用户向 Web 应用系统提交信息的时候,就需要使用表单操作。表单测试是模拟表单提交过程,检测其准确性,确保提交信息在整个过程中是正确的。表单测试主要考虑以下方面:
- 表单的提交应该模拟用户的提交,以便验证是否完成了预期的功能
- 测试提交操作的完整性,检查提交给服务器的信息是否正确
- 验证数据的正确性以及异常处理的能力,注意是否符合易用性要求
- 测试表单时会涉及到数据校验的问题,需要根据给定的规则对用户的输入进行校验
Cookies测试
用户在访问网站的时候,Web 服务器会将一小部分信息存放在客户端的计算机上,Cookie 可以把用户在网站上的输入信息或者是一些选择都记录下来,当用户再一次访问网站的时候,Web 应用程序就可以直接读取 Cookie 包含的信息。
这是新浪微博的登录页面,在做 Cookie 测试时需要检查下面的情况,比如:
- 是否有 Cookie 记录,登陆成功之后这个记录是不是有问题
- Cookie 信息是否进行加密,存放路径是否正确
- 如果浏览器设置为不保存 Cookie,那么关闭浏览器之后,检查 Cookie 是否自动删除
- 检查 Cookie 的时效,在有效时间里是否自动登陆,到期之后是否自动从本地删除、登陆状态是否自动退出
- 用户登录之后再手动删除 Cookie,或者用户修改密码之后再次登陆,检查是否退出自动登陆
特定功能测试
测试人员需要对 Web 网站特定的功能需求进行验证,需要强调的是,应该是从用户实际的需要,而不是从产品本身呈现的进行评判。
数据库测试
数据库是 Web 应用中的重要部分,一般的数据库错误主要是由于用户提交错误的表单信息,或者程序设计本身的问题引起的:
测试人员在了解数据库结构和设计内容之后,可以使用破坏性手段或者在并发环境下,来检查数据的完整性和一致性。
设计语言测试
设计语言版本的不同也会引起客户端或服务器端比较严重的问题,例如使用哪种版本的 HTML 等。此外,使用Java、JavaScript、ActiveX、VBScript 或 Perl 等开发的应用程序也要在不同的版本上进行验证。
兼容性测试
兼容性测试也非常关键,我们需要测试不同的操作系统平台、浏览器、显示分辨率以及打印机等外部设备:
- 平台测试:市场上有很多不同的操作系统,常见的有 Windows、 Unix、Mac OS、 Linux 等, 同一个应用可能在某些操作系统下能正常运行,但在另一些操作系统下可能会运行失败。
- 浏览器测试:浏览器是 Web 系统客户端最核心的软件,来自不同厂商的浏览器对 Java、 JavaScript、 ActiveX、plug-ins 或不同的 HTML 有不同的支持,并且有些 HTML 命令或脚本只能在某些特定的浏览器上运行。
- 分辨率测试:应检查页面版式在不同的分辨率模式下是否显示正常、字体大小是否合适于浏览、文本和图片是否对齐等。
- 打印机测试:用户可能会将网页打印下来,需要验证网页打印是否正常。有时在屏幕上显 示的图片和文本的对齐方式可能与打印出来的东西不一样,测试人员至少需要验证订单确 认页面打印是正常的。