软件测试是伴随着软件的出现而产生的,也随着软件技术和软件应用的发展而不断发展,己经成为软件工程理论和实践活动的重要组成部分。广义的软件测试包含测试的理论、方法、技术、标准、工具以及组织管理等内容。
软件测试的定义:在要求的条件下进行执行操作,发现软件缺陷,判定程序质量,以及是否能够满足设计的要求进行评估的过程。它不止是用来简单的发现错误的,而是用来保证软件质量的。
第三方测试是指独立于客户方和开发方进行的软件评测,第三方基于国家认可的检测资质,严格按照国家出台的政策标准,站在客观公正的角度,提供公平、公正、独立的第三方软件评测结果和评测报告。
第三方测试的目的是验证平台、软件的功能是否达到了建设单位与供应商签订的软件开发合同中约定的各项功能要求;验证平台、软件的性能是否达到了建设单位与供应商签订的软件开发合同中约定的各项性能要求;验证平台、软件是否存在安全漏洞。它不同于开发人员或者用户的自测试,保证了评测的客观性、独立性、专业性;第三方测试团队的出现实现了开发方、用户方、测试三方的权责分开,使问题得以客观解决,有效降低了项目失败的风险。
软件测试概括有四个方面作用。
全面地评估软件产品的质量,为软件产品的发布、软件系统部署、软件产品的鉴定委托方和被委托方系统开发完成和其他决策提供产品质量的各种信息,能够提供准确、客观、完整的软件产品质量报告。
通过持续地测试(包括需求评审、设计评审、代码评审)可以对产品质量提供持续的、快速的反馈,从而在整个开发过程中不断地、及时地解决存在的质量问题,不断改进产品的质量、并减少各种返工,最大限度的降低软件开发的成本。
通过测试发现所要交付产品的缺陷,特别是尽可能地发现各种严重的缺陷,降低或消除产品的质量,提高客户的满意度,扩大市场份额,提升产品的影响力。
通过对缺陷的分析,找出缺陷发生的根本原因或总结出软件缺陷模式,采取措施纠正深层次的问题,避免同类问题发生,达到预防的效果,有效减少开发中出现的问题,提高开发的效率。
1. 功能测试
关注功能是否正确,根据产品和测试需求列表,验证产品的功能实现是否符合产品的需求规格。
测试方法:
根据被测软件产品的特点,采用功能分解法、等价类划分法、边界值分析法、因果图法/判定表法、随机测试法、错误推测法、入侵测试、静态测试等黑盒测试技术,要求必须将所有的测试需求细化到最基本的功能点,通过设计覆盖全部软件产品功能的测试用例的方法,从适合性、完备性、正确性和功能性的依从性等方面对软件产品全部功能性进行质量测试,并将功能性检测结果与软件产品功能要求比较,评价该软件产品功能的符合性。
2. 性能测试
关注产品是否能够高效运行,用来测试软件在系统中的运行性能。负载、压力、容量测试等都属于这一范畴。
测试方法:
根据被测软件产品的特点,采用性能测试、负荷测试、容量测试、强度测试等黑盒测试技术,通过使用通用或专用测试工具及设备和设计测试用例的方法,从时间特性、资源利用性、容量和性能效率的依从性等方面对软件产品的效率进行质量测试,并将性能效率测试结果与软件产品性能效率要求比较评价软件产品效率的符合性。
3. 兼容性测试
关注在共享相同的硬件或软件环境下,产品、系统或组件能够与其他产品、系统或组件交换信息或执行其所需的功能的程度。
测试方法:
根据被测软件产品的特点,采用功能验证方法从共存性、互操作性、兼容性的依从性等方面对软件产品的兼容性进行质量测试,并将兼容性测试结果与软件产品兼容性要求比较,评价软件产品的兼容性的符合性。
4. 易用性测试
关注产品是否好用,易用性是指在特定的环境下,产品为特定用户用于特定目的的时候所具有的有效性、效率和主观满意度。常见的易用性测试大多都是基于界面的测试,体现在易用、易懂、简捷、美观等方面。
测试方法:
根据被测软件产品的特点,采用验证软件执行的各种操作/输入/问题/消息/结果的易理解性、检查文档和帮助信息、模拟演示界面的互操作性、验证安装性等黒盒测试技术,通过验证、检查和设计测试用例的方法,从可辨识性、易学性、易操作性、用户差错防御性、用户界面舒适性、易访问性、易用性的依从性等方面对软件产品的易用性进行质暈测试,并将易用性测试结果与软件产品易用性要求比较,评价软件产品的易用性的符合性。
5. 可靠性测试
关注产品是否稳定可靠,为了达到或验证用户对软件的可靠性要求而对软件进行测试。通过测试发现并纠正软件中的缺陷,提高其可靠性水平,并验证他是否达到了用户的可靠性要求。可靠性测试包括了软件的健壮、稳定、容错、自恢复等方面。
测试方法:
根据被测软件产品的特点,采用错误猜测方法、错误恢复、仿真模拟技术、敏感性测试、恢复性测试和稳定性测试等黑盒测试技术,通过设计软件产品的可靠性测试用例的方法,从成熟性、可用性、容错性、易恢复性和可靠性的依从性等方面对软件产品的可靠性进行质量测试,并将可靠性测试结果与软件产品可靠性要求比较,评价软件产品的可靠性的符合性。
6. 信息安全性测试
关注产品是否存在漏洞,为验证应用程序的安全等级和识别潜在安全性缺陷的过程。
测试方法:
根据被测软件产品的特点,采用功能验证、漏洞扫描、模拟攻击等方法,采用安全渗透测试(如SQL注入漏洞,跨站脚本漏洞,文件上传漏洞,越权漏洞,敏感信息泄漏漏洞,失效的身份认证和会话管理漏洞,安全配置错误漏洞,未验证的重定向和转发漏洞等,验证身份认证、传输安全、安全审计、资源控制、数据安全等,是否存在潜在的安全性缺陷。从保密性、完整性、抗抵赖性、可核查性、真实性、信息安全性的依从性等方面对软件产品的信息安全性进行质量测试,并将信息安全性测试结果与将信息安全性要求比较,评价软件产品的信息安全性的符合性。
7. 维护性测试
关注为便于维护活动的一种产品或系统固有的能力,或者为了产品或系统维护的目标维护人员所经历的使用质量。
测试方法:
根据被测软件产品的特点,采用接口测试技术、流程控制测试、数据流测试和模块黑盒测试技术,通过验证、检查和测试用例的方法,测试样品软件产品或系统能够被预期的维护人员修改的有效性和效率的程度。修改可能包括纠正、改进或软件对环境、需求和功能规格说明变化的适应,修改包括那些由专业支持人员实施的,以及那些由业务或操作人员、最终用户实施的,包括安装更新和安装升级。诊断软件中的缺陷或失效原因或识别待修改部分的能力。从模块化、可重用性、易分析性、易修改性、易测试性和维护的依从性等方面对软件产品的维护性进行质量测试,并将维护性测试结果与软件产品维护性要求比较,评价软件产品维护性的符合性。
8. 可移植性测试
关注产品是都适用多种平台,主要为了检查软件在不同的软/硬件平台上是否可以正常的运行的一种测试。
测试方法:
根据被测软件产品的特点,采用兼容性和互操作性测试、配置/安装测试、跨平台测试、数据升级测试、符合性测试等黑盒测试技术,通过设计测试用例和采用专用符合性工具的方法,检测软件从一种硬件、软件或其他运行(或使用)环境迁移到另一种环境的能力。从适应性、易安装性、易替换性和可移植性的依从性等方面对软件产品的可移植性质量特性进行测试,并将可移植性的测试结果与软件产品可移植性要求比较,评价软件产品可移植性的符合性。
9. 产品说明及用户文档集
在《GB/T 25000. 51-2016系统与软件工程系统与软件质量要求和评价(SQuaRE)第51部分:就绪可用软件产品(RUSP)的质量要求和测试细则》中用户文档集要求、产品说明要求要求。
测试方法:
根据被测软件产品的特点,通过专家评审、文档审查、系统运行检查的方法,对被测软件的用户文档集内容进行测试,评价软件产品的文档集与被测软件产品文档集要求的符合性。重点验证检查其完备性、正确性、一致性、易理解性、易学性、可操作性。