文档库 最新最全的文档下载
当前位置:文档库 › 第一章 测试基础

第一章 测试基础

1.软件测试的定义

*1983,IEEE提出的软件工程标准术语,软件测试定义如下:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的 差别。”

*测试方法:人工;自动
目的:是否满足需求(依据)
预期结果和实际结果是否一致(要素)

*狭义定义:在代码后期进行,对前期的开发质量无法保证
*广义定义:在开发的初期介入,全过程参与=动态+静态

*G.J.Myers(软件测试之艺术的作者)认为:
(1)软件测试是为了发现错误而执行程序的过程;
(2)好的测试用例是发现迄今为止尚未发现的错误的测试用例;
(3)成功的测试执行是发现了至今为止尚未发现的错误的测试执行

* IEEE:从正面证明软件是工作的,逐个功能点去验证
Myers:从反面证明软件是不工作的(eg.开发人员的弱点-习惯性误区;常见问题;无效数据未做保护;边界,系统的弱点-功能交互、切换)

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

2.软件测试基础知识

*"数据结构+算法=程序"

*缺陷放大模型:

需求阶段缺陷—Xn1—概要设计阶段缺陷—Xn2—详细设计阶段缺陷—Xn3—编码阶段缺陷

*测试V模型:P14

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

3.软件测试的目的


*20世纪60年代:证明(表明软件能够工作)
(1)获取系统在可接受风险范围内可用的信心;
(2)尝试在非正常情况和条件下的功能和特性;
(3)保证一个工作产品是完整的并且可用或者可被集成。

*20世纪70年代中期:检测(发现错误)
(1)发现缺陷、错误和系统不足;
(2)定义系统的能力和局限性;
(3)提供组件、工作产品和系统的质量信息。

*20世纪90年代:预防(管理质量)
(1)澄清系统的规格和性能;
(2)提供预防或减少可能制造错误的信息;
(3)在过程中尽早检测错误;
(4)确认问题和风险,并且提前确认解决这些问题和风险的途径。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

4.软件生命周期

*软件开发生命周期:

(1)计划-Planning

#计划阶段的工作内容:
-1-确定软件开发总目标;
-2-给出软件的功能、性能、可靠性以及接口等方面的设想;
-3-研究完成该项目的可行性,探讨问题解决方案;
-4-对可供开发使用的资源、成本、可取得的效益可开发进度作出估计;
-5-制定完成开发任务的实施计划。

(2)需求分析-Requirement Analysis
#需求分析阶段工作内容:

+对开发的软件进行详细的定义,由需求分析人员和用户共同讨论决定,哪些需求是可以满足的,并且给予确切的描述,写出软件需求说明书SRS(Software Requirement Specification).
-1-原始需求:即开发需求(以规范化的语言描述-SRS)
-2-真实需求:合同上的需求即显式需求;隐式需求

+软件研发的类型不同,需求的来源也不同,需求分析中的"用户"针对的具体对象也不同
.针对产品的软件研发:通用
需求来源:市场调研
用户:市场调研人员
特点:自己想研发什么,自己就来研发

.针对项目的软件开发:专用(特定用户群)
需求来源:客户要求
用户:实际的客户
特点:别人想研发什么,我们帮着研发


(3)设计-Design
#设计阶段的工作:设计阶段是软件工程的技术核心,这个阶段需要完成设计说明书。
-1-概要设计(HLD-high level design),在设计阶段把各项需求转换成相应的体系结构,每一部分是功能明确的模块;
-2-详细设计(LLD-low level design),对每个模块要完成的工作进行具体的描述。(函数内部的逻辑实现)

(4)程序编码-Coding
#编码阶段的工作内容:把软件设计转换成计算机可以接受的程序,即写成以某个程序设计语言表示的源程序清单,使用RDBMS工具建立数据库。

(5)测试-Testing
#测试的工作内容:测试是检验软件是否符合客户需求,达到质量要求,一般由独立的小组执行,
测试工作分为:
单元测试-UT
集成测试-IT:函数间集成;模块间集成;子系统间集成
系统测试-ST

(6)运行和维护-Run and Maintenance
运行维护的工作内容:这个阶段将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因对它进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

5.软件研发组织和流程

(1)软件测试相关的组织架构

*人员、过程、工具:项目

组一般由项目经理领导并负责制定项目计划,分配任务。项目组一般有下列人员参与:

.分析人员、设计人员、开发人员、测试人员、配置管理人员、SQA。
.软件开发组:开发经理、分析人员、设计人员、开发人员
.软件测试组:测试经理、测试人员
.配置管理组:配置经理、CMO(配置管理员)

(2)常见的软件研发基本流程

.瀑布模型:应用最为广泛的一种模型
适用范围:项目小,需求明确
缺点:测试后期才介入,对前期质量无法保证
不适合需求变化步履的频繁

.螺旋模型:工作量大,综合了基本的瀑布式模型和演化/渐增原型方法。(由快速模型法,增量迭代模型衍变而来)
缺点:对设计关注不多

.RUP(Rational Unified Process)模型:对工作流在各个阶段都有体现

.IPD(Intergrated Product Development)流程:对整个产品角度出发,不仅仅针对研发。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

6.软件当中为什么会引入缺陷
*常见的导致软件中存有缺陷的根源有:

(1)缺乏有效的沟通,或者没有进行沟通;
(2)软件复杂度
(3)编程错误
(4)不断变更的需求
(5)时间的压力
(6)缺乏文档的代码
(7)软件开发工具
(8)人员的自大

*缺陷的类型

.遗漏:规定的或预期的需求未体现在产品中(可能未将规格说明全面实现,也可能需求分析阶段就遗漏了需求)
.错误:未将规格说明正确实现(可能设计错误、也可能编码错误)
.额外的实现:规格说明并未规定的需求被纳入产品,得到实现

*几个概念
.缺陷(Defect):存在于软件之中偏差,可被激活,以静态形式存在于软件内部,相当于bug;
.故障(Fault):当缺陷被激活后,软件运行中出现的状态,可引起意外情况,若不加处理,可产生失效,是一个动态行为;
.失效(Failure):软件运行时产生的外部异常行为结果,表现与用户需求不一致,功能能力终止,用户无法完成所需要的应用。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

7.什么是测试用例;测试执行

*测试用例(testcase):指对一项特定的软件产品测试任务的描述,体现测试方案、方法、技术和策略。
内容:
.测试目标
.测试环境
.输入数据
.测试步骤
.预期结果
.测试脚本等

eg.

测试用例编号 CALC-ST-SRS001-001
测试项目 测试计算器的加法功能
测试标

题 一个加数在合法取值范围内,另外一个在最大取值范围外
重要级别 高
预置条件 启动计算器软件
输入 参数1:1 参数2:+
参数3:65537 参数4:=
执行步骤 用计算机键盘依次输入上述参数
预期输出 参数1:65538

*测试执行:测试执行就是根据测试用例运行被测软件
.一个测试用例的测试执行
.一个测试用例集的测试执行

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

8.测试工程师的主要工作是什么?


.检视代码、评审开发文档
.进行测试设计、写作测试文档(测试计划、测试方案、测试用例等)
.执行测试,发现软件缺陷,提交缺陷报告,并确认缺陷最终得到了修正
.通过测试度量软件的质量

相关文档
相关文档 最新文档