在一个软件团队里, 不同的人有不同程度的投入, 我们在 猪,鸡和鹦鹉 的故事里已经说明了. 不同的人还要在团队中担负不同的任务:
开发人员 (大部分内容在: 现代软件工程讲义 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 基本名词解释及分类
统一思想要从基本名词解释开始。
1.Bug:缺陷软件的缺陷
Bug可以分为这三个组成部分:症状(Symptom)、程序错误(Fault)、根本原因(Root cause)。
(1)Symptom:即从用户的角度看,软件出了什么问题。
例如,在输入(3 2 1 1)的时候,程序错误退出。
(2)Fault:即从代码的角度看,代码的什么错误导致了软件的问题。
例如,代码在输入为某种情况下访问了非法的内存地址——0X0000000C。
(3)Root Cause:错误根源,即导致代码错误的根本原因。
例如,代码对于id1==id2的情况没有做正确判断,从而引用了未赋初值的变量,产生了以上的情况。
以下是一个完整的例子。
(1)Symptom:用户 告,一个Windows应用程序有时会在启动时 错,程序不能运行。
(2)Fault:有时候一个子窗口的handle为空,导致程序访问了非法内存地址,此为代码错误。
(3)RootCause:代码并没有确保创建子窗口(在CreateSubWindow()内部才做)发生在调用子窗口之前(在OnDraw()时调用),因此子窗口的变量有时会在访问时为空,导致上面提到的代码错误。
2.Test Case:测试用例
测试用例描述了一个完整的测试过程,包括测试环境、输入、期望的结果等。
3.Test Suite:测试用例集合
即一组相关的测试用例。
提示:Suite发音念作“sweet”,不是念作“suit”,一大半的学生都念错。
7.1.1 从测试设计的方法分类
测试设计有两类方法:Black box(黑箱)、White box(白箱)。
这是每个接触过软件测试的人都会给出的答案。但这只是整个软件测试的入门知识。可以跳过去,直接讨论下面的内容。
问:我在 上看到有人争论黑箱测试和白箱测试哪一个是另一个的基础,还有哪一个更难,哪一个更有前途,等等。据说河曲数码在搞“灰箱测试”,是不是更高级不能简单讲一讲/span>
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!