⑤文档和帮助文件测试(DocumentationandhelpfileTest):因为用户通常是通过文档和帮助文件来学习使用产品的,如果文档和帮助文件存在错误,可能会导致用户无法正常使用产品。这项工作通常在产品即将Ship(即准备包装发布)时进行,以避免在修复Bug的过程中需要反复修改文档,或者忘记修改文档,导致文档与产品的特性不相符。

  ⑥Alpha和Beta测试(AlphaandBetaTest):在正式发布产品之前往往要先发布一些测试版,让用户能够反馈出相关信息,或者找到存在的Bug,以便在正式版中得到解决。

  还有一种分类方法将测试方法分为如下几种。

  (1)白盒测试(WhiteBoxTesting)

  又叫做玻璃盒测试(GlassBoxTesting)。在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,有时候SDE/T也会辅助开发人员进行测试。

  (2)黑盒测试(BlackBoxTesting)

  黑盒测试的内容主要有以下几个方面。

  ①接受性测试(AcceptanceTesting):类似于BVT测试。

  ②Alpha/Beta测试(Alpha/BetaTesting):在此过程中,产品特征不断地修改。当发现Bug后,在开发人员修改的同时,项目经理也会对产品计划做出相应的调整,产品计划不是一成不变的。

  ③菜单/帮助测试(Menu/HelpTesting):大家千万不要以为这一项测试不值得进行。其实,在软件产品开发的后阶段,文档里发现的问题往往是多的。因为在软件测试过程中,开发人员会修复测试人员发现的Bug,而且可能会对软件的有些功能进行修改,同时项目经理也会根据情况调整软件的特性,因而在软件开发和测试的过程中,所有的功能都不是固定不变的,都会进行调整。所以,一般来说,直到软件Ship时才编写软件的帮助文档,这样才能保证帮助文件的内容与软件功能相符,我在做帮助文件测试的时候,总是假装什么都不懂,按照帮助文件提供的步骤去做,看看该文件是否正确。在实际测试中,我经常能发现帮助文件中的Bug。

  ④发行测试(ReleaseTesting):在正式发行前,产品要经过非常仔细的测试。除了专门的测试人员外,还需要几千个甚至几十万其他用户与合作者通过亲自使用来对产品进行测试,然后将错误信息反馈给我们。到了发行测试这一步,如果出现非改不可的Bug,必须推迟软件的发行,有的时候一推是几个月,期间需要重新对软件产品进行全面的测试,耗费大量的时间和人力物力。

  ⑤回归测试(RegressionTesting):回归测试的目的是保证以前已经修复的Bug

  在软件Ship以前不会再出现。实际上,许多Bug都是在回归测试时发现的,在此阶段,我们首先要检查以前找到的Bug是否已经更正了。值得注意的是,已经更正的Bug也可能又回来了,有的Bug经过修改之后可能又产生了新的Bug。所以,回归测试可保证已更正的Bug不再重现,不产生新的Bug。

  ⑥RTM测试(ReleaseToManufactureTesting):为产品真正的Ship做好准备所进行的测试。事实上,在这一测试阶段,对每一个Bug都需要经过很高职务的人同意才能更正。因为这时候修改软件非常容易产生其他的错误,所以只有那种非修复不可的Bug才会被允许进行修改。如果在发行阶段软件还有许多严重的Bug的话,恐怕不能按时发布了。记得有一次一个微软核心产品刚刚完成,准备Ship时,我对其进行RTM测试时发现一个Bug:只要用该产品打印中文会导致程序错误。这是一个很严重的Bug,于是开发人员马上修复了该Bug,重新Ship该产品。

  功能及系统测试(Function&SystemTesting):这一点是重要的,他包括了非常多的内容。

  规范验证(SpecificationVerification)
  正确性(Correctness)
  可用性(Usability)
  边界条件(BoundaryCondition)
  性能(Performance)
  压力测试(Stress)
  错误恢复(ErrorRecovery)
  安全性(Security)
  兼容性(Compatibility)
  软件配置(Configuration)
  软件安装(Installation)

  另外一种分类方法比较好理解了,主要将软件测试方法分为如下几种。

  (1)手工测试(ManualTesting):即依靠人力来查找Bug。

  (2)自动测试(AutomationTesting)即编写一些测试工具,让他们自动运行来查找Bug。自动测试的优点是能够很快、很广泛地查找Bug,缺点是它们只能检查一些主要的

  问题,如崩溃、死机,但是却无法发现一些一般的日常错误,这些错误通过人眼很容易找到,但机器却往往找不到。另外,在自动测试中编写测试工作量也很大,因此在实际测试中通常是手工测试和自动测试相结合,而且手工测试往往是主要的,占了1/2-2/3,而自动测试只占1/3-1/2。在不同的开发队伍中,这个比例会有所不同,但总体趋势是这样的。

  有了好的测试方法,还需要有高效好用的辅助工具,做软件测试通常需要以下一些基本工具。

  计算机
  的办公处理软件(如字处理软件和表单软件,用于编写测试计划和规范)
  视频设备
  秒表(角色程序运算时间,测试产品性能)
  错误跟踪系统(微软内部使用的是RAID,用来自动跟踪Bug)
  自动测试工具(产生Automation脚本)
  软件分析工具
  好的操作系统(如WindowsNT/2000,其中有很多有用的工具,如文件比较器、
  文件查看器、文件转换器、内存监视器等)
  多样化平台