1.软件的分类
按层次划分:系统软件,应用软件
按组织划分:商业软件,开源软件
按结构划分:单机软件,分布式软件
软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象
软件的生命周期分为6个阶段:需求分析、概要设计、详细设计、编码、测试、验收。
2.软件开发模型
1.瀑布模型
瀑布模型是最早出现的软件开发模型,是所有其他软件开发模型的基础框架。
优点:
1.为项目提供了按阶段划分的检查点
2.当前一阶段完成后,只需要去关注后续阶段
缺点:
1.各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
2.线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发量
3.瀑布模型不适应用户需求的变化
适用场景:需求比较明确且变更很少的项目
2.螺旋模型
以原型为基础沿螺线旋转、每转一圈都经过计划/风险分析/实施/评估等过程且得到相应新版本、经过若干次螺旋上升得到最终版本。
优点:
1.强调严格的风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适用于规模庞大,风险大的项目。
2.强调各个开发阶段的质量。
缺点:
1.软件建设周期长,但软件技术发展比较快,所以可能会和当前的技术水平有较大的的差距,无法满足当前用户需求
2.由于引入了非常严格的风险识别、风险分析和风险控制,将会大大消耗人力、资源,如果严重的影响了项目的利润,风险分析将毫无意义。
适用项目: 对新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。
3.测试过程模型
1.V模型
![](https://i-blog.csdnimg.cn/blog_migrate/b2494f17b77d4bb953e206018babd1e8.png)
揭示开发过程与测试过程中各阶段对应的关系
优点:包含了底层测试又包含了高层测试;
缺点:忽视了测试对需求分析、系统设计的验证,没有体现出尽早地和不断地进行测试的原则
2.W模型
![](https://i-blog.csdnimg.cn/blog_migrate/f6667922085afec85458575e6e4a4630.png)
两个V模型,分别代表测试与开发过程,明确表示出测试与开发的并行关系
优点:
1.测试的活动与软件开发同步进行
2.测试对象不仅仅是程序,包括需求和设计
3.尽早发现软件缺陷可降低软件开发成本
缺点:
1.在W模型中,需求、设计、编码等活动被视为串行的,无法支持灵活的迭代
2.使用起来技术复杂度高,对于需求和设计的测试要求高,实践起来困难
3.H模型
![](https://i-blog.csdnimg.cn/blog_migrate/f0da4c04a1e93ada579f090fdc57d466.png)
1.H模型将测试互动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
2.揭示了软件测试是一个独立的流程
3.指出软件测试要尽早准备,尽早执行;只要某个测试达到准备就绪点,测试执行活动就可以开展,并且不同的测试活动可按照某个次序先后进行,也可以反复进行
4.测试用例
测试用例:设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的预期结果
测试用例的特性:有效性,可复用性,易组织性,可评估性,可管理性
测试用例的作用:
1.在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率
2.测试用例的使用令软件测试的实施重点突出、目的明确
3.在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度、缩短项目周期。
4.检验软件是否满足客户需求、体现一个测试人员的工作量、展现测试用例的设计思路
测试用例编写注意事项:
1.避免穷举测试用例
2.再详细测试用例与有效测试时间中找到平衡点
3.好的测试用例应该多关注反向测试问题
4.测试用例库应该不断更新和维护
5.针对不同的需求类型和测试对象,灵活采用不同的测试用例设计方法
5.用例设计方法
1.因果图法
因果图法:因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法
![](https://i-blog.csdnimg.cn/blog_migrate/481425c83cfd2cc25e5bfcee6bf9341b.png)
步骤:
1.根据功能说明书中规定的原因和结果之间的关系画出因果图
2.根据功能说明在因果图中加上约束条件
3.根据因果图写出判定表
4.根据判定表编写测试用例
适用场景:适合于检查程序输入条件涉及的各种组合情况
总结:
1.首先进行等价类划分
2.在任何情况下都必须使用边界值分析方法
3.如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表法
4.对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程
5.可以用错误推测法追加一些测试用例
6.对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应该再补充足够的测试用例
6.缺陷
1.属性
缺陷类型:缺陷类型是根据缺陷的自然属性划分的缺陷种类
严重程度:是指因缺陷引起的故障对软件产品的影响程度
优先级:是指缺陷必须被修复的紧急程度(正向比逆向高);很大程度上取决于缺陷对测试工作的影响程度;一般可以根据测试的软件系统的企业务流程划分,软件的基本功能的缺陷,优先级越高,甚至需要立即解决。软件的备选流、基本功能测试中的反向测试的内容,优先级越低,甚至有些可改可不改
状态:是指缺陷通过一个跟踪修复过程的进展情况;表示缺陷的处理进度
2.缺陷的生命周期
1.发现缺陷:由测试人员
2.提交缺陷:由测试人员
3.确认缺陷:一般由测试主管、或者质量保证、由产品经理确认
4.分配缺陷:经过确认,有效的缺陷会指派给相关人员进行处理。一般由谁确认的缺陷由谁分配。
5.修复缺陷:主要由开发修复,也可能是产品经理修复问题,也可能是UI修复问题
6.验证缺陷:测试去验证缺陷有没有修复成功
7.关闭缺陷:只能由测试人员进行
3.缺陷报告编写目的
1.易于搜索软件测试报告的缺陷
2.报告的软件缺陷进行必要的隔离,报告的缺陷信息更具体、准确
3.具有缺陷的本质特征和复现步骤
4.具有缺陷类型分布以及对市场和用户的影响程度
4.缺陷报告的准则
1.准确:描述准确,不会引起误解
2.清晰:描述清晰,易于理解
3.简洁:只包含必不可少的信息,不包含任何多余的信息
4.完整:包含复现该缺陷的完整步骤和其他本质信息
5.一致:按照一致的格式书写全部缺陷报告