软件测试技术与测试实训教程黎连业王华李龙黎照北京:机械工业出版社2012.05第11讲:第11章功能测试和功能测试实训功能测试指测试软件各个功能模块是否正确。这种测试的目标是检查数据的接受、处理和检索是否正确,以及业务规则的实施是否恰当。此类测试基于黑盒技术,是单元测试的补充,该技术通过图形用户界面与应用程序进行交互,并对交互的结果进行分析,以此来核实应用程序及其内部进程。它虽是单元测试的补充,但又有不同之处,主要表现为:单元测试说明了代码执行是否正确;功能测试说明了完成的功能是否做正确的事情;单元测试往往是从代码开发人员的角度来看,而功能测试是从最终用户和业务过程角度来看。本章重点讨论以下内容:★功能测试的概述;★功能测试的重点;★常见功能测试的方法;★功能测试的常见流程;★功能测试的人工测试实训和操作方法;★功能测试的自动化测试实训操作方法。11.1功能测试的概述11.1.1功能测试的基本概念功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。功能测试一般须在完成单元测试后集成测试前进行,而且是针对应用系统进行各功能测试。一般应用系统有多个功能(子系统),功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用、是否实现了产品规格说明书的要求、是否能适当地接收输入数锯而产生正确的输出结果等。功能测试,包括用户界面测试、各种操作的测试、不同的数据输入、逻辑思路、数据输出和存储等的测试。对于功能测试,针对不同的应用系统,其测试内容的差异很大,但一般都可归为界面、数据、操作、逻辑、接口等几个方面如:★程序安装、启动正常,有相应的提示框、适当的错误提示等;★每项功能符合实际要求;★子系统的界面清晰、美观;菜单、按钮操作正常、灵活,能处理一些异常操作;★能接受正确的数据输入,对异常数据的输入可以进行提示、容错处理等;★数据的输出结果准确,格式清晰,可以保存和读取;★功能逻辑清楚,符合使用者习惯;★子系统的各种状态按照业务流程而变化,并保持稳定;★支持各种应用的环境,能配合多种硬件周边设备,与外部应用系统的接口有效。11.1.2功能自动化测试的基本要求功能测试是基于产品功能说明书并根据产品特征、操作描述和用户方案,来测试产品的每个功能是否都能正常使用、是否达到了产品规格说明书的要求。功能测试只需要考虑它的功能点不需要考虑软件的内部结构及代码等。功能测试包括用户界面测试、各种操作的测试、不同的数据输入、逻辑思路、数据输出和存储等的测试。1.功能测试在以下几种情况下引入自动化测试★测试时间相对长,且存在大量重复性、机械性人工测试的项目;★产品型软件,每发布一个新的版本或打补丁都需要对其他模块执行相同的测试;★项目型软件,需求变更频繁,每变更一次,需要对原有的无争议的功能做测试;★经常需要更换应用程序部署站点的软件,每更换一次需要对所有功能做验证测试;★测试时间相对长,且存在大量需要执行回归测试的软件项目;★系统界面稳定,需要对业务流程进行验证测试的软件;★采用增量开发持续集成的项目,需要对频繁更新的程序执行验证测试;★软件项目采用主流开发平台技术,且不存在物理交互的测试,如刷卡测试;★项目工期紧、测试周期短的项目不应采取自动化测试;★界面的美观、声音的体验和易用性的测试不应采取自动化测试。一般来说,把自动化测试的工作集中在关键的业务过程,复杂应用,以及由这些组成的用例方面(相对于低级别任务,例如系统级的验证)是很有意义的。人工测试在功能测试中的优势还是比较大的,工具本身并没有想象力和灵活性,而人对界面美观性、逻辑合理性,容易作出判断。2.功能自动化测试需要解决的问题(1)开始之前在功能自动化测试项目开始之前,应该全面地调查和了解:1)测试过程自动化的成本是多少?2)其投资回报率是什么?3)哪些应用/过程适合做自动化测试,哪些不合适?4)是否需要新的培训,这将对当前的开发计划安排产生怎样的影响?5)自动化测试得正确地方法论是什么?6)自动化测试时涉及到哪些情况?7)当比较自动化测试产品时,哪些功能最重要?(2)开始功能自动化测试需要解决的问题1)准备数据如系统的基础数据、用户、权限等,没有这些就无法登录和执行其他操作。2)复杂操作比如提交一张表单,然后到了list页面想要删除这条记录,可是id是自动生成的,不知道该删哪个?3)测试太脆弱不像单元测试,重构的时候可以一并改了,功能测试针对界面,所以需要手工维护,否则很容易失败。4)测试比较麻烦。5)执行速度比较慢。6)带验证码的页面没法测。11.1.3功能测试需要的参考文档(1)产品功能说明书;(2)产品需求说明书;(3)产品概要说明书;(4)产品测试大纲;(5)功能测试所需的测试用例。11.2功能测试的重点功能测试工作一般由程序员担当,测试的结果交系统设计、测试人员审核通过。功能测试的重点应注意如下两大点内容:1.整体性(1)符合标准和规范;(2)直观性;(3)一致性;(4)灵活性。2.重点性(1)确认每个功能是否都能正常使用,每项功能符合实际要求;(2)是否实现了产品规格说明书的要求;(3)否能适当地接收输入数据而产生正确的输出结果;(4)用户界面测试、是否有相应的提示框、适当的错误提示;(5)系统的界面是否清晰、美观;(6)菜单、按钮操作正常、灵活,能处理一些异常操作;(7)是否能接受不同的数据输入(能接受正确的数据输入,对异常数据的输入可以进行提示、容错处理);(8)数据的输出结果准确,格式清晰,可以保存和读取;(9)功能逻辑清楚,符合使用者习惯;(10)系统的各种状态按照业务流程而变化,并保持稳定;(11)支持各种应用的环境,能配合多种硬件周边设备,与外部应用系统的接口有效;(12)软件升级后,能继续支持旧版本的数据。11.3常见功能测试的方法功能测试应根据应用系统所规定的功能进行有效的测试。测试的方法有多种。现叙述如下。11.3.1安装测试安装测试重点考虑以下10点问题。1)安装过程中对于缺省安装目录及任意指定的安装目录,是否都能正确安装。2)若是选择安装,查看能否实现其相应的功能3)在所有能中途退出安装的位置退出安装程序后,验证此程序并未安装成功(没有程序组及程序项产生)4)软件安装后,对其它已经安装的软件是否有影响5)裸机安装后,各功能点是否可用6)安装前,安装程序是否判断可用磁盘空间大小,如果不能满足安装空间要求,安装程序能否继续7)安装过程中检查:版权声明、版本信息、公司名称等是否符合标准8)安装过程中界面显示与提示语言是否准确9)重新安装时系统是否有提示、是否可以覆盖安装、是否可以升级安装、是否允许多版本共存10)是否有注册码或硬件加密狗,在没有它们(或错误)存在的情况下能否顺利安装。11.3.2卸载测试卸载测试重点考虑以下11点问题。1)卸载后注册表中的注册信息及相关的程序安装目录是否能完全删除掉2)卸载过程中完全删除共享文件后,看其它程序能否正常运行3)卸载后,是否对其它已经安装的软件有影响4)系统卸载后用户建立文档是否保留5)软件卸载画面上的软件名称及版本信息是否正确6)检查卸载中途退出卸载,是否能正确退出7)卸载过程中界面提示语言是否准确、友好8)卸载后系统能否打开原来保存的文件,并一切运行正常9)卸载程序如果要求重新启动机器,在重启动之间是否给用户提示以保存现有的己运行的程序的资料10)是否可以选择组件进行卸载11)在卸载过程中,是否有终止或者结束按钮。11.3.3运行与关闭测试运行与关闭测试测试重点考虑以下7点问题。1)运行时是否与其它应用程序有冲突(内存冲突)2)是否可以同时运行多个程序3)任务栏有无程序运行提示4)若有未保存的数据,关闭系统时是否有提示5)后台服务程序在点击关闭按钮时是否有确认提示6)运行时是否过份占用系统资源、退出时能否完成释放占用的系统资源。7)打印机运行测试11.3.4菜单(menu)功能测试测试重点考虑以下2点问题。(1)各模块链接地址是否正确。(2)鼠标无规则点击时是否会产生无法预料的结果。11.3.6选择(selection)功能测试选择测试重点考虑以下10点问题。11.3.7搜查功能测试的方法搜查(search)功能测试重点考虑以下8点问题。11.3.8统计(Statistic)功能测试的方法统计功能测试重点考虑以下9点问题。11.3.9Web功能测试的方法Web功能测试通常又称为网站(网页)测试。测试的方法主要有如下20点:请参见机械工业出版社《软件测试技术与测试实训教程》(2012.01)第1版第11章11.3.9节的内容11.3.10翻页功能测试的方法对于翻页功能,网上讨论的也很多,内容都非常相近。我们以经常要用到的功能,作如下介绍。1.首页、上一页、下一页、尾页。★有无数据时控件的显示情况;★在首页时,首页和上一页是否能点击;★在尾页时,下一页和尾页是否能点击;★在非首页和非尾页时,按钮功能是否正确;★翻页后,列表中的记录是否仍按照指定的排序列进行了排序。2.总页数,当前页数★总页数是否等于总的记录数/指定每页条数;★当前页数是否正确。3.指定跳转页★是否能正常跳转到指定的页数;★输入的跳转页数非法时的处理。4.指定每页显示条数★是否有默认的指定每页显示条数;★指定每页的条数后,列表显示的记录数,页数是否正确;★输入的每页条数非法时的处理。11.4功能测试的常见流程功能测测是对每个功能点进行测试。我们是在各个功能测试成功的基础上,进行各个子系统的测试。每个子系统是由若干个功能所组成的,子系统设计成功与否,不仅决定于每个功能测试成功与否,还决定了按信息传递先后次序串联起来的功能测试成功与否。因此,子系统的测试是一种连接的测试。在功能测试之前必需要做好充分的准备工作:(1)作好功能联系图对于子系统范围内所有功能,它们之间的相互关系要充分了解,把各功能通过接口文件相互联系起来,绘成功能联系图。(2)作好作业联系图子系统范围内的所有功能可以分成若干个作业,每个作业由若干个程序所组成,作业是上机执行单位,为了掌握作业执行的先后次序,要按作业为单位,并相互联系起来绘成作业联系图。完成了以上准备工作以后,为了确保各功能各程序的逻辑性,还需要再制作一套新的测试数据进行测试,以便进一步考验程序。对测试中发现的问题要及时地进行程序的修改,边测边改,直至测试成功。子系统(功能)测试过程中,必须要合理地组织人员。将系统设计人员和程序设计人员统一调度使用,分成三部分。一部分上机测试人员,一部分机下检查核对人员,还有一部分是程序修改人员。这三方面人员应该紧密配合,互相协调,保证子系统测试工作的顺利进行。功能测试的写作模板请参阅本书第22章22.11功能测试写作模板。11.5功能测试的人工测试实训和操作方法本章11.1节~11.4节我们主要是介绍了有关功能测试的一些实用技术,下面我们就要进入实际动手操作的环节。功能测试的内容多,我们仅对安装卸载测试和系统登陆进行人工测试实训。11.5.1安装卸载测试对于应用系统的安装/卸载测试,主要了解安装/卸载过程可能出现的各种各样的问题,尝试着使用各安装/卸载方法,验证安装/卸载过程中可能出现的各种异常情况,完善保证安装/卸载后系统能够正确运行。安装卸载测试需要填写的表安装卸载测试需要填写的表,如表11-1所示。安装根据手机信息管理系统模型安装向导,一步一步的进行安装,验证安装过程是否完全正确,能否按照安装指导说明书上所说的那样进行安装,安装程序能否正确运行,程序安装后能否正确运行。选择各种安装模式(中文安装模式、English安装模式),是否能够完整的实现其功能。安装界面如图11-1所示。手机信息管理系统模型安装测试的测试用例和人工测试实训操作方法手机信息管理系统模型安装测试的测试用例和人工测试实训操作方法,如表11-2所示。4.手机信息管理系统模型卸载测试的测试用例和人工测试实训操作方法卸载测试主要观察卸载过程后,系统中是否留有“多余”的数据,文件夹(安装包是否保留)卸载界面如图11-2所