1、软件生命周期
问题定义===》需求分析===》软件设计===》软件开发===》软件测试===》软件维护===》淘汰
2、软件开发模型
(1)瀑布模型(已被淘汰)
优点:提高开发效率
缺点:1、线性结构,无法适应用户的需求变更
2、如果中途出现失误,损失巨大,增加了开发的工作量
(2)快速原型模型
优点:可以和客户有充分的沟通,克服了需求不明确带来的风险,适用于不能预先确定需求的软件项目。
缺点:1、原型设计较难;
2、不利于开发人员对产品的扩展;
(3)迭代模型
分成好多组件,每一个组件完成后给客户,供客户审核。
优点:适应客户需求变更;降低了开发成本和风险
缺点:1、增加了集成失败风险;
2、容易退化为“边做边改”模式,失去对整个项目的控制
(4)螺旋模型(从里向外看)
最大的特点是引入了风险分析
优点:1、强调了风险分析,有助于将软件质量融入开发中;
2、小分段构建大型软件,易于计算成本;
3、客户参与,保证了项目的可控性;
缺点:构建过程太过于繁琐,不适合小型项目
(5)敏捷模型
1、客户的需求进化为核心,注重“人”的作用
2、采用迭代,循序渐进的方法,将整个项目分解为很多子项目
3、可对某个子项目进行修改,满足客户的需求
4、开发测试同时进行,甚至可以提前写好测试代码
3、软件质量
(1)什么是软件质量
软件产品满足基本需求及隐式需求的程度。
软件质量分为三个层次
满足需求规定:软件产品符合开发者明确定义的目标,并且能可靠运行。
满足用户需求:软件产品的需求是由用户产生的,软件的最终的目的就是满足客户需求,解决用户的实际问题。
满足用户隐式需求:软件如果满足用户隐式需求,即潜在的可能需要在将来开发的功能。将会极大的提升用户满意度,这就意味着和软件质量更高。
(2)软件质量的评价标准(国际评价标准)
(3)影响软件质量的因素
1、需求模糊
2、软件开发缺乏规范性文件指导,开发人员各写各的
3、软件开发人员问题
4、缺乏软件质量控制管理
4、软件缺陷产生的原因
(1)需求不明确
(2)软件结构复杂
(3)开发人员水平有限
(4)项目期限短
(5)使用新技术
5、软件缺陷的分类
一般以严重程度和优先级进行分类
6、软件缺陷的处理流程
缺陷报告:列举缺陷的类型、严重程度、缺陷描述、缺陷编号等,每个公司的缺陷报告不同。
7、常见的软件缺陷管理工具
(1)Bugzilla
Bugzilla是Mozilla公司提供的一款免费的软件缺陷管理工具。Bugzilla能够建立一个完整的缺陷跟踪体系,包括缺陷跟踪、记录、缺陷报告、处理解决情况等。
使用Bugzilla管理软件缺陷时,测试人员可以在Bugzilla上提交缺陷报告,Bugzilla会将缺陷转给相应的开发者,开发者可以使用Bugzilla做一个工作表,标明要做的事情的优先级、时间安排和跟踪记录。
(2)禅道
禅道是一款优秀的国产项目管理软件,它集中产品管理、项目管理、质量管理、缺陷管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程。
禅道分为专业和开源两个版本,专业版是收费软件,开源版是免费软件,对于日常的项目管理,开源版已经足够使用。
(3)JIRA
JIRA是Atlassion公司开发的项目与实务跟踪工具,被广泛 用于缺陷跟踪、客户实务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。JIRA配置灵活、功能全面、部署简单、扩展丰富、易用性好,是目前比较流行的基于Java架构的管理工具。
JIRA软件有两个认可度很高的特色;第一个是Atlassian公司对该开源项目实行免费提供缺陷跟踪服务;第二个是用户在购买JIRA软件同时将源代码也购置进来,方便二次开发。
8、软件测试
(1)按照测试阶段分类
单元测试:验证软件单元是否符合软件需求与设计,开发人员自测;
冒烟测试:软件构建版本建立后,对系统的基本功能进行简单的测试,这种测试重点验证的是程序的主要功能,而不会对具体功能进行深入测试。
集成测试:冒烟测试后,将已经测试过的软件单元在一起测试他们之间的接口,用于验证软件是不是满足设计需求。
系统测试:将经过测试的软件在实际环境中运行,将其他成分组合在一起测试
验收测试:对照软件产品的说明书,逐步测试,保证符合需求
(2)按照测试技术进行分类
黑盒测试:把软件当作一个有输入与输出的黑匣子,不必关心程序内部是怎样实现的。
白盒测试:测试人员了解软件程序的逻辑结构、路径与运行过程,在测试时按照程序的执行路径得出结果。白盒测试就是把软件当作一个透明的盒子,测试人员清除的知道从输入到输出的每一步过程。
(3)按照软件质量特性分类
功能测试:测试软件的功能是否满足客户的需求,包括准确性、易用性、适合性、互操作性等。
性能测试:测试软件的性能是否满足客户的需求,性能测试包括负载测试、压力测试、兼容性测试、可移植行测试和健壮性测试等。
(4)按照自动化程度进行分类
手工测试:一条一条代码测试。
自动化测试:借助脚本、自动化测试工具完成测试,需要人工参与,但是人工参与只是写脚本。
(5)按照测试项目分类
界面类测试:验证界面是否符合客户需求
安全性测试:测试在受到攻击时能否保护软件与数据的安全
文档测试:以需求分析,软件设计,用户手册、安装手册为主,主要验证文档说明与实际文件之间是否存在差异。
9、软件测试与软件开发的关系
10、软件测试模型
v模型(瀑布开发模型的一个变种)
W模型
H模型(测试同步执行)
X模型
11、软件测试原则
测试应基于客户需求
测试要尽早进行
穷尽测试是不可能的
遵循GoodEnough原则
测试缺陷要符合“二八”定理
避免缺陷免疫
12、软件测试基本流程
测试用例编写的原则:用最少的测试用例,测试覆盖率最大的程序。