免费智能真题库 > 历年试卷 > 系统分析师 > 2017年上半年 系统分析师 下午试卷 论文
  第4题      
  知识点:   系统测试   性能测试   功能测试   配置项   软件配置   软件系统   压力测试

 
论软件的系统测试及其应用
软件系统测试的对象是完整的、集成后的计算机系统,其目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统设计文档和软件开发合同规定的要求。常见的系统测试包括功能测试性能测试压力测试、安全测试等。同时,在系统测试中,涉及到众多的软件模块和相关干系人,测试的组织和管理是系统测试成功的重要保证。
 
问题:4.1   请围绕"软件的系统测试及其应用"论题,依次从以下三个方面进行论述。
1. 简要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。
2. 概要论述系统测试过程中测试管理的主要活动内容,论述性能测试的目的和基本类型。
3. 结合你具体参与管理和开发的实际项目,说明如何管理性能测试的各项活动,以及性能测试具体采用的方法、工具、实施过程以及应用效果。
 
 
 

   知识点讲解    
   · 系统测试    · 性能测试    · 功能测试    · 配置项    · 软件配置    · 软件系统    · 压力测试
 
       系统测试
        如果项目不只包含软件,还有硬件和网络等,则要将软件与外部支持的硬件、外设、支持软件、数据等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列集成与确认测试。一般来说,系统测试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等。系统测试计划通常在系统分析阶段(需求分析阶段)完成。
 
       性能测试
        性能测试是通过自动化的测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行,统称为负载压力测试。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或不能接收的性能点,来获得系统能提供的最大服务级别的测试。
               性能测试的目的
               性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,并优化软件,最后达到优化系统的目的。具体来说,包括以下几个方面。
               (1)评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助做出决策。
               (2)识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。
               (3)系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。
               (4)检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄漏等引起的失败,揭示程序中的隐含的问题或冲突。
               (5)验证稳定性和可靠性:在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
               性能测试的类型
               性能测试类型包括负载测试、强度测试和容量测试等。
               (1)负载测试:负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。
               (2)强度测试:强度测试是在系统资源特别低的情况下考查软件系统运行情况。
               (3)容量测试:确定系统可处理的同时在线的最大用户数。
               性能测试的步骤
               由于工程和项目的不同,所选用的度量及评估方法也有不同之处。不过仍然有一些通用的步骤可帮助我们完成一个性能测试项目。其步骤如下:
               (1)制定目标和分析系统。
               (2)选择测试度量的方法。
               (3)学习相关技术和工具。
               (4)制定评估标准。
               (5)设计测试用例。
               (6)运行测试用例。
               (7)分析测试结果。
               负载压力测试
               系统的负载压力测试(负载测试)中的负载是指系统在某种指定软件、硬件及网络环境下承受的流量,例如并发用户数、持续运行时间、数据量等,其中并发用户数是负载压力的重要体现。系统在应用环境下主要承受并发访问用户数、无故障稳定运行时间和大数据量操作等负载压力。
               负载压力测试的目的如下:
               (1)在真实环境下检测系统性能,评估系统性能是否可以满足系统的性能设计要求。
               (2)预见系统负载压力承受力,对系统的预期性能进行评估。
               (3)进行系统瓶颈分析、优化系统。
               在网络应用系统中,负载压力测试应重点关注客户端、网络及服务器(包括应用服务器和数据库服务器)的性能。应获取的关键测试指标如下。
               (1)客户端:并发用户数、响应时间、交易通过率及吞吐量等。
               (2)网络:带宽利用率、网络负载、延迟,以及网络传输和应用错误等。
               (3)服务器:操作系统的CPU占用率、内存使用和硬盘I/O等;数据库服务器的会话执行情况、SQL执行情况、资源争用及死锁等;应用服务器的并发连接数、请求响应时间等。
 
       功能测试
        Web应用功能测试指Web应用系统的基本功能的测试,其案例的设计方法可参见有关《黑盒测试技术》章节的内容。
        考虑到Web应用本身的特点,其功能测试还要注意以下几个方面。
        . 客户端的选择。
        Web应用客户端软件环境主要包括操作系统和浏览器。除非有特殊要求,测试功能时,我们一般选择比较流行的配置,如选择WindowsXP+IE6.0的简体中文版本。需要注意的是,浏览器的种类和版本有可能影响功能的正确实现。
        . 客户端浏览器的配置。
        一般情况下,开发者不会过多地考虑客户端配置问题,只是将更多的时间用于实现服务端的程序,而用户也往往不会刻意地对所使用的浏览器进行适应性配置。如果测试人员完全按照浏览器的缺省配置测试一个Web应用的功能,有可能会出现较多的因浏览器配置而引起的问题。下面以IE6.0为例进行说明,IE6.0的主要配置界面如下图所示。
        
        IE6.0的主要配置界面
        例如Cookie设置就会影响含有Cookie的Web应用的功能能否成功地实现。其他如脚本设置、安全设置、显示设置等大多数设置都会影响到Web应用功能的实现。
        . 客户端的显示设置。
        大多数人都喜欢使用1024×768像素的显示设置,但并不是所有的Web应用都支持这种设置。不合适的显示设置不但会使Web应用系统的界面显示异常,还可能导致应用功能无法实现。
        . 内容测试。
        由于Web应用带有一定的开放性,尤其是发布于互联网上的网站,其内容是完全开放的,因此在Web系统的功能测试中还要重点测试一个方面,即内容测试。
        内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题,甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的“拼音与语法检查”功能;信息的相关性是指,是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中所谓的“相关文章列表”。
        下面介绍两种Web应用功能测试的自动化技术,一个是Web应用链接质量保证技术,另一个是Web应用功能测试技术,下面分别论述。
               Web应用链接质量保证技术
               链接是使用户从一个页面浏览到另一个页面的重要手段,链接的质量决定着功能是否能够成功实现。
               要保证每个链接的质量,需要做好三件事情:
               ①该链接将用户带到它所说明的地方;
               ②被链接页面是存在的;
               ③保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面。
               链接测试非常复杂。比如当网页的结构非常复杂且数量巨大时,链接检查的速度就迫切需要提高。当网络连接总是不稳定的时候,误判的频率增大导致工作量加大,就需要保证工作进度。还有,测试的结果能否清晰地报告出来等,这些需求都提高了测试的复杂度。
               要测试Web应用的链接,可以借助于自动化的Web应用链接测试工具,例如WebCheck、Linkbot、TestPartner等。这些测试工具在测试过程中自动扫描Web应用的所有链接,定位及报告问题。针对应用中存在的各种各样的链接,比如图片、框架(Frame)、插件(Plugin)、背景、样式表(Style Sheet)、脚本、Java Applet等以及支持的连接种类,比如HTTP、FTP、GOPHER、HTTPS等工具都能够支持。另外,对本地的链接和重定向的链接也能很好地支持。例如WebCheck能够定位约50个的问题类型,并且提供19个HTML格式的报告。
               利用自动化测试工具测试Web应用的链接,主要优势体现在以下几个方面。
               . 简单易用;
               . 在实现上采用多线程技术,因此检查速度特别快;
               . 对断开的连接可以再次检查,避免误判;
               . 没有检查连接的数量限制,只受系统资源的约束;
               . 可以分析Web应用的结构;
               . 检查结果可以分类查看,自动生成HTML格式的报告。
               Web应用链接主要测试点如下。
               . 测试内部和外部链接中成功和失败的链接点,以及应用中不被其他链接调用的页面;
               . 测试链接中新网页、老网页、慢网页以及丢失的图象标题标签和属性标签等;
               . 分析Web应用的结构是否合理,包括显示和某个URL相关的链接及按照标题、描述、作者、大小、最后修改时间、类型为URL链接分类等。
               Web应用功能测试技术
               如果开发人员刚创立一个新的Web应用系统。在发布应用系统之前,它必须经过测试以确保一切设定功能都能正常运行,这样的测试任务中,针对同一模块或者同一功能点的测试可能需要重复多次。另外,在一个公司中不同项目的测试可能并行展开,例如人事部门的HR系统、客服部门的CRM系统、物流部门的ERP系统等。这样的现状就会使测试人员面临这样一个问题,即“如何有效地测试不断修改着的一个或多个应用程序”。如果资源有限的话,这个问题就更加棘手。人工测试的工作量太大,况且很多公司负担不起额外的时间来培训新的测试人员。为了解决这个问题,就需要一个能简单操作的测试工具来自动完成功能性测试。
               Mercury Interactive的WinRunner就是一个功能性测试工具。它通过捕获和重放用户对Web应用程序的操作,WinRunner可自动执行功能性测试。下面我们来看一个标准的测试过程,主要步骤包括:创建测试脚本、插入检查点、运行测试以及分析结果。
               . 创建测试脚本。
               创建测试脚本只需记录下一个标准的业务流程,如下一张订单或建立一个新的商家账户。测试人员在GUI上点击鼠标,测试工具记录流程就可建立测试脚本,即使技术知识有限的用户也能生成完整的测试。脚本可以直接编辑来满足各种复杂测试的需求。例如,WinRunner可以将两种测试脚本创建方式结合在一个环境下,来适应测试需求。这两种测试脚本创建方式分别是模拟控件操作和模拟鼠标操作。
               . 插入检查点。
               在记录一个测试的过程的脚本中,测试工程师可插入检查点,测试工具会收集检查点的性能指标。脚本运行时,测试工具在查寻潜在错误的同时,会比较检查点所设定的结果和实际测试结果,对其一一验证。例如,WinRunner允许您使用几种不同类型的检查点,包括文本、GUI、位图和数据库。用一个位图检查点,可以确认一个位图图像,如公司的图标是否出现在指定位置。
               . 运行测试。
               建立起测试脚本,并插入检查点和做一些必要修改后,就可以开始运行测试。当测试工具执行测试时,它会自动操作应用程序,正如一个真实用户根据记录流程执行着每一步的操作。
               . 分析结果。
               一旦测试结束后,就需要分析测试结果。测试工具一般会提供详尽的、易读的报告,这些报告对在测试运行中发生的重要事件进行描述,如出错内容和检查点等。
               一次测试结束后,随着时间推移,开发人员会对应用程序做进一步的修改,并需要另加额外的测试。有了前面利用自动化测试工具进行测试的基础,不必改动测试脚本,就可以重新建一个新的测试,这样大大地节省了时间和资源,充分利用了测试投资。
               功能自动化测试工具还能验证数据库的数值,从而确保交易的准确性。例如,在创建测试脚本时,可以设定哪些数据库表格和记录资料需要检测。在重放时,测试程序就会核对数据库内的实际数值与脚本中设定的数值,在有更新/修改,删除或插入的记录上会使用突出标识以引起注意。
               有时为了彻底全面地测试一个应用程序,需要了解对于不同类型的数据,它是如何运行的。测试工具可以将一个记录下的业务流程转化为一个数据驱动的测试,来反映多个用户各自独特且真实的操作行为。以一个订单输入的流程为例,测试人员或许希望将一些锁定的项目栏,如定单号或客户名转化为可变栏,这样就可以用多套数值来检测应用程序了。数据来源可以采用自动生成表格,也可直接从其他的表格或数据库中导入。数据驱动性测试不仅节省了时间和资源,而且提高了应用程序的测试覆盖率。
               利用自动化测试工具在对脚本进行编辑的时候,可以从列表里选择一个功能函数加到脚本中,以提高测试能力。例如,点击“calendar”,然后从年历功能中的下属目录中选择,如“calendar_select_date()”,工具会提供函数的解释。选定了这个函数后,可以输入参数,再将这个函数插入到测试脚本中。
 
       配置项
        GB/T 11457—2006对配置项的定义为:“为配置管理设计的硬件、软件或二者的集合,在配置管理过程中作为一个单个实体来对待。”配置项的例子有:交付的软件产品和数据,用于创建或支持软件产品的支持工具,供应商提供的软件和客户提供的设备/软件,各类文档,源代码,可执行代码,测试用例,运行软件所需的各种数据等。
        在信息系统的开发过程中需加以控制的配置项可以分为基线配置项和非基线配置项两类。例如,基线配置项可能包括所有的设计文档和源程序等;非基线配置项可能包括项目的各类计划和报告等。所有配置项的操作权限应由CMO(配置管理员)严格管理,基本原则是:基线配置项向开发人员开放读取的权限;非基线配置项向PM、CCB及相关人员开放。
 
       软件配置
        软件配置是指一个软件产品在软件生存周期各个阶段所产生的各种形式(机器可读和人工可读)和各种版本的文档、程序及其数据的集合。该集合中的每一个元素称为该软件产品软件配置中的一个配置项。
 
       软件系统
        网络系统软件包括网络操作系统和网络协议等。网络操作系统是指能够控制和管理网络资源的软件,是由多个系统软件组成,在基本系统上有多种配置和选项可供选择,使得用户可根据不同的需要和设备构成最佳组合的互联网络操作系统。网络协议是保证网络中两台设备之间正确传送数据的约定。
 
       压力测试
        压力测试又称为强度测试,是在强负载(加大数据量、大量并发用户等)下的测试,用于查看应用系统在峰值使用情况下的操作行为,目的是发现系统的功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
        微软测试实践经验表明,如果软件产品通过72小时压力测试,则在72小时后出现问题的可能性微乎其微。所以,72小时成为微软产品压力测试的时间标志。
        负载测试与压力测试是两个很容易混淆的概念。负载测试是通过逐步增加系统负载,测试其变化,看最后在满足性能的情况下,系统最多能接受多大负载的测试。压力测试是在满足性能的情况下,能使系统处于失效的状态,通俗来说,就是发现在什么条件下,系统的性能会变得不可接受。
        压力测试的一般步骤如下:
        ①进行简单多任务测试。
        ②简单压力缺陷修正后,增加系统的压力直到系统崩溃。
        因此,负载压力测试的主要目的是度量应用系统的性能和扩展性。在实施并发负载过程中,通过实时性能监测来确认和查找问题,并针对所发现的问题对系统性能进行优化。负载压力测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
   题号导航      2017年上半年 系统分析师 下午试卷 论文   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
 
第4题    在手机中做本题