第一章:
一、软件及分类
(1)软件:(程序,数据 文档)
软件测试:(测试程序,测试数据,测试文档)
(2)软件的分类:按层次划分-----系统软件和应用软件
按组织划分-----商业软件和开源软件
按结构划分-----单机软件,分布式软件(连网)
二、缺陷的由来:
(1)软件缺陷的由来:
Bug:
Defect:
所有不满足需求或超出需求的都是缺陷
没有不存在缺陷的软件,知识迄今为止尚未发现的软件
(2)软件缺陷的定义:
1。软件未实现产品说明书中要求的功能。
2。软件出现了产品说明书指明不应该出现的功能。
3.软件实现了产品说明书未提到的功能
4.软件未实现产品说明书虽未明确提及但应该实现的目标
5.软件难以理解,不易使用,运行缓慢或者(从测试的角度看) 最终用户会认为不好
(2-1)起源:上世纪70年代中期:
《测试数据选择的原理》
《软件测试的艺术》
(2-2)定义:
(1)正向思维的定义:
出发点:使自己确信产品是能够正常工作的评价一个程序和系统的特性或能力,并确定他是否能达到期望的结果,软件测试就 是以此为目的的任何行为。
(2)反向思维的定义
(3)IEEE定义的软件测试
(4)广义的软件测试
(5)软件测试的目的
(6)软件和调试的区别
(7)软件测试的对象
第二章:
一、软件危机:
1.软件危机:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
2.应对软件危机,提出软件工程,软件标准化
3.软件工程包含两方面的内容:
(1)软件开发技术:软件开发方法学,软件工具和软件工程环境
(2)软件项目管理:软件质量,项目估算,进度控制,人员组织,配置管理,项目计划
-
引起软件危机的主要问题是软件的质量问题。软件工程主要解决的就是软件质量问题。软件测试是软件质量管理体系中一个非常重
要的手段
二、软件生命周期:
需求分析----需求设计----详细设计----编码----测试----验收
三、软件开发模型:
(1)瀑布模型:
选择瀑布模型必须满足的条件:
- 在开发时间内需求没有或者很少变化;
- 分析设计人员对应用领域很熟悉;
- 低风险项目(对目标、环境很熟悉);
- 用户使用环境很稳定;
- 用户除了提出需求以外,很少参与开发工作
缺点:
1.强调时间顺序的严格执行。前阶段不完成,后阶段不开始。
2.将测试放在了编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求的问题一直延续到代码完成暴露或者被发现。
3.瀑布模型不适应用户需求的变化
优点:
1.为项目提供了按阶段划分的检查点
2.当前一阶段完成后,只需要去关注后续阶段段。
(2)螺旋模型:
![image-20210316132434563](/Users/yzm/Library/Application%20Support/typora-user-images/image-20210316132434563.png)
a.四种象限
螺旋模型很像我们高中时候学习的四象限它分为制定计划,风险分析,实施工程和客户评估阶段,整个螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
b.内容
螺旋模型在每个阶段之前及经常发生的循环之前,都必须要进行风险评估。在实践中,螺旋法技术和流程变得更为简单。迭代方法体系更倾向于按照开发/设计人员的方式工作,而不是项目经理的方式。
c.优点
1)设计上的灵活性,可以在项目的各个阶段进行变更
2)以小的分段来构建大型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4)随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
(3)迭代模型:
A:迭代模型使用条件:
1、在项目开发早期需求可能有所变化。
2、分析设计人员对应用领域很熟悉。
3、高风险项目。
4、用户可不同程度地参与整个项目的开发过程。
5、使用面向对象的语言或统一建模语言(Unified Modeling Language,UML)。
6、使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具,如Rose(Rose是非常受欢迎的物件软体 开发工具。)。
7、具有高素质的项目管理者和软件研发团队。
B:迭代模型的优点:
1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需 求的变化会更容易些。
(4)敏捷开发模型:
A:什么是敏捷开发模型:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
优点:
敏捷开发的高适应性,以人为本的特性。
更加的灵活并且更加充分的利用了每个开发者的优势,调动了每个人的工作热情。
缺点:
由于其项目周期很长,所以很难保证开发的人员不更换,而没有文档就会造成在交接的过程中出现很大的困难。
(5)增量模型:
优点:
①人员分配灵活,一开始不需要投入大量人力
②先推出核心的产品,在后续增加相应的功能
③增量能够有计划的管理技术风险
④适用于需求经常变更的软件开发过程
缺点:
①如果增量包之间存在相交的情况未很好的处理,则必须做全盘的系统分析
(6)快速原型模型:
A: 快速原型是利用原型辅助软件开发的一种新思想。经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程 中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。
B:
优点:克服瀑布模型的切点,减少由于软件需求不明确带来的开发风险,互动性更高更容易了解客户需求,反复循环
缺点:
所选用的开发技术和工具不一定符合主流的发展
b.快速建立起来的系统结构加上连续的修改可能会导致产品质量低下
四、软件测试模型:
1.瀑布模型:
(1):需求分析–设计–编程–测试–维护
2.v模型:
(1) 优点:
它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关 系。
(2)缺点
仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段。
测试的对象仅仅是程序,忽略了测试对需求分析,系统设计的验证,一直到最后的验收测试才被发现。
3.w模型:
(1)优点:
测试伴随着整个软件的开发周期
测试的对象不仅仅是程序,需求,设计和功能同样要测试
(2)局限性:
在W模型中,需求,设计,编码等活动被视为串行的,同时,测试和开发也要保持着一种线性的前后关系,上一阶段结 束,才可以开始下一阶段工作。
4.x模型:
(1)特点:X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序。
右上半部分,这些可执行程序还需要进行测试。已通过集成测试的成品可以进行封版并提交给用户,也可以作为更大规模和范围内集成的一部分。
X模型还定位了探索性测试(右下方)。
5.h模型:
五、软件测试过程理念:
1.尽早测试:
测试人员早期参与软件项目
尽早的开展测试执行工作
2.全面测试:
对软件的所有产品进行全面的测试
软件开发及测试人员(有时包含用户)全面的参与到软件测试中
3.全过程测试:
测试人员要充分关注开发过程
测试人员要对测试的全过程进行全程的跟踪
4.独立的、迭代的测试
测试活动是独立的
测试活动应该是循环往复,不断的进行
第三章:软件测试内容:
一、软件测试分类:
(1)软件开发阶段划分
a.单元测试:只对软件中最小的可测单元进行检查和验证,Java里可测单元Java类
1.好处:尽早的发现缺陷
简化集成,
2.缺点:不可能覆盖所有执行路径,所有不可能保证捕捉所有路径错误
3.内容:模块接口测试,局部数据结构测试,路径测试,边界测试
b.集成测试:
1.集成测试也叫组装测试,联合测试,子系统测试,或部件测试。集成测试是在单元测试的基础上,将所有模块按照概要设计 要求,组装成子系统或系统,进行集成测试。
2.目的:找出模块接口
(2)按照测试技术划分
(3)按照代码运行划分
(4)按照软件特性分类
(5)其他测试类型