软件测试期末复习

软件测试是软件开发过程中的一个重要组成部分,其直接目的就是对软件产品(包括阶段性成果)进行验证与确认,尽快尽早地发现软件缺陷(包括各种问题);其根本目的是保证及提升软件产品的质量。

开展测试工作时应把握的一些经验性原则:

1.所有的测试应该追溯到用户需求。

2.应该尽早地和不断地进行软件测试

3.80/20原则,即80%的缺陷出现在20%的功能模块上

4.投入/产出原则

5.测试应该从“小规模”开始,逐步转向“大规模”,即逐渐式build测试

6.设立独立的测试部门或委托第三方机构测试

7.回归测试

瀑布模型(自上而下、相互衔接的固定顺序)

W模型(测试和开发同时进行)

V模型(多个模块可以平行独立进行单元测试)

X模型(X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序)

H模型(H模型将测试活动完全独立出来,使得测试准备活动和测试执行或动清晰地体现出来)

软件测试生命周期是指从测试项目建立到bug提交的整个测试过程,主要包括测试需求分析、制定测试计划、设计测试用例、执行测试、测试评估等5 个阶段

评估软件质量的标准通常有功能性特性和非功能特性。非功能特性包括可用性、可靠性、性能、容量、可伸缩性、兼容性和可扩展性

软件质量模型:McCall模型、Boehm模型、ISO9126模型

软件缺陷是由很多原因造成的,从其产生的来源看,可以分为需求分析(规格说明书)、设计(概要设计、详细设计)编码及其他。经统计发现,规格说明书是软件缺陷最多的地方。

 

软件测试的分类

1、按开发阶段:单元测试、集成测试、系统测试、验收测试
2、按测试实施组织:α、β、第三方
3、按是否运行被测对象分:静态测试、动态测试
4、按是否查看代码:黑盒测试、白盒测试、灰盒测试
5、按是否手工执行划分:手工测试、自动化测试
6、按测试对象划分:性能测试、安全测试、兼容性测试、文档测试、易用性测试(用户体验测试)、业务测试、界面测试、安装测试
7、按测试地域划分:本地化测试、国际化测试

软件测试按测试实施的组织可分为α测试、β测试和第三方测试

1.α测试:α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。

2.β测试:β测试是一种验收测试。β测试由软件的最终用户在一个或多个客房场所进行

3.第三方测试:第三方测试是介于开发方和用户方之间的组织测试

黑盒测试是一种从软件外部对软件实施的测试,也称功能测试。   进行黑盒测试时,我们不关心程序的内部结构,只关心程序的输入数据和输出结果。

等价类的划分包括有效等价类和无效等价类两种情况。

1.有效等价类是正向思维,由合理的或者有意义的输入数据所构成的集合

2.无效等价类是逆向思维,由不合理的或者无意义的输入数据所构成的集合

设计测试用例的方法「不用背,结合大题」

1.划分等价类,形成等价类表

2.设计一个新的测试用例,覆盖所有有效等价类

3.设计一个新的测试用例,覆盖所有无效等价类

场景法一般包含基本流和备选流,从一个流程开始,通过描述经过的路径来确定过程,通过遍历所有的基本流和备选流来完成整个场景。      场景是基本流与备选流的有序集合。一个场景中至少应包含一条基本流。

使用场景法设计测试用例的基本设计步骤:

1.根据需求规格说明,描述出程序的基本流及各项备选流

2.根据基本流和各项备选流生成不同的场景,绘制场景流程图

3.将每个场景生成相应的测试用例

4.重新复审生成的所有测试用例,用掉多余的测试用例,测试用例确定后,再确定每一个测试用例的测试数据值

白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测软件内部动作是否按照设计说明书的规定正常进行,检验程序中的每条道路是否都能按照预定要求正常工作。

白盒测试通常可分为静态测试和动态测试两种方法。静态测试方法有代码检查法、静态结构分析法;动态测试方法有逻辑覆盖测试法、基本路径测试法、数据流测试法、域测试法、符号测试法、程序插桩和程序变异法等。

[计算题]环路复杂性p60

控制流图的边数用E表示,节点用N表示

(1)环路复杂性V(G)=E-N+2

判定节点个数为P

(2)环路复杂性为V(G)=P+1

控制流图的区域个数为R

(3)V(G)=R

逻辑覆盖测试法是根据程序内部的逻辑结构来设计测试用例的技术,是白盒测试的主要动态测试技术之一,是以程序内部的逻辑结构为基础的测试技术,通过对程序内部的逻辑结构的遍历来实现程序的覆盖。逻辑覆盖可以分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖。

单元测试是对软件设计的最小单元进行测试。

辅助模块有1.驱动模块2.桩模块

单元测试的原则:

1.单元测试要尽早进行

2.单元测试应该遵循详细设计规格说明

3.于修改过的代码应重新进行单元测试,以保证修改后没有引入新的错误。

4.测试过程中,当测试结果与设计规格说明上不一致时,应如实地详细记录结果

5.设计师当的被测单元

6.使用单元测试工具

单元测试的内容:

1.模块接口测试

2.模块局部数据结构测试

3.模块中所有独立执行路径测试

4.各种错误处理测试

5.模块边界测试

集成测试也叫组装测试或联合测试,是将已经测试过的模块组合成子系统,其目的在于检测单元之间的接口等相关问题。逐步集成为符合概要设计规格说明要求的整个系统。

集成测试可以分为:1.基于功能分解的集成测试【通常有自顶向下集成、自底向上集成以及三明治集成】2.基于调用图的集成测试3.基于路径的集成测试

自顶向下集成是从主控模块开始,采用深度优先策略和广度优先策略,从上到下组合模块。

系统测试的基本策略是通过与定义的用户需求进行比较,发现软件与系统定义不符或者与之相矛盾的地方,以验证系统的功能和非功能特性是否满足需求所给的条件。   因此,在系统测试中,除了系统级的功能测试,还有非功能测试。其中非功能测试包括的种类较多 ,性能测试,安全性测试,用户界面测试,兼容性测试,可靠性测试,强度测试,容量测试,配置测试及文档测试。

影响性能的主要因素有响应时间,并发用户数,吞吐量,资源利用率等

性能测试的主要目标:1.获取系统形成的某些指标数据2.验证系统是否达到用户提出的性能指标3.发现系统中存在的性能瓶颈,优化系统的性能。

不同的用户加载模式p114

常见的入侵软件系统的安全性问题:

跨站脚本攻击

SQL注入式漏洞

URL和API的身份验证

缓冲区溢出

不安全的数据存储或传递

不安全的配置管理

有问题的访问控制,有问题的权限分配

口令设置不严,包括长度、构成和更新频率

暴露的端口或入口、

自动化测试的特点:

1.工具本身并无想象力,不具备创造性,不能完全取代手工测试,而且软件自动化测试也没必要取代手工测试来完成所有的测试任务。

2.在发现缺陷方面,自动化测试不如手工测试

3.自动化测试的成本较高,难度较大

自动化测试的优点:

1.速度快,测试效率高

2.测试结果正确

3.高复用性

4.更好利用资源,永不疲劳

5.可靠性强

6.独特的能力,模拟大数据量或大并发数的测试条件

开展自动化测试的条件:1.需求变更不频繁2.项目周期越长,更易开展自动化测试3.自动化脚本可复用

自动化测试技术1.静态代码分析2.录制与回放3.脚本技术(1.线性脚本2.结构化脚本:它在线性脚本的基础上增加了一些相应的选择条件【结构化脚本的主要优点是其健壮性比较好。结构化脚本的缺点是脚本复杂,而且测试数据仍然“捆绑”在脚本中,使得测试修改和定制非常复杂且困难】3.数据驱动脚本【数据驱动脚本是将测试输入和预期输入存储在独立的数据文件中。而不是与测试操作捆绑在一起,放在测试脚本中。】4.关键字驱动脚本【实现了关键字驱动技术所带来的数据、业务和脚本三者的分离】)

测试管理可以从测试团队(测试小组)、测试过程、测试环境、测试方法、测试执行等多个层次进行

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赛毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值