-
软件测试的分类
按照测试时对象的可见度:
黑盒测试、白盒测试
根据状态划分
静态测试、动态测试
根据测试执行的方式划分
手工测试、自动化测试
黑盒测试
定义:把测试对象看成一个黑盒,在不了解程序内部逻辑和结构的情况下,从用户的角度对软件进行测试。
优点:
容易实施,不需要关注内部的实现
更贴近用户的使用角度
缺点:
测试覆盖率较低,一般只能覆盖到代码量的不到40%
针对黑盒的自动化测试,复用率较低,维护成本较高
黑盒测试主要测试什么
是否有不正确或者遗漏的功能
在接口是,输入是否正确的接受,能否输出正确的结果
是否有数据结构错误或外部信息(例如数据文件)访问错误?
性能是否能够满足要求?
黑盒测试的主要设计方法
白盒测试
定义:又称结构化测试/透明盒测试,是针对程序的逻辑结构来设计测试用例,用逻辑的覆盖率来测量程序的完整性
主要的逻辑单位:语句,条件,条件组合,分支,路径
优点:
1.迫使测试人员去仔细思考软件的实现,理解原理
2.可以检测代码中的每条分支和路径
3.揭示隐藏在代码中的错误
4.对代码的测试比较彻底
缺点:
1.昂贵
2.无法检测代码中遗漏的路径和数据敏感性错误
3.不能直接验证需求的正确性
主要测试方法:代码检测法 ,静态结构分析法, 静态质量度量法 ,逻辑覆盖法,基本路径测试法
灰盒测试:介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现
静态测试
定义:指无须执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序不足之处,减少错误出现的概率
方式:互审 走查 会议(从不正式到正式)
动态测试:
含义:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等。
手工测试:
含义:由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试
自动化测试:
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查
查看全部 -
软件测试的分类
按测试手段来分类
1.黑盒测试,白盒测试
2.静态测试,动态测试
3.手工测试,自动化测试
黑盒测试
定义:在完全不考虑程序内部结构的情况下,通过相关暴露出来的接口对程序进行测试
优点:
1.容易实施,不需要关注内部的实现
2.更贴近用户的使用角度
缺点:
1.测试覆盖率较低,一般只能覆盖到代码量的不到40%
2.针对黑盒的自动化测试,复用率较低,维护成本高
主要测试什么:
1.是否有不正确或者遗漏的功能
2.在接口上,输入是否能正确的接受?能够输出正确的结果
3.是否有数据结构错误或外部信息(例如数据文件)访问错误
4.性能上是否能够满足要求
查看全部 -
软件测试的分类:
按测试阶段分为:单元测试,集成测试,系统测试,验收测试
单元测试:
定义: 对软件中最小的可测试单元进行检查和验证
原则:
1.尽可能保证各个测试用例是相互独立的
2.一般是代码的开发人员来实施,用以检验所开发的代码功能是否符合自己的设计要求
益处:
1.尽早发现缺陷
2.有利于重构
3. 简化集成
4.减少文档
5.用于设计
限制:
1.不可能覆盖所有的执行路径,所以不可能捕捉到所有路径的错误
2.每一行代码,一般需要3~5行测试代码才能完成单元测试。所以存在投入和产出的一个平衡
集成测试:
定义:在单元测试的基础上,再将所有的软件单元按照概要设计规格说明组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动
主要实施方案:
1.Big Bang 一次性集成,主要做法是把大部分的开发模块耦合起来形成完整的软件系统或系统的主要组成部分,并把它们拿来做集成测试
2.自顶向下 递增的组装软件结构的方法,一般来说从主程序沿控制层逐层向下集成,通过这种方式逐层测试,覆盖到所有模块
3.自底向上 最常用的集成测试,即从程序模块的最底层开始,逐层向上组装并逐层测试
4.核心系统集成 先把核心的软件部分挑选出来,并对这些部件进行集成测试,在测试通过的基础上再逐步扩展到外围的部件,直到最后形成稳定的软件产品
5.高频集成 同步到软件开发过程,每隔一段时间研发团队就对现有的代码进行一次集成测试
集成测试和单元测试的区别:
1.测试的对象不同
2.测试的依据不同
3.测试的方法不同
系统测试
定义:将经过集成测试的软件,作为计算机系统的一个部分,与系统中的其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。
关注点
关注系统本身的使用
关注系统与其他相关系统间的连通
关注系统在不同的压力下的表现
关注系统在真实使用环境下的表现
系统测试和集成测试的区别:
1.测试对象不同 集成测试:由通过了单元测试的各个模块集成起来的构件;系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统
2.测试时间不同 集成测试:介于单元测试和系统测试之间;系统测试:集成测试之后
3.测试内容不同 集成测试:各个单元模块之间的接口;系统测试:整个系统的功能和性能
4.测试角度不同 集成测试:偏于技术角度的验证;系统测试:偏于业务角度的验证
验收测试:
定义:也称为交付测试。针对用户需求、业务流程的正式测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统
查看全部 -
软件测试的经典定义:为了发现错误而执行程序的过程
软件测试IEEE定义:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异
软件测试的五大要素:质量,人员,资源,流程,技术
软件测试的两大目标:测试覆盖率和测试效率
软件测试遵循的原则:
1.测试显示错误的存在,但不能证明系统不存在缺陷
2.穷尽测试是不可能的,应及时设定终止条件
3.测试应尽早进行
4.缺陷具备集群特性
5.测试的杀虫剂悖论
6.测试的二八原则
7.测试活动依赖于测试背景
查看全部 -
单元测试 集成测试 系统测试 验收测试查看全部
-
单元测试对代码的测试查看全部
-
探索式测试的优点:
更能激发测试人员的创造性和工作乐趣;
增加了发现新的或较深入bug的可能性;
在较短时间内找到更多bug以及对SUT作一个快速的评估;
有利于更加有效地实施自动化;
更加适用于敏捷项目;
减少了在简单、繁复上用例的无谓编写时间;
查看全部 -
ST vs ET:
查看全部 -
ET和ST使用:
查看全部 -
基于脚本的测试——SBT
Script-based Testing(这里的script是手工测试里是指测试用例,而在自动化测试里是指自动化测试的脚本)——比较传统的测试
Scripted Testing(ST)
它强调的是先做测试设计,在执行测试。
Exploratory Testing(ET)探索式测试:完全抛开测试脚本的测试。它是一种测试风格、思维而不是一种测试技术。
查看全部 -
敏捷测试VS传统测试(2)
查看全部 -
敏捷测试VS传统测试
查看全部 -
敏捷测试的特点:
查看全部 -
敏捷测试:Agile Testing——遵循敏捷宣言的一种测试实践
查看全部 -
H 模型:
把软件测试看成一个完全独立的流程,贯穿在整个产品的生命周期当中。它是与其他流程并发的进行。分为测试准备和测试执行两个阶段
查看全部
举报