测试基础 – 测试过程

1、系统测试

为什么要进行系统测试?

由于软件只是计算机系统中的一个组成部分,软件开发完成之后,最终还要和系统中的硬件系统、某些支持软件、数据信息等其他部分配套运行。因此,在投入运行前要完成系统测试,以保证各组成部分不仅能单独的得到检验,而且在系统各部分协调工作的环境下也能正常工作。

严格的说,系统测试超出了软件工程范围。通常这项工作并不由系统开发人员或系统开发组织来承担,而是由软件用户或软件开发机构委托独立测试机构来完成。

系统测试方法

恢复测试

  • 恢复测试是通过各种手段,强制性地使软件出错,使其不能正常工作,进而检验系统的恢复能力。
  • 恢复测试包含的内容:
    • 如果系统恢复是自动的(由系统自身完成),则应该检验:重新初始化、检验点设置机构、数据恢复以及重新启动是否正确。
    • 如果这一恢复需要人为干预,则应考虑平均修复时间是否在限定的、可以接受的范围之内。

安全测试

  • 安全测试的目的在于验证安装在系统内的保护机制能否在实际中保护系统且不受非法入侵,不受各种非法干扰。
  • 在安全测试中,测试者扮演着试图攻击系统的个人角色:
    • 尝试去通过外部的手段来获取系统的密码
    • 使用可以瓦解任何防守的客户软件来攻击系统
    • 把系统"瘫痪",使得其他用户无法访问
    • 有目的地引发系统错误,期望在恢复过程中侵入系统
    • 通过浏览非保密的数据,从中找到进入系统的钥匙
  • 系统的安全测试要设置一些测试用例试图突破系统的安全保密措施,检验系统是否有安全保密的漏洞。
  • 对软件产品安全测试应侧重于以下方面:用户对数据或业务功能的访问控制,数据存储和数据通信的远程安全控制。
    • 用户管理和访问控制
    • 通信加密
    • 安全日志测试

强度测试

  • 从本质上来说,强度测试(也称压力测试-Stree Testing)的目的是要检测非正常的情形,测试是想要破坏程序。
  • 强度测试需要在反常规数据量、频率或资源的方式下运行系统,以检验系统能力的最高实际限度。
  • 举例:
    • 如果正常的中断频率为每秒5次,强度测试设计为每秒50次中断。
    • 把输入数据的量提高一个数量级来测试输入功能会如何响应。
    • 若某系统正常运行可支持200个终端并行工作,强度测试则检验1000个终端并行工作的情况。
    • 运行大量的消耗内存或其他系统资源的测试实例。

性能测试

  • 性能测试用来测试软件在系统集成中的运行性能,特别是针对实时系统和嵌入式系统,仅提供符合功能需求但不符合性能需求的软件是不能被接受的。
  • 性能测试可以在测试过程的任意阶段进行,但只有当整个系统的所有成分都集成在一起后,才能检查一个系统的真正性能。
  • 性能测试常常和强度(压力)测试结合起来进行,而且常常需要硬件和软件测试设备,这就是说,常常有必要在一种苛刻的环境中衡量资源的使用(比如,处理器周期)。

正确性测试

  • 正确性测试检查软件的功能是否符合规格说明。
  • 正确性测试的方法:
    • 枚举法,即构造一些合理输入,检查是否得到期望的输出。测试时应尽量设法减少枚举的次数,关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。
    • 边界值测试,即采用定义域或者等价区间的边界值进行测试。因为程序设计容易疏忽边界情况,程序也容易在边界值处出错。

可靠性测试

  • 可靠性测试是从验证的角度出发,检验系统的可靠性是否达到预期的目标,同时给出当前系统可能的可靠性增长情况。
  • 对可靠性性测试来说,最关键的测试数据包括失效间隔时间,失效修复时间,失效数量,失效级别等。根据获得的测试数据,应用可靠性模型,可以得到系统的失效率及可靠性增长趋势。
  • 可靠性指标有时很难确定,通常采用平均无故障时间或系统投入运行后出现的故障不能大于多少数量这些指标来对可靠性进行评估。

兼容性测试

  • 软件兼容性测试是检测各软件之间能否正确地交互和共享信息,其目标是保证软件按照用户期望的方式进行交互,使用其它软件检查软件操作的过程。
  • 兼容性的测试通常需要解决以下问题:
    • 新开发的软件需要与哪种操作系统、Web浏览器和应用软件保持兼容,如果要测试的软件是一个平台,那么要求应用程序能在其上运行。
    • 应该遵守哪种定义软件之间交互的标准或者规范。
    • 软件使用何种数据与其它平台、与新的软件进行交互和共享信息。

Web网站测试

  • Web网站的网页是由文字、图形、音频、视频和超级链接组成的文档。
  • 对网站的测试包含许多方面,如配置测试、兼容测试、可用性测试、文档测试等;黑盒测试、白盒测试、静态测试和动态测试都有可能采用。
  • 通常Web网站测试包含以下内容:
    • 文字测试
    • 链接测试
    • 图像、图像测试
    • 表单测试
    • 动态内容测试
    • 数据库测试
    • 服务器性能及负载测试
    • 安全性测试

2、软件测试过程

软件测试过程流程图

 

                    

  

测试计划

  • 软件测试计划工作的输入是:软件测试任务书(或合同)和被测软件的需求规格说明。他们是开展软件测试计划的基础和依据。
  • 测试的计划与控制是整个测试过程中最重要的阶段,它为实现可管理且高质量的测试过程提供基础。这个阶段需要完成的工作内容是:拟定测试计划,论证那些在开发过程难于管理和控制的因素,明确软件产品的最重要部分。
  • 本阶段工作的输出是:软件测试计划。软件测试任务书(或合同)和被测软件的需求规格说明,他们是开展软件测试计划的基础和依据。

测试设计

  • 本阶段工作的输入是:软件测试计划。
  • 软件测试设计阶段主要包含2个方面的工作:
    • 测试用例的设计
    • 测试用例的开发和实现。
  • 本阶段要完成的主要任务如下:
    • 在软件测试计划阶段中,通过测试需求分析得到细化后的每一个被测软件功能和特性,设计相应得软件测试用例。
    • 针对每一个软件测试用例,确定其测试输入、测试步骤以及每一步骤的预期输出。
    • 如果需要,开发和实现相应的测试输入。(自动化)
    • 建立软件测试需求集和软件测试用例集之间的关联关系。(多对多)
  • 本阶段工作的输出是:测试用例和测试数据。

测试执行

  • 本阶段工作的输入是:测试用例和测试数据。
  • 软件测试执行阶段,是在准备好的测试环境上依次执行各测试用例并详细记录每一步的测试结果。
  • 本阶段主要完成的任务如下:
    • 获得被测程序
    • 获得指定的测试资源
    • 执行测试用例
    • 记录测试过程和测试输出数据。
  • 本阶段工作的输出是:软件测试记录。

测试总结

  • 本阶段工作的输入是:软件测试计划、测试用例、软件测试记录。
  • 软件测试总结阶段的主要工作是根据软件测试的执行情况,作出两方面的评价:
    • 评价软件测试的效果;
    • 评价被测试的软件。
  • 本阶段要完成的主要任务如下:
    • 描述测试状态
    • 描述软件状态
    • 完成测试报告
    • 保存测试文件
  • 本阶段工作的输出是:测试报告。
posted @ 2012-01-16 19:05  Sirrah  阅读(370)  评论(0编辑  收藏  举报