现代软件工程讲义 5.1 软件的质量保证 (QA) 和测试 (Test)

在一个软件团队里, 不同的人有不同程度的投入, 我们在 猪,鸡和鹦鹉 的故事里已经说明了. 不同的人还要在团队中担负不同的任务:

开发人员 (大部分内容在: 现代软件工程讲义 2 工程师的能力评估和发展

项目经理 ( 内容在这里)

测试人员 ( 本篇博客 )

团队中的管理人员/PM 负责分析市场, 设想功能, 定义用户到底要什么 – Why & What.

团队中的开发人员/Dev 负责实现功能, 搞清楚怎么才能满足用户的需求 – How.

团队中的测试人员/QA 搞清楚我们的软件是否满足了用户的需求 – Whether.

 

最后所有成员一块决定产品是否能发布, 什么时候能发布 – When.  

 

测试/Test 和 质量保障/QA (Quality Assurance) 这两个词经常混用, 这两个概念是完全同等, 还是只是有一部分交集, 还是是另一个的真子集, 众说纷纭, 在各自的语境中, 都有意义。对于《现代软件工程》的语境,  我们这样规定:

QA: 运用各种手段, 在软件工程的各个阶段确保软件的质量能帮助软件团队实现目标。

Test (测试) : 特指验证代码的行为是否符合功能规格说明书 (spec) 的规定。

在这样的定义下, Test只是 QA 工作的一部分。

 

对测试工作的种种误解

一些人对“测试”这一工作还有很多误, 解例如下面的似是而非的观点:

1) 测试在项目的最后进行就可以了。

这是远远不够的。当你在项目后期发现了问题,问题的根源往往是项目早期的一些决定和设计,这时候,再要对其进行修改就比较困难了。这要求测试人员从项目开始就要积极介入,从源头防止问题的发生。有人会说,我是一个小小的测试人员,项目开始的时候我能做什么就是小小测试人员努力的方向。

2) 测试就得根据规格说明书(spec)来测,所以是很机械的。

那不一定,即使你的软件产品功能100% 符合spec 的要求,但是用户也可能非常恨你的软件。这时,测试人员就没有尽到责任,因为测试人员要从用户的角度出发,测试软件。

3) 测试人员当然也写代码,但是质量不一定要很高。

开发人员的代码没写好,可以依赖于测试人员来发现问题。但是如果测试人员的代码没写好,我们依赖谁来测试和改错呢就要求我们测试人员的代码质量特别高,因为我们是最后一道防线,如果我们的代码和测试工作有漏洞,那么Bug就会跑到用户那里去。

4) 测试只是被动地接受别人的产出, 然后开始自己的工作, 比较被动, 不能发挥创造性。

也许狭义定义下的 测试用例 是要等开发人员的代码, 然后开始测试。 但是整个质量保证工作(QA)需要前瞻性, 主动性, 创造性的工作。Weinberg 说过: “也许没有任何一项测试技术比前瞻性更有价值” (Probably no single  testing technique is of more value than foresight.) [1]

各种测试方法

(注意到上图的黑箱子和白箱子了么它们里面装的都是测试的宝贝)

 

[下面的解释大部分来自于  《移山之道》 ]

7.1  基本名词解释及分类

统一思想要从基本名词解释开始。

1Bug:缺陷软件的缺陷

Bug可以分为这三个组成部分:症状(Symptom)、程序错误(Fault)、根本原因(Root cause)。

1Symptom:即从用户的角度看,软件出了什么问题。

例如,在输入(3 2 1 1)的时候,程序错误退出。

2Fault:即从代码的角度看,代码的什么错误导致了软件的问题。

例如,代码在输入为某种情况下访问了非法的内存地址0X0000000C

3Root Cause错误根源,即导致代码错误的根本原因。

例如,代码对于id1==id2的情况没有做正确判断,从而引用了未赋初值的变量,产生了以上的情况。

以下是一个完整的例子。

1Symptom用户 告,一个Windows应用程序有时会在启动时 错,程序不能运行。

2Fault有时候一个子窗口的handle为空,导致程序访问了非法内存地址,此为代码错误。

3RootCause代码并没有确保创建子窗口(在CreateSubWindow()内部才做)发生在调用子窗口之前(在OnDraw()时调用),因此子窗口的变量有时在访问时为空,导致上面提到的代码错误。

2Test Case测试用例

测试用例描述了一个完整的测试过程,包括测试环境、输入、期望的结果等。

3Test Suite测试用例集合

即一组相关的测试用例。

提示:Suite发音念作“sweet”,不是念作“suit”,一大半的学生都念错。

7.1.1  从测试设计的方法分类

测试设计有两类方法:Black box(黑箱)、White box(白箱)。

这是每个接触过软件测试的人都会给出的答案。但这只是整个软件测试的入门知识。可以跳过去,直接讨论下面的内容。

问:我在 上看到有人争论黑箱测试和白箱测试哪一个是另一个的基础,还有哪一个更难,哪一个更有前途,等等。据说河曲数码在搞“灰箱测试”,是不是更高级不能简单讲一讲/span>

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年4月11日
下一篇 2014年4月11日

相关推荐