软件测试级别之系统测试

1. 系统测试的概念、对象、环境及目标
(1)概念
系统测试主要从系统的角度来检验和寻找缺陷。这部分测试主要包含功能测试、性能测试、安全测试、可靠性测试、恢复性测试与兼容性测试等。
(2)对象与环境
经过集成测试,软件已完全组合起来,因此,系统测试将系统作为一个整体
进行测试。系统测试应尽可能在与目标运行环境一致的情况下进行。在测试平台
上,安装要用到的硬件和软件,如硬件设备、软件、驱动程序、网络环境与外部
系统等,以替代测试驱动器和桩。 系统测试需要独立的测试环境,系统测试如果在客户的运行环境下执行,而非在独立的环境下测试,会有较大的风险。其原因如下:

  1. 系统测试时,很可能发生失效并对客户的运行环境造成破坏,在系统发生系统崩溃和数据丢失的代价是严重与巨大的。
  2. 测试者对运行环境的参数设置与配置的控制可能有限,或完全没有,容易产生失控。
  3. 由于客户环境下的其他系统在测试时也同时在运行,测试条件可能会逐渐发生变更 ,使得系统测试执行不能重现,或很难重现 这将验证影响测试结果,造成测试结论的失真。因此,不应低估系统测试的难度,以免造成测试计划实施
    的延迟和产生不正确的结果。

(3)目标
系统测试的目标是,确认整个系统是否满足了软件规格说明中的功能性和非功能性的各项需求,以及满足的程度,系统测试应能够发现和找出因需求不正确、不完整或实现与需求之间的不一致而引起的失效,并识别在没有文档化时或被遗失的那些需求。

2. 系统的功能性测试
功能性测试包括验证系统输入/输出行为的各种测试。功能性测试的基础是功能需求,功能需求详细地描述了系统行为,定义了系统必须完成的功能。这些需求的实现是系统正确使用的前提条件。根据ISO/IEC 9126的定义与说明,功能特性包括适应性、准确性、互操作性和安全性等。
功能性测试一般采用黑盒测试技术。功能性测试可在软件生命周期的不同阶段进行,可采用人工测试与自动化测试相结合的测试策略与技术手段。功能测试可细分为逻辑功能测试、界面测试、易用性测试、安装测试等,而其中最重要的是逻辑功能测试。
(1)逻辑功能测试
逻辑功能测试的基本思路是设计和运用某种测试方法,根据软件规格说明(软件要达到的功能)构造一些合理的输入(测试用例)并输入软件,检查是否得到期望结果输出,即使用有限的输入值来测试和验证软件的逻辑(业务)助能。
逻辑功能测试常采用动态测试技术,如等价类划分法、边界值法、因果图法、决策表法、状态转换法、配对法(正交试验法)等。
(2) 界面测试
界面测试(User Interface Testing) 可列入功能测试的范畴,它在软件中所占的分量逐新增加,这是因为现在软件中用户的选择性操作(或交互行为)不断地增加。界面测试内容丰富、形式多样,主要有以下测试内容:

  1. 针对窗口
  • 窗口是否基于相关的输入和菜单命令适当地打开及关闭。
  • 窗口能否改变大小、移动和滚动。
  • 窗口中的数据项和内容能否用鼠标、功能键、方向键和键盘访问。
  • 当窗口被覆盖并里新调用时,窗口能否正确地里现。
  • 所有窗口相关功能是否可操作。
  • 窗口是否有相关下拉菜单、工具栏、滚动条、对话框、按钮、图标和其他控制,并适当地显示。
  • 在多个窗口同时打开时,能否正确地表示。
  • 被激活的窗口是否被加亮。
  • 调用多任务时是否所有窗口能被实时更新、
    不正确地单击鼠标是否会导致无法预料的结果发生。
  1. 针对下拉式菜单和鼠标操作
  • 菜单条目是否显示在合适的环境中。
  • 下拉式菜单操作时能否正确地工作。
  • 鼠标操作时能否正确地工作。
  1. 针对数据项
  • 字母、数字数据项能否正确地回显井输入系统中。
  • 图像模式的数据项(如滚动条)能否正常地工作。
  • 能否识别非法数据。
  • 数据输入消息能否被正确理解。

(3) 易用性测试
易用性测试指从软件使用的合理与方便程度,对软件进行的测评,发现该软件不便于用户使用的某些缺陷。易用性测试的主观性较强,不同用户可能对易用性的理解不同,其测试内容如下:

  1. 常用功能具备快捷方式。如快捷健、工具栏按钮等,不同版本的主要使用方法和操作步骤变化应较小,具有版本的连续性。
  2. 尽可能将功能相同或相近的操作设计在一个区域,以方便用户查找和使用。
  3. 对可能响应较长时间实现的功能,提供进度显示和中止按钮的选项。
  4. 具有比较完善的用户联机帮助与在线使用指导。
  5. 工具栏图标能够直观地代表要完成的操作。
  6. 当软件运行出现问题时,在提示信息中提供相应技术支持的有关信息和
    联系方式。

(4)安装测试
安装测试包括软件安装与卸载是否正常的检验。一般情况下,下列测试认为是必需的。

  1. 安装
  • 典型安装和完全安装:检查安装步骤、安装过程中各个界面。
  • 自定义安装:检查安装步骤、安装过程中各个界面,安装带不同路经和选项(组件)。
  • 中断安装:关闭程序、关机、断网、安装磁盘空间不足时,能否实现断续性的安装。
  • 检查能否同时安装同一软件的多个版本。
  1. 卸载
  • 从程序组里卸载:检查桌面、程序组、注册表中信息是否被删除。
  • 从控制面板中卸载:检查桌面、程序组、注册表中信息是否被删除。
  • 中断卸载过程:检查关闭程序、关机、断网等操作,是否显示卸载成功等信息。检查是否可卸载正在使用的程序。
  1. 系统的非功能性测试
    非功能的需求不描述功能,而描述功能的行为的属性或系统的属性,即系统执行功能时有“多好”,或质量程度如何。这些属性需求的表现,对客户满意度有重大的影响。根据ISO/IEC 9126 质量规范,这些需求特性包括可靠性、可用性和效率等。这些特性的检验与度量,包含软件的性能测试、安全性测试、恢复性测试、兼容性测试和其他一些非功能性测试
    (1)性能测试
    性能测试检验软件是否达到性能设计的要求,找出未达到性能要求所产生的
    原因,性能测试检验系统的性能运行表现。性能测试属于软件测试的高端领域,
    通常会采用自动化测试的策略。软件的性能包括多个方面,但主要是时间性能与空间性能两类。
  • 时间性能。指软件的一个具体事物的响应时间(Respond Time) 。如登录某一电子邮件系统,在输入用户名和密码,单击“登录”按钮这个过程,从按钮被按下那一刻起到登录页面反馈显示,时间间隔为 4s, 则称这一次登录事务的响应时间为4s, 通常响应时间是在多次、多种情况下事务响应的最大值、最小值和平均值,响应时间长短没有绝对标准,需要根据软件设计时的响应时间指标来确认。
  • 空间性能。指软件系统运行时所消耗的系统资源。例如,软件在某种推荐配置运行时,CPU的占用率、内存占用率等。
    (2) 性能测试的梯度策略
    性能测试可分为一般性性能测试、负载测试、压力(或强度)测试与稳定性
    测试
    。性能测试的梯度策略可分为:
  • 一般性性能测试
    这种测试指被测试系统在确定的软件、硬件环境下运行,不向它施加任何压力的性能测试。其主要测试有检查CPU 的占用率、内存占用率和主要事务的平均响应时间,在C/S架构的软件系统中,还有各类服务器的资源满耗情况。
  • 负载测试
    这种测试通常指被测试系统在其承受压力的极限范围内连续运行,来检测系统的稳定性。负载测试和稳定测试相似,区别在于需要给系统施加它刚好能承受的压力,例如,登录某邮箱系统,先用1个用户登录,再用5个用户同时登录,再用10个用户同时登录, 不断增加并发的登录用户数,检测和记录服务器的资源消耗情况,直至达到临界值(如CPU占用率为90%、内存占用率为80%以上), 则停止增加并发用户数,反复测试,直到出现故障为止, 负载测试实质上是测试系统在临界状态下运行能否稳定地运行的性能指标。
  • 压力测试
    压力测试是不断给系统施加压力,以测出在什么程度下就会出错,测试是想要“破坏”系统,并通过施加压力的手段进行,最检测软件崩溃前的极限值,即测试系统所能承受的最大压力。这有点像举重运动员的比赛过程。
    压力测试的目的是检验软件运行在非正常的情形下的性能表现,即测试需要
    在反常规的数据量、频率或资源的方式下运行的系统。例如,在平均每秒出现1 个或2个中断的情形下,应当对每秒出现10个中断的情形进行特殊的测试;如正常的中断频率为5次每秒,强度测试设计为每秒中断50次;把输入数据的量提高一个数量级来测试输入后系统的响应。若正常运行可支持 200个终端用户并行地工作,强度测试则检验1000个终端并行工作的情况;应执行需要消耗使用最大内存或其他资源的测试用例,如运行一个虚拟操作系统可能会引起大量的驻留磁盘数据的测试用例。压力测试的一个变种称为敏感测试,在有些情况(最常见在数学算法中)下,在有效数据界限之内的一个很小范围的数据可能会引起极端甚至错误的运行,或引起性能的急剧下降的情形发生,这种情形和数学函数中的奇点相类似。敏感测试就是要发现在有效数据输入里可能会引发不稳定或错误处理的数据组合。
  • 稳定性测试
    稳定性测试(也称可靠性测试)是指被测系统连续运行(24小时x7天), 运
    行时的稳定程度,系统稳定性从可靠性方面进行度量,可靠性测试是从验证的角度出发,检验系统的可靠性是否达到预期的目标,同时给出当前系统可能的可靠性增长情况。可靠性测试需要从用户角度出发,模拟用户实际使用系统的情形,并设计出系统的可操作视图,在此基础上,根据输入空间的属性及依赖关系导出测试用例,然后在仿真环境或真实环境下执行测试用例并记录测试的结果、分析测试数据。可靠性测试的关键测试数据包括失效间隔时间、失效修复时间、失效数量、失效级别等。根据获取的测试数据与可靠性模型,得出系统失效率及可靠性增长趋势。通常用错误发生平均时间间隔 MTBF (Mean Time Between Failure) 衡量系统稳定性(指标之一), MTBF越大,表明系统稳定性越好。
  1. 安全性测试
    软件(系统)漏洞,也称系统脆弱性 .。它针对系统的安全,包括一切导致威胁、损坏系统安全性的因素,是计算机系统在软件(包括协议)的具体实现或系统安全策略上存在的缺陷或不足,目前,很多已在运行的软件存在安全漏洞,如互联网上大量的Web 应用系统存在安全漏洞问题。Web 系统安全漏洞,与组成Web 系统的软/硬件本身所存在的漏洞无关,而是在这些软硬件组成Web系统后,运行时其行为或阪应产生的不安全问题。这源于Web系统的设计或实施,因构造Web系统活动本身会造成可被攻击者利用的不安全的Web 系统行为或反应。
    安全性测试的目的是验证系统内的保护机制能否在实际运行中保护系统且不受非法入侵和各种非法干扰。在安全测试中,测试扮演的是试图攻击系统的角色,尝试通过外部手段,利用存在的各种漏洞来获取系统密码或进入系统,可使用瓦解和攻破任何防守的安全软件来攻击系统,使得系统“瘫魔”, 使用户无法访问,或有目的地引发系统出现错误,或期望在系统恢复过程中侵入系统。
    安全性测试包含系统操作的安全功能检测、数据安全传输功能测试等。
    针对安全漏洞的测试可分为源码分析(白盒测试方法)与推断测试(黑盒测
    试方法)

    (1) 源码分析
    主要通过代码的测试,分析查找可造成安全漏洞的某些特定编码模式,以定位被测软件的安全漏洞。方法主要有词法分析、语法分析和静态语义分析等。
    目前,静态的安全漏洞分析方法主要有基于形式化验证的定理证明、模型检验、类型推断,基于词法分析的安全性扫描、基于语法和简单语义分析的安全性查,以及信息流验证和检测方法等。典型的安全测试源码的商品化分析工具有 Fortify Software 公司的Source Code Analysis Suite, Klwork 公司的K7, Parasoft 公司的 C++、JTest、 TEST、Webking 等。
    (2)渗透测试
    渗透测试(Penetration Test) 是利用各种安全扫描器对软件进行非破坏性的模拟入侵攻击,目的是尝试侵入系统并获取系统信息,以检测软件是否存在安全漏洞,如可侵入,购表明存在安全漏洞。例如,渗透测试采用模拟攻击的方法测试Web系统存在的安全漏洞,并对它进行修补和防护,以降低系统受攻击的风险,增强Web 系统应用于互联网环境的安全,渗透测试通过“爬行一模拟攻击一分析反应”步骤探测被测 Web 系统是否存在安全漏洞,渗透测试具有两个显著特点 渗透测试是面向软件“不应当功能”的模拟攻击过程(黑客行为); 渗透测试选择不实际损害被测软件系统正常功能的攻击方法进行的测试。

5. 其他测试

  1. 恢复性测试
    计算机系统通常要求:一旦系统出现错误,必须在一定时间内从错误中恢复过来,然后继续运行。在有些情况下,一个系统必须是可以容错的,即运行过程中的错误不能使得整个系统的功能都停止下来。在其他情况下,一个系统错误必须在一个特定的时间段之内得到改正,否则会造成严重的损失。
    恢复测试是通过各种手段强制性地让软件系统出错,使其不能正常工作,进而检验系统的恢复能力。如果系统恢复是自动的(由系统自身完成), 则应检验:重新初始化、检验点设置机构、数据恢复以及重启是否正确。如果这个过程的恢复需要人为干预,则需要考虑平均修复时间是否在限定的、可接受的范围之内。
  2. 兼容性与数据转换测试
    兼容性主包含硬件系统的兼容性测试和软件系统的兼容性测试两个部分。
    硬件兼容性主要是指软件系统运行在不同的硬件环境和条件下的兼容性,即检查硬件系统是否满足和使用软件的运行和功能表现。兼容性测试主要是针对软件在单机运行和网络运行两种环境下的运行情况的检测,包含了对各个软件开发者、各类程序之间共享数据能力的要求,检查软件是否能与其他软件正确地协调工作。
    兼容性的测试通常需要解决以下问题:针对单机版的软件兼容性;针对C/S结构的软件兼容性。例如,一个B/S系统的兼容性测试的重点是测试服务器端的软件兼容性,主要有操作系统、Web 服务器和数据库服务器运行的软件是否协同配合及是否存在兼容性问题(冲突)。兼容性通常包括向前兼容与向后兼容、不同版本间的兼容、数据共享兼容。数据转换可在运行于同一计算机上的两个程序之间进行,也可通过互联网远距离链接的两个程序间进行,这项测试主要检查数据转换的正确性。
  3. 文档检查
    文档检查主要是对软件的文档内容与软件系统行为是否一致,如用户手册和GUI的对照,等等。关于文档检查的更详细内容,请参见本课程的软件测试管理的有关章节内容。
  4. 可维护性测试
    可维护性检查软件系统是否为模块化的结构,评估软件系统文档的可维护性及是否为最新的软件版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值