系统测试基础--软件生命周期
系统测试基础
一、软件生命周期
a)传统软件生命周期——瀑布模型
-
计划
确定软件开发总目标;给出软件功能、性能、可靠性以及接口等方面的设想;研究完成该项目的可行性,探究问题解决方案;对可供开发使用的资源、成本、可取得的效益和开发进度进行预估;制定完成开发任务的实施计划。 -
需求分析
对开发的软件进行详细的定义,由需求分析人员和用户共同讨论决定,哪些需求的可以满足的,并且给予确切描述,写出软件需求说明书SRS或者产品需求文档PDR以及原型图
注:PDR是将商业需求文档(BDR)和市场需求文档(MRD)用更加专业的语言来描述
软件研发类型不同,需求来源不同,需求分析中的用户针对的具体对象也不同 -
设计(开发设计)
设计是软件工程的技术核心,这个阶段需要完成设计说明书
概要设计:(HLD)在设计阶段把各项需求转换为相应的体系结构,每一部分是功能明确的模块;
详细设计:(LLD)对每个模块要完成的工作进行具体描述 -
编码
把软件设计转换成计算机可以接受的程序,即写成以某个程序设计语言表示的源程序清单,使用RDBMS工具建立数据库 -
测试
测试是检验软件是否符合客户需求,达到质量要求,一般由独立小组执行,测试工作分为:
单元测试
集成测试
系统测试 -
运行和维护
这个阶段将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因需要对它进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等
b)软件从开发到交付的一系列过程——迭代模型
二、软件研发组织和流程
a)软件研发相关要素:
-
人员
-
过程
-
工具
只有合适的人员借助合适的工具经过合适的过程才能研发出高质量的软件
工具为人员和过程服务,起辅助作用,起关键作用的是人员和过程
b)软件项目组人员组成:
项目组一般由项目经理领导并负责制定项目计划、分配任务。
-
项目经理
-
分析人员
-
设计人员
-
开发人员
-
测试人员
-
配置管理人员
-
SQA()
c)常见项目组架构:
-
软件开发组
开发经理
分析人员
设计人员
开发人员
-
软件测试组
测试经理
测试人员
-
配置管理组
配置经理
CMO(配置管理员)
d)软件开发生命周期模型
(1)5种常用模式
-
大爆炸模式
-
边写边改模式
-
瀑布模式
-
迭代模式
-
螺旋模式
(2)敏捷开发模式
目的:每个开发活动都有对应的测试;每个测试级别都有对应的测试目标;每个测试都有测试分析和设计;开发周期中,在文档初期稿阶段(需求分析阶段)就应该参与文档的评审
三、软件测试的定义和目的
定义:
软件测试用来鉴定软件的正确性、完整性、安全性和质量的过程。是一种实际输出与预期输出间的审核或比较过程。经典定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否满足设计进行评估的过程。
程序的测试是为了发现错误而执行程序的过程;
好的测试方案是极可能发现迄今为止尚未发现的错误的错误测试方案;
成功的测试是发现了至今为止尚未发现的错误的测试。
目的:
-
一个糟糕的测试程序可能导致任务的失败,影响操作的性能和可靠性,导致维护阶段的成本提高;
-
一个好的测试程序是项目的主要成本;
-
一个好的测试程序可以极大的帮助你定义需求和设计;
-
一个好的测试可以迫使开发在工作必须面对的处理问题,使得修改缺陷成本降低;
-
一好的测试不能弥补一个糟糕的软件项目,但是的确有助于发现许多问题;
并且至少使得你尽早知道开发所在的问题
软件中引入缺陷的原因
a)软件缺陷和Bug
软件缺陷:静态存在于软件工作产品(文档、代码)中的错误,也指软件运行时由于这些错误被激发引起的和软件产品预期属性的偏离现象
bug:代码中的缺陷。也泛指因软件产品内部的缺陷引起的软件产品最终运行时和预期属性的偏离。
软件错误、软件缺陷、bug在实际工作中可以认为一样
b)常见的引入缺陷的原因:
-
开发过程缺乏有效的沟通或者没有进行沟通
-
软件复杂度越来越高
-
编程中产生错误
-
需求不断变更
-
项目进步的压力
-
不重视开发文档
-
软件开发工具本身隐藏的问题
c)缺陷类型:
所有缺陷可归为四类:
-
遗漏:规定的或预期的需求未体现在产品中(可能未将规格说明全面实现,也可能需求分析阶段就遗漏了需求)
-
错误:未将规格说明正确实现(可能涉及错误、也可能编码错误)
-
额外的实现:规格说明并未规定的需求被纳入产品,得到实现
-
改进
d)软件测试的误区
-
调试和测试是一样的;
-
测试组应当为保证质量负责;
-
过分依赖Bela测试;
-
把测试作为新员工的一个过度工作;
-
把不合格的开发人员安排做测试;
-
关注与测试的执行而忽略测试的设计;
-
自动化测试是万能的;
-
测试是可以穷尽的;
-
测试是为了证明软件的正确性;(而是验证软件和需求的一致性)
-
测试是枯燥乏味,缺乏创造力的工作;
e)软件测试的主要工作:
-
检视代码、评审开发文档
-
进行测试设计、写作测试文档(测试计划、测试方案、测试用例等)
-
执行测试,发现软件缺陷,提交缺陷报告,并确认缺陷最终得到了修正
-
通过测试度量软件的质量
-

浙公网安备 33010602011771号