软件测试基本概念
软件缺陷
-
什么是缺陷:
-
缺陷是指欠缺或不够完备的地方,因为缺陷是相对质量要求而存在的,任何违背了质量要求、违背了客户的意愿,不能满足用户的要求,都可以认为是缺陷。
-
-
质量是产品或服务满足所明示或隐含需求能力的固有特性集合
-
软件质量是什么?
-
软件产品或服务满足用户需求的程度。具体地说,软件符合明确叙述的功能和性能需求、符合开发标准,具有专业软件都应满足的隐含特征和特性。
-
-
软件质量属性:
-
-
功能性:是指软件所实现的功能可达到它所设计规范和满足用户需求的程度
-
可靠性:是指在规定的时间和条件下,软件所能维持其正常的功能操作、性能水平的程度
-
易用性:指用户学习、操作、使用软件所需努力的程度
-
效率:软件系统的处理效能,如处理时间、资源使用率
-
可移植性:软件从一个计算机系统环境移植到另一个计算机环境的容易程度
-
可维护性:软件投入运行后,若需求发生变化,环境发生改变或软件发生错误时,进行修改所做努力的程度
-
兼容性:软件与其运行环境中软硬件协调工作的相容程度
-
可扩展性:软件增加新功能、扩充系统能力的难易程度
-
软件质量分为:
-
使用质量
-
有效性,生产率,安全性,满意度
-
-
外部质量
-
功能性、可靠性、易用性、效率、维护性、可移植性
-
-
内部质量
-
代码耦合度、数据耦合性、程序规范性、需求可溯性、代码复杂度..
-
-
过程质量
-
-
软件缺陷的定义:
-
是指软件中存在的任何一种破坏正常运行能力的问题、错误、异常、失败等,其结果导致软件产品在一定程度上不能满足用户的需要。
-
-
需求阶段最容易出现软件缺陷,原因:
-
系统分析人员与用户之间的沟通不畅,对用户需求理解偏差
-
用户需求经常更改,没有在需求规格说明书中得到及时修订
-
对规格说明书不够重视,描述内容不够确切
-
-
发布阶段修复软件缺陷成本代价最高
-
软件缺陷在开发早期出现概率大,在早期进行修复成本低
-
在后期出现概率小,但修复成本高
-
测试工作应尽早开展
-
软件测试分类
-
三层分类
-
-
还可以按照测试方式和被测对象分类
静态测试和动态测试
-
静态测试适合的测试范围
-
对系统需求规格说明书、系统设计规格说明书进行评审,对程序代码进行审查及静态结构分析等测试活动
-
能发现
-
此处可考分析题:分析修改缺陷
-
动态测试:
-
动态测试是通过运行被测软件程序,观察该程序在运行过程中的系统行为、变量结果、内存、堆栈等运行数据,来判断软件系统是否存在缺陷的测试活动。
-
可以发现
-
-
产品评审
-
为什么需要产品评审? 通过产品评审手段可以及早地发现需求分析、软件设计等阶段的缺陷问题,将质量成本从昂贵的后期返工转化为前期的缺陷发现。
-
产品评审定义: 产品评审是对软件开发文档或者代码进行评估的一种手段,以确定其是否与预期结果保持一致。例如,需求文档评审将检查需求文档是否符合用户要求,各项内容是否完整、前后是否一致等。代码评审将检查代码与设计一致性、代码可读性、代码逻辑正确性、代码安全性、代码规范性等。
-
产品评审形式
-
最不正式:走查
-
互为评审
-
最正式:会议评审
-
-
评审类型:
-
属于软件测试
-
需求评审
-
设计评审
-
代码评审
-
文档评审
-
-
属于软件质量保证
-
管理评审
-
流程评审
-
-
-
静态分析:是对软件的源代码进行研读,查找错误或手机度量信息,并不对代码进行编译和仿真运行
-
软件验证(vertification)是指在开发软件过程中,检验软件是否已正确地实现了产品规格说明书所定义的系统功能和特性。
-
软件确认(validation) 是指在开发软件完成后,检查软件产品是否符合用户的真实需求。
-
区别
-
验证:在过程中,验证是否正确实现功能特性
-
确认:开发完成后,检查是否符合需求
-
主动测试与被动测试
-
主动测试是指测试人员主动向被测试对象发送请求、或借助数据、事件驱动被测试对象的行为,从而验证被测试对象的反应或输出结果。
-
被动测试是指测试人员不干预产品的运行,而是被动地监控产品在实际环境中运行,通过一定的监测机制来获得系统运行的数据,包括输入、输出数据。
黑盒测试与白盒测试
黑盒测试是指在测试中,把程序看作一个不能打开的黑盒子。在完全不考虑程序内部结构和内部特性的情况下,对程序功能进行测试,检查程序功能是否按照需求规格说明进行有效实现、是否能适当地接收输入数据而产生正确的输出信息。
-
黑盒用于
此处可考设计题,设计测试方案
白盒测试是指在了解被测程序内部逻辑结构情况下,对该程序的内部变量、逻辑结构、运行路径进行测试,检验被测程序的内部动作或运行功能是否符合设计规格要求。
-
白盒用于
软件测试层次
-
单元测试
-
针对软件程序中最小功能单元代码测试
-
主要采用白盒测试方法,从程序内部结构出发设计测试用例,检查单元程序已实现功能与设计规格是否一致、以及编码中是否存在逻辑错误。
-
通常需要编写驱动模块和桩模块
-
驱动模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。并判断被测模块返回值是否和预期值相符
-
桩模块:使得程序能够编译通过,还需要模拟返回被代替模块的各种可能返回值
-
-
还采用代码评审方法
-
可考Junit编程
-
集成测试:单元测试之后,将若干单元模块按设计要求组装起来进行的测试,目标是发现模块接口相关问题
-
系统测试:集成测试之后,在系统层面所进行的功能特性测试和非功能特性测试
-
是从全局角度对系统各个功能和性能指标进行验证,以确定系统设计是否达到设计目标
-
功能性测试:在系统层面,对软件系统各个功能按照系统规格说明书进行测试,确认系统的功能实现
-
非功能性测试
-
性能测试(负载、压力)
-
本地化测试
-
可用性测试
-
可靠性测试
-
灾难恢复性测试
-
-
-
验收测试:软件提交用户之前,在实际用户环境中,验证系统功能、性能及其他特性是否符合用户需求。
-
α测试--采用实际运行环境和真实数据在公司内部进行
-
β测试--在外部用户试用
-
软件测试计划和测试用例
-
测试计划
-
测试计划是指为了高效地完成软件测试任务而做的准备工作,包括对测试工作量估算、测试资源预算、进度安排、测试风险评估、测试策略制定等工作。
-
测试计划内容:
-
目标和范围
-
项目估算
-
风险计划
-
进度安排
-
资源配置
-
跟踪和控制机制
-
课堂练习
-
A
-
D
-
A
-
C
-
B
-
D