一、软件的生命周期
单元测试,集成测试,系统测试======测试方法=====>黑盒测试、白盒测试相结合;
并发问题出现在大规模使用。
软件维护:纠错性、维护性(时限最长的一次)
二、软件开发模型
1.瀑布模型
缺点:瀑布模型各个阶段的任务严格按照线性方式进行,无法适应用户需求变更,用户只能到最后才能看到开发成果,增加了开发风险。
优点:检查点清晰,分工明确,有利于大型软件开发人员的组织管理及工具的使用,可以提高开发效率。
2.快速原型模型
优点:适用于不能预先确认需求的软件项目
缺点:原型设计较难,不利于开发人员对产品的扩展
3.迭代模型
优点:适应客户需求变更,降低了开发成本和风险
缺点:增加了集成失败风险,容易退化为“边做边改”的模式,失去对整个项目的控制。
4.螺线模型
该模型融合了瀑布模型、快速原型模型,最大的特点是引入了其他模型所忽略的风险分析,
优点:强调了风险分析,有助于将软件质量融入开发中;小分段构建大型软件,易于计算成本,保证项目可控性。
缺点:构建过程太过繁琐,不适合小型项目。
5.敏捷模型
敏捷模型以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发。
特点;
-
项目被拆分成多个子项目,迭代完成,每个迭代都要经过测试。
-
快速响应需求变更,在修改过程中,软件一直处于可用状态。
-
不断对产品进行细微、渐进式地改进,每次改进一小部分,如果可行再逐步扩大改进范围。
-
开发未动,测试先行。
-
注重“人”的作用
敏捷模型适用于小型项目;
缺点:缺乏文档资料,软件之前版本的可重现性、可回溯性较低。
三、软件质量
1.什么是软件质量?
软件质量是指产品满足基本需求及隐式需求的程度。软件产品满足基本需求是指能满足软件开发时所规定的特性。
软件质量可以分为三个层次:
-
满足需求规定
-
满足用户需求
-
满足用户隐式需求
软件质量模型
2.影响软件质量的因素:
-
需求模糊
-
软件开发缺乏规范性文件指导
-
软件开发人员问题
-
缺乏软件质量控制管理
四、软件缺陷管理
1.软件缺陷产生的原因
软件缺陷就是通常所说的bug,它是指软件中存在的影响软件正常运行的问题。
-
需求不明确
-
软件结构复杂
-
开发人员水平有限
-
项目期限短
-
使用新技术
2.软件缺陷的分类
一般是以严重程度和优先级为标准使用
3.软件缺陷的处理流程
每个公司的软件缺陷处理流程不尽相同,但是遵循的最基本的流程是一样的,都要经过提交、分配、确认、处理、复测、关闭等环境。
4.软件缺陷报告
在实际软件测试过程中,测试人员在提交软件测试结果都会按照公司规定的模板将缺陷的详细情况记录下来生成缺陷报告,缺陷报告包括缺陷的编号、类型、严重程度、优先级、测试环境等。
编写缺陷报告的注意事项
每个缺陷都要有一个唯一的编号,这个缺陷的标识。
缺陷要有重现的步骤
一个缺陷生成一份报告
缺陷报告要整洁、完整。
四、软件测试的目的
-
对于软件开发来说:软件测试通过找到的问题缺陷帮助开发人员找到开发过程中存在的问题,预防下次缺陷的产生。
-
对于软件测试来说:使用最少的人力、物力、时间等找到软件中隐藏的缺陷,保证软件质量,也为以后的软件测试积累丰富的经验。
-
对客户需求来说:软件测试能够检验软件是否满足客户需求,对软件质量进行评估和度量,为客户评审提供有力的依据。
软件测试的分类
1.按照测试阶段分类
-
单元测试:验证软件单元是否符合软件需求与设计,开发人员自测。
-
冒烟测试:对系统基本功能进行简单的测试,重点验证的是程序的主要功能,而不会对具体的功能进行深入测试。
-
集成测试:将已经测试过的软件单元组合在一起测试它们之间的接口,用于验证软件是否满足设计需求。
-
系统测试:将经过测试的软件再实际环境中运行,并和其他系统组合再一起进行的测试。
-
验收测试:主要是对软件产品说明进行验证,逐行逐字按照说明书的描述对软件产品进行测试,确保其符合客户的各项要求
2.按照测试技术分类
黑盒测试
只要输入数据能达到预期效果计科,不必关心程序内部怎么样实现的。多用于功能测试。
白盒测试
测试人员了解软件程序的逻辑结构、路径与运行过程。测试人员要清晰的知道输入到输出的每一步过程。
3.按照软件质量特性分类
-
功能测试:测试软件的功能是否满足用户的需求;包括准确性、易用性、适合性、互操作性等;
-
性能测试:测试软件的性能是否满足用户的需求;包括负载测试、压力测试、兼容测试、可移植性测试和健壮性测试等;
4.按照自动化程度分类
-
手工测试:测试人员一条一条地执行代码完成测试工作。手工测试比较耗时费力,并且测试人员再疲劳状态下很难保证测试地效果。
-
自动化测试:借助脚本、自动化测试工具等完成相应地测试工作,他也需要人工地参与,但是他将执行地测试代码或流程写成脚本,执行脚本完成整个测试安全。
5.按照测试类型分类
-
界面类测试:验证软件界面是否满足客户需求,包括界面布局是否美观,按钮是否齐全等。
-
安全性测试:测试软件在没有授权的内部或外部用户的攻击或者恶意破坏时如何进行处理,是否你能保证软件与数据的安全
-
文档测试:以需求分析、软件设计、用户手册、安装手册为主,主要验证文档说明与实际软件之间是否存在差异。
6.其他测试
-
α测试:对软件最初版本进行测试。有开发人员和测试人员或者用户协助进行测试。测试人员记录使用过程中出现地错误与问题,整个测试过程是可控的。
-
β测试:软件上线之后进行地测试。用户在使用过程中发现错误与问题进行记录,反馈给开发人员进行修复。
-
回归测试:重新测试的过程叫做回归测试。回归测试是软件测试工作中非常重要的一部分,软件开发的各个阶段都会进行多次回归测试。
-
随机测试:没有测试用例,检查列表,脚本或指令测试,主要是根据测试人员的经验对软件进行功能和性能抽查。
五、软件测试与软件开发的关系
软件测试在项目各个阶段的作用如下:
-
项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。
-
项目分析阶段:确定测试需求分析,即确定在项目中需要测试什么,同时指定系统测试计划。
-
概要设计与详细设计阶段:指定单元测试计划和集成测试计划。
-
编码阶段:开发相应的测试代码和测试脚本。
-
测试阶段:实施测试阶段并提交相应测试报告。
软件开发是自顶向下、逐步细化的过程;而软件测试是自底向上、逐步集成的过程。软件开发与软件测试之间的关系如下图所示:
六、常见的软件测试模型
1.V模型
2.W模型
软件开发与软件测试同步执行。
3.H模型
将测试活动完全独立起来,形成一个完全独立的流程,测试流程和其他工作流程是并发执行的,只要某一个工作流程的条件成熟就可以开始进行测试。
4.X模型
将程序分为多个片段进行反复迭代测试,然后将多个片段集成再进行迭代测试。
七、软件测试原则
测试应基于客户需求
测试要尽早进行。
穷尽测试是不可能的。
遵循goodEnough原则:测试的投入和产出要适当权衡,形成充分的质量评估过程。
测试缺陷符合“二八定理”:测试时要抓住主要矛盾,如果发现某些模块比其他模块具有更多的缺陷,则要投入更多的人力和精力重点测试这些模块以提高测试效率。
避免缺陷免疫:测试人员在使用测试用例时,要不断更新测试用例,不断改变自己的思维定式。
习题
一、填空题
-
软件从出生到消亡的过程称之为:软件的生命周期
-
早期线性开发模型称之为:瀑布开发模型。
-
引入风险分析的开发模型为: 螺旋开发模型
-
ISO/IEC 9126:1991标准提出的质量模型包括为:功能性、可靠性、可使用性、效率、可维护性、可移植性
-
按照缺陷的严重程度可以将缺陷或分为:严重、次要、一般、建议
-
验证软件单元是否符合软件需求与设计的测试称之为:单元测试
-
对程序的逻辑结构、路径与运行过程进行的测试称之为:白盒测试
-
有一种测试模型,测试与开发并行进行,这种测试模型称之为:W模型
二、判断题
-
现在比较流行的软件开发模型时螺旋模型。 (x)
-
软件存在缺陷是由于开发人员水平有限引起的,一个非常优秀的程序员可以开发出零缺陷的软件 (x)
-
软件缺陷都存在于程序代码中 (x)
-
软件测试是为了证明程序无错 (x)
-
软件测试H模型融入了探索测试。 (x)
-
软件测试要投入尽可能多的精力以达到100%的覆盖率 (x)
三、单选题
1.下列选项中,哪一项不是软件开发模型? ( A )
A.V模型 B.快速模型 C.螺旋模型 D.敏捷模型
2.下列选项中,哪一项不是影响软件质量的因素? ( C )
A.需求模糊 B.缺乏规范的文档指导 C.使用新技术 D.开发人员技术有限
3.下列选项中,哪一项不是软件缺陷产生的原因? ( B )
A.需求不明确 B.测试用例设计不好 C.软件结构复杂 D.项目周期短
4.关于软件缺陷,下列说法中错误的是( C )。
A.软件缺陷是软件中(包括程序和文档)存在的影响软件正常运行的问题。
B.按照缺陷的优先级不同可以将缺陷划分为立即解决、高优先级、正常排队、低优先级
C.缺陷报告有统一的模板, 该模板是IEEE 729- 1983 制定的
D.每个缺陷都有一一个唯一的编号, 这是缺陷的标识
解析:缺陷报告的形式,每个公司都有一套模板
5.关于软件测试,下列说法中错误的是 ( D )。
A.在早期的软件开发中,测试就等同于调试
B.软件测试是使用人工或自动手段来运行或测定某个系统的过程
C.软件测试的目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差异.
D.软件测试与软件开发是两个独立、分离的过程
6.下列哪一项不是软件测试的原则? ( B )
A.测试应基于客户需求
B.测试越晚进行越好
C.穷尽测试是不可以的
D.软件测试应遵循GoodEnough原则
四、简答题
1.请简述软件缺陷的处理流程。
软件缺陷的处理流程:提交——>分配——>确认——>处理——>复测——>关闭
2.请简述软件测试的基本流程。
软件测试流程:分析测试需求——>指定测试计划——>设计测试用例——>执行测试——>编写测试报告。