软件测试基础
选择题(15小题,共30分)
软件测试相关概念
-
软件测试
-
目的:
- 保证被测软件系统符合用户需求
-
手段:
- 通过找bug来判断软件与需求的一致性
-
阶段:
- 软件测试贯穿了整个软件开发的生命周期
-
-
软件质量
-
定义:
- 是反映软件满足明确或隐含需要能力的特性总和
-
软件产品中能满足给定需要的性质和特性的总体
-
软件具有所期望的各种属性的组合程度
-
顾客和用户觉得软件满足其综合期望的程度
-
确定软件在使用中将满足顾客预期要求的程度
-
-
白盒测试
-
定义:
- 白盒测试方法根据模块内部结构,基于程序内部逻辑结构,针对程序语句、路径、变量状态等来进行测试。
- 单元测试主要采用白盒测试方法,辅以黑盒测试方法。白盒测试方法应用于代码评审、单元程序之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中。
-
关注的对象:
-
源代码
- 措施:阅读源代码,检验代码的规范性,并对照函数功能查找代码的逻辑缺陷、内存管理缺陷、数据定义和使用缺陷
-
程序结构
- 措施:使用与程序设计相关的图表,找到程序设计的缺陷,或评价程序的执行效率
-
-
方法分类
-
逻辑覆盖法
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 条件判定组合覆盖
- 多条件覆盖
- 修正判定条件覆盖
-
基本路径测试法
-
-
-
黑盒测试
-
定义
- 只知道系统输入和预期输出,不需要了解程序内部结构和内部特性的测试方法
-
分类
-
等价类划分法
-
边界值分析法
-
组合测试用例设计技术
- 全面测试
- 单因素覆盖
- 正交实验设计法
- 两两组合
-
具有约束关系的组合测试
- 软约束
- 硬约束
- 场景法
- 因果图法
- 决策表法
-
-
-
渗透测试
- 渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
-
手工测试
- 手工测试是传统的测试方法,由测试人员手工编写测试用例、执行、观察结果。
-
自动化测试
- 自动化测试或测试自动化是一种软件测试技术,它使用自动化测试工具来执行测试用例套件。
-
回归测试
- 回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
-
α测试
- α测试是指软件开发公司组织内部人员模拟各类用户对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的 用户操作方式。经过α测试调整的软件产品称为β版本。
-
ß测试
- β测试是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。β测试主要衡量产品的FLURPS,着重于产品的支持性,包括文档,客户培训和支持产品生产能力。
只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。
- β测试是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。β测试主要衡量产品的FLURPS,着重于产品的支持性,包括文档,客户培训和支持产品生产能力。
单元测试的方法
- 白盒测试
- 黑盒测试
- 灰盒测试
白盒测试设计测试用例原则
- 1.保证一个模块中的所有独立路径至少被测试一次
- 2.所有逻辑值均需测试真(TRUE)和假(FALSE)两种情况
- 3.检查程序的内部数据结构,保证其结构的有效性
- 4.在上下边界及可操作范围内运行所有循环。
黑盒测试设计测试用例原则
- 根据软件规格说明书设计测试用例,规格说明书的正确性是至关重要的
- 有针对性地查找问题,并且正确定位等价类
- 检查功能是否有缺陷或错误
- 依据测试地重要性来确定测试等级和测试重点,减少程序可能出现的缺陷
- 检查在接口处输入的信息是否能正确接收,以及接收后能否输出正确的结果
- 认真选择测试策略,尽可能发现程序的数据结构错误或外部信息访问错误,站在用户角度进行测试
黑盒测试各种方法的原理
-
等价类
- 把所有可能的输入数据,即程序的输入数据集合划分成若干个子集(即等价类),然后从每一个等价类中选取少量具有代表性的数据作为测试用例。
-
边界值分析
- 是对等价类划分方法的补充;所谓边界值,是指相对于输入等价类和输出等价类而言,稍高于其最高值或稍低于最低值的一些特定情况。边界值分析的步骤包括确定边界,选择测试用例两个步骤。
-
组合测试
-
场景法
- 场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。当拿到一个测试任务时,一般并不是先关注某个控件的边界值、等价类能否满足要求,而是要先关注它的主要功能和业务流程能否正确实现,这就需要场景法来完成测试。
集成测试策略
-
自底向下
-
自顶向上
-
大棒式
-
三明治
-
持续集成
-
驱动程序
-
桩程序
接口测试及HTTP工作原理:
-
接口测试:
- 测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测系统之间以及内部系统之间的交互点。
-
HTTP工作原理
- HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。
性能测试相关概念
-
压力测试
- 压力测试通常是在高负载情况下来对系统的稳定性进行测试,更有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患等。
-
负载测试
- 负载测试是通过改变系统负载方式、增加负载等来发现系统中所存在的性能问题。负载测试是一种测试方法,可以为性能测试、压力测试所采用。负载测试的加载方式也有很多种,可以根据测试需要来选择。
-
强度测试
-
性能测试
- 性能测试是为获取或验证系统性能指标而进行的测试。多数情况下,性能测试会在不同负载情况下进行。
软件测试目的
- 软件测试的目的,就是以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,避免软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
软件测试对象
- 程序、数据、文档
判断题(10小题,共10分)
概念解释(4小题,共12分)
桩程序
- 桩程序也称桩模块,用以模拟被测模块工作过程中所调用的下层模块。桩模块由被测模块调用,它们一般只进行很少的数据处理
驱动程序
- 驱动程序也称驱动模块,用以模拟被测模块的商机模块,能够调用被测模块,在测试过程中,驱动模块接受被测数据,调用被测模块并把相关数据传送给被测模块
静态测试
- 静态测试是指被测程序不在机器上运行,而采用人工检验和计算机辅助静态分析的手段对程序进行检验
动态测试
- 通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性、健壮性等性能。这种方法由三部分组成:构造测试用例,执行程序、分析程序的输出结果
渗透测试
- 渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法,这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且这个位置有条件主动利用安全漏洞
回归测试
- 回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误
系统测试
- 系统测试是指对整个系统的测试,将硬件、软件。操作人员看做一个整体,检验它是否有不符合系统说明书的地方,这种测试可以发现系统分析和设计中的错误
软件质量
- 软件产品中能满足给定需要的性质和特性的总体
- 软件具有所期望的各种属性的组合程度
- 顾客和用户觉得软件满足其综合期望的程度
- 确定软件在使用中将满足顾客预期要求的程度
α测试
- α测试是指软件开发公司组织内部人员模拟各类用户对即将面市的软件产品(α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品成为ß版本
ß测试
- ß测试是由软件的多个用户在实际使用环境下进行测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场。因而,ß测试是在开发者无法控制的环境下进行的软件现场应用。在ß测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。ß测试主要衡量产品的FLURPS,着重于产品的支持性,包括文档,客户培训和支持产品生产能力。只有当α测试达到一定可靠程度时,才能进行ß测试。它处于整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿