现在的位置: 首页 > 综合 > 正文

软件测试之道

2014年03月12日 ⁄ 综合 ⁄ 共 2772字 ⁄ 字号 评论关闭

 测试是在软件开发中必须的环节,据统计,一般在软件开发中,至少要有三分之一的时间花在了软件测试上。在任何重要的软件开发项目中,都会有很多的人从事着编码、测试工作。而测试的本质就是确保系统可以按我们的要求来正确运行。

  然而,即使你是开发团队中的一员,也会对程序拥有适当的质量文档(QA)感兴趣,这主要有以下三个原因:

  1. 我们未来的商业进展依赖于我们的专业水平。成熟的客户总会观察我们如何处理他们的需求。因此,任何可以提高我们在客户心目中地位的东西都是我们需要的。

  2. 一但系统交付给客户使用,我们就会进入系统跟踪测试阶段,如果我们在这个过程中出现纰漏,可以使用这些文档来恢复以前的工作,以使我们在客户心目中的形象不至于变得太糟。

  3. 如果我们对测试更感兴趣(也许大多数人会这么想),那么客户会为我们所做的给予丰厚的汇报。因此,这样的投入是值得的,这将使我们最终提交的系统变得更好,让用户更加满意。

  要想达到上述三个目标,核心就是软件测试,以及如何来测试软件。本文在下面的部分就软件测试的最佳化方法和步骤做一个阐述,以使读者可以对正规的测试有一个深入的了解。测试一般可分为如下三个步骤,其中第二步分为七个子步骤:

  1. 编写测试脚本

  2. 从内到外执行不同的测试

  (1) 可用性测试

  (2) 单元测试

  (3) 系统测试

  (4) 综合测试

  (5) 压力测试

  (6) 回归测试

  (7) 用户验收测试

  3. 报告和错误核对

  一、编写测试脚本

  测试是一项系统的工作。因此,我们需要按着规范来测试每一项功能,以确保它们的正确性,如果一个bug发生后,我们需要对它进行反复地测试,这将和在突出位置显示的bug按着同样的方式对待。

  确保我们的测试任务没有遗漏的最好方法就是制作一个测试脚本。这将允许我们通过网络检查是否有没有测试到的功能。

  我们的脚本应该象大纲一样列出测试步骤,测试人员可以按着这些步骤进行测试,同时这些步骤还应该符合我们期望的测试结果。至于这些细节精确到什么程度,可以根据我们的预算和用户的要求而定。

  我们一般采用的方法是将这些测试脚本以电子版的形式发布 – 经常是一些通用的字处理文档,有时也会放到用于测试管理的系统中。这样测试人员可以在上面记录任何发现的错误。而其他人员应该获得只读的测试文档,这将使这些文档更加安全,并且可以保证它们的一致性。

  二、最重要的测试类型

  (1) 可用性测试

  可用性测试应该在用户接口的某个独立的功能被提交之前进行。在这种测试中。我们可以适当地变化接口,如果在提交之后,这种变化将变得非常困难。

  进行可用性测试的最好方法就是为我们的真实系统建立一个原形,并测试它。从测试人员那得到的反馈将允许我们快速地修改我们的原形以使其更如何要求。

  经研究显示,我们一般只需要5个可用性测试人员,在每一次反复过程中,我可发现85%的问题。在每一次反复后,问题的产生数会直线下降。

 

(2) 单元测试

  对于一个典型的系统,可能会包含很多如下的内容:

  a. 显示某个产品的信息

  b. 将某个产品放到购物车上

  c. 验证信誉卡以及付帐

  上述的每一个功能就是一个单元,我们需要确认每一个单元可以根据我们的输入产生正确的输出,这其中包括错误的输入。进行这种测试的一般方法是将这些单元模块化,并使用命令行方式对每一个模块进行测试。

  不过要注意的是,对于一个非常复杂的系统,每一个单元可以是一个系统,这个系统有它自己的子单元。在这里,系统测试和单元测试的界限就会变得非常模糊。

  (3) 系统测试

  一但系统所有的单元都经过了测试,并且它们的行为完全在我们的意料之中,我们就需要将它们组合在一下成为一个完整的系统,并在真实环境中进行测试。在这种测试中我们需要模拟真实的用户和数据。

  (4) 综合测试

  现在的商业软件已经变得越来越复杂,而逐渐增加的需求使我们的系统必须要和其他的系统集成才能工作,如财务报告系统,后勤管理系统以及消费者管理系统等等。

  从上面的描述可以看出,综合测试的目的就是确保我们的系统从其他系统获得的数据或者向其他系统输出的数据符合我们的要求。这就以为着我们在系统之间流动的数据尽量模范真正的数据。也就是说,有些时候我们需要在系统之间模拟真正的数据转换。一个非常实用的方法就是设计不同系统的数据传输顺序,然后依次显示这些系统在整个过程中不符合要求的结果。

  (5) 压力测试

  对于现在的商业系统,一般用户都会非常多。如果我们的系统未对大量用户做过压力测试。那么很可以在用户达到峰值时使系统崩溃。这样我们将会使去信誉和金钱。而现在比较成熟的系统都是使自己的系统经受住了成百上千个模拟用户的考验。因此,对于大型的系统,使用软件技术对其进行压力测试是非常必要的。

  (6) 回归测试

  除非我们非常的幸运,否则我们的系统很可能在某些关键的时候出现问题。虽然这样的机会并不总是存在。不过一但发生,就是致命的。因此,回归测试就显示非常必要。这种测试主要是对我们以前做过的测试再进一步的确认。一般可以从以下几方面着手:

  1. 我们以前发现的bug是否都被修改过了

  2. 是否还有新的Bug未被发现

 

3. 如果我们为每一个补丁提供发行信息,那么这些补丁的新错误是非常容易跟踪的。

  从上述内容可以看出,回归测试充分表明,测试是一个反复的过程。我们需要反复进行这个过程:测试、修正、再重新测试,直到系统达到我们的要求为止。

  (7) 用户验收测试

  一但我们系统测试完成,这就意味着已经达到了所有要求,而最后一步还必须由用户来验证。这是因为最终使用系统的是我们的客户,而不是开发人员或测试人员。因此,这一步是必须的。

  如果在这一步测试失败,很可能是我们的需求出了问题,那么我们必须将需求文档找出来和用户一起商讨。看是否需要改变需求文档或是修改系统。

  三、报告和错误核对

  一但我们的系统完全通过测试,我们还需要处理并确认在每一步所产生的Bug和修改记录。

  一种最常用的方法是使用一个中心数据库,在这个数据库中保存了每一个新的错误和处理纪录。所保存的主要信息如下:

  1. 一个ID号

  2. 状态(是新的错误,还是正在处理中,或是已经被解决)

  3. 优先级

  (1) 红色(Red):表示非常严重和致命的错误,必须修改

  (2) 黄色(Yellow):一般的功能性错误,在发行前应该修改

  (3) 绿色(Green):这种错误只有使用非常极端的操作才可能出现,这在系统发行前再确认是否需要修改

  4. 解决错误的补丁号

  5. 修改人:表示这个错误是由谁最后修改的

  6 一个错误细节描述:这个可以是任何错误的信息或是屏幕截图,当然也可以是其他的错误信息

  在错误报告更新后,我们还应该记录报告是由谁,什么时间创建或修改的。

抱歉!评论已关闭.