本部分介绍各种测试类型,以及它们在VSTS 2005中的应用。
在学习讨论之前,阿彪问大家:我有一个闷在心里好久的问题 – bug到底翻译成什么最好?
杂曰:臭虫,缺陷,错误,地雷,应用程序异常,
就用bug好了,大家都理解!小强!小强!
大家回头一看,阿毛红着脸说:我们宿舍里有不少小强,每晚自习回去都要打小强。。。
众大笑。
阿彪:我倒是不反对用“小强”。
阿超:好是好,VSTS也支持改工作项的名字。就怕我们以后招进来名字中有“强”的同学。
阿彪:我觉得我可以为“小强”花一颗银弹,我们以后就把“小强” 当作bug的同义词.
小飞:那我们怎么翻译“bug fix”?? 翻译成“针对缺陷的修改”也太绕口了。
阿毛:我们是用拖鞋来打小强,所以不妨称之为“拖鞋”。
(大笑)
国栋:我反对把软件工程的术语生活化。。。
阿超:说到测试,大家肯定有不少了解,也保不准有一些误解,我们这个讨论就是要去伪存真,把大家的理解统一到一个水平上。大家知道的“测试方法”有多少?
杂曰:
Black box Test, White box Test
Code Coverage, Test Unit Test
Functional Test, Structural Test
System Test, Performance Test
Stress Test, Load Test
Acceptance Test, Regression Test
Ad hoc Test, Integration Test
Alpha/beta Test, Localization/Globalization Test
Security Test, Accessibility Test, Scenario Test,
Usability Test,Smoke Test
二柱:这么多!把我都忽悠得有点晕了。看来我国软件测试人才真是大有用武之地了。
小飞:这么多名词,是得学几年的,写程序的方法怎么没有这么多花头?
阿超:咱们还是一个一个来吧。 这么多名词只不过是从各个方面描述了软件测试,并不是说有这么多独立的测试方法,我们把它们分类处理就不难了。
1.1从测试设计的方法分类
从测试设计的方法来看,我们知道有两类方法:
Black box (黑箱)
White box (白箱)
这是每个接触过软件测试的人都会给出的答案。但是这只是整个软件测试的入门。我们可以跳过去,直接讨论下面的内容。。。
问:我在网上看到有人争论黑箱测试和白箱测试哪一个是另一个的基础,还有那一个更难,那一个更有前途,等等。据说李村数码在搞“灰 箱测试”,是不是更高级?能不能简单讲一讲?
阿超:大家都有这些问题么?
杂曰:[略去对此问题热烈的争论500 字]
阿超:听了大家的争论,看来我们的确得花不少时间统一认识.
第一个要注意的问题是,所谓黑箱/白箱,是软件测试设计的方法,不是软件测试的方法!注意“设计”二字。
黑箱:在设计测试的过程中,把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识。一个更准确的说法是“Behavioral Test Design”, 从软件的行为,而不是内部结构出发来设计测试。
白箱:在设计测试的过程中,设计者可以“看到”软件系统的的内部结构,并且使用软件的内部知识来指导测试数据及方法的选择。“白箱”并不是一个精确的说法,因为把箱子涂成白色,同样也看不见箱子里的东西。有人建议用“玻璃箱”来表示。
在实际工作中,我们不应画地为牢,严格只用某一种方法来设计测试方法。在实际的测试中,当然是对系统了解的越多越好。所谓“灰箱”的提法,正是这一反映。有些人甚至希望我们全部忘记“箱子”和它们的颜色。
我们并不是要禁止懂得内部构造的人员来进行黑箱测试设计,只不过我们在设计时有意不考虑软件的内部结构。例如:在测试程序内部基本模块的时候(单元测试),我们通常是要求对程序结构非常了解的程序员来设计,这是因为内部模块的“行为”和程序的外部功能并没有直接的关系,而且内部基本模块的“行为”通常没有明确的定义。另一个例子是“可用性测试”,在设计此类测试的时候,我们没必要纠缠于程序的内部结构,而是着重于软件的界面和行为。但是软件可用性测试也需要很多专业知识。这也从一个侧面表明“黑箱”和 “白箱”没有简单的高低之分。
一旦测试用例写出来之后,我们大可以忘了它们是从那种颜色的箱子里出来的,用它就可以了。
1.2功能测试
以下的测试术语都是主要测试软件的功能。在下表所列的测试中,测试的范围有小到大,测试者也由内到外 – 从程序开发人员(单元测试)到 测试人员,到一般用户(Alpha/Beta 测试)。
测试名称 测试内容
Unit Test 单元测试 – 在最低的功能/参数上验证程序的正确性
Functional Test 功能测试 – 验证模块的功能
Integration Test 集成测试 – 验证几个互相有依赖关系的模块的功能
Scenario Test 场景测试 – 验证几个模块是否能够完成一个用户场景
System Test 系统测试 – 对于整个系统功能的测试
Alpha/Beta Test 外部软件测试人员(Alpha/Beta 测试员)在实际用户环境中对软件进行全面的测试。
1.3非功能测试
一个软件除了基本功能之外,还有很多功能之外的特性,这些叫“non-functional requirement”, 或者“quality of service requirement”- 服务质量需求。没有软件的功能,这些特性都无从表现出来,我们要在软件开发的适当阶段做这些测试。