摘要:软件测试是目前用来验证软件是否能够完成所期望的功能的有效的方法。以往的软件测试一直采用手工测试,但随着软件日益复杂和庞大,手工软件测试设计的大量的重复性的工作,将耗费更大量的时间和人力,软件测试的开销将不断增大,如何更有效的进行测试成为一个新的讨论热点,因而诞生了软件自动化测。软件自动化测试的设计要符合一定的标准,其使用也有着特定的适用范围。

  关键词:软件危机;软件测试;系统测试

  软件危机是软件界的热门话题。由于软件中的错误会导致软件开发在成本、进度和质量上的严重失控,所以保证软件质量的测试在软件生命周期中占据了及其重要的地位。

  软件测试是目前用来验证软件是否能够完成所期望的功能的有效的方法。软件测试是一种以受控的方式执行被测试的软件,以验证或者证明被测试的软件的行为或者功能符合设计该软件的目的或者说明规范。所谓受控的方式应该包括正常条件和非正常条件,即故意的去促使错误的发生,也是事情在不该出现的时候出现或者在应该出现的时候没有出现。

  以往的软件测试一直采用手工测试,但随着软件日益复杂和庞大,手工软件测试设计的大量的重复性的工作,将耗费更大量的时间和人力,软件测试的开销将不断增大,如何更有效的进行测试成为一个新的讨论热点,因而诞生了软件自动化测。现在,软件测试自动化已成为人们日益关注的一个焦点。

  所谓软件自动化测试是执行用某种程序设计语言编制的自动测试程序,控制被测软件的执行,模拟手动测试步骤完成全自动或半自动测试。全自动测试过程中,不需要人工干预,由程序自动完成测试的全过程;而半自动测试是指在自动测试过程中,需要由人工手动输入测试用例或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试。

  软件测试自动化不能解决测试中的所有问题,也不意味着任何软件测试都可以自动化。要成功地实现软件测试自动化,需要周密的计划和大量艰苦的工作,软件测试自动化的开发人员必须清楚地认识到该自动化什么。

  一、软件自动化测试的设计标准

  软件自动化测试的设计标准主要应考虑以下几个方面:

  1、自动化回归测试

  从软件测试自动化的目的知道,软件测试自动化所获得的好处来自于自动测试工具的重复使用,所以应该把回归测试作为自动化的首要目标。软件自动测试的设计和开发人员应该自动化那些每个软件都需要重复的测试,一次性的测试是不值得自动化的。

  2、自动化对稳定的应用进行的测试

  在自动化对某一个应用的测试之前,首先应该确定该应用是否稳定。对一个在将来可能发生变化的应用的测试进行自动化是没有必要的,因为应用一旦改变,相应的自动测试代码要随之改动,所以应该只自动化稳定应用的测试。

  3、自动化没有时间依赖性的测试

  不要自动化与复杂的时间问题相关联的测试。自动化一个与复杂的时间问题相关联的测试的工作量是不具备时间依赖性的测试的工作量的许多倍,并且后的结果也很难满足测试的要求。作为软件测试自动化的开发人员必须清醒地认识到,如果一个测试很难自动化,那应该把它留给手工测试。的自动化并不是追求的目标,把一些过于复杂的测试仍然用手工方式进行是合理的。

  4、自动化重复性测试

  如果一个测试经常重复使用,并且使用这个测试不方便,那么应该考虑自动化这个测试。

  5、自动化已经实现的手工测试用例

  在对软件测试自动化前,通常已经有了很多实现的详细的手工测试用例,从中选择可以自动化的手工测试用例自动化。

  6、合理限制自动化的范围

  百分之百的自动化并不是追求的目标,过大追求自动化的范围只会取得其反的后果。软件测试自动化的开发人员应该在一个合理的可以进行自动化的范围内投入精力,在能力许可的情况下,再逐步扩大测试自动化的范围。