软件测试技术学习笔记
作者:网络转载 发布时间:[ 2015/11/11 16:42:45 ] 推荐标签:单元测试 黑盒测试
一:软件测试基础知识:
1:软件测试的定义:
IEEE的定义:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差别。
通俗一点说软件测试是采用测试用例执行软件的活动,目标是找出失效或演示正确的执行。
2:软件bug产生的原因:主要有三种情况
A:在编码前产生的错误:作为软件开发依据的需求,在开发初期提供的不够明确,不能满足用户的实际需求或对用户的需求理解有误。
B:在编码过程中产生的错误:开发人员的逻辑错误或开发过程中没有遵守统一的,公认的方法论或开发规范,开发人员间配合不够严密,约定不够明确。
C:测试过程中可能产生的错误:开发人员对测试当中发现的bug进行修改后,可能产生新的bug。
3:测试的生命周期:
1:单元测试:单独检验各模块的工作
2:集成测试:将测试过的单个模块集成到子系统中,直到测试完整个系统,这里的集成可以是一次性的(非增量式集成),也可以是逐个的扩展(增量式集成)
3:系统测试:充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。常见的系统测试包括:恢复测试、安全测试、性能测试、强度测试。
4:验收测试:用户验收测试是软件开发结束后,用户对软件产品投入实际应用以前进行的后一次质量检验活动。它要回答开发的软件产品是否符合预期的各项要求,以及用户能否接受的问题。
4:软件测试的信息流:
二:软件错误与软件质量保证:
1:软件错误严重级别分类:
1- Low 低级别:使操作者不方便或遇到麻烦,但它不影响执行软件功能,比如标题或信息提示不正确。
2- Medium中等级别:影响系统的基本功能或简单功能,但软件可以正常运行,比如执行速度缓慢。
3- High 高级别:严重地影响系统要求或基本功能的实现,但存在合理的更正办法,比如信息修改失败或不正确。
4- Very high 严重级别:严重地影响系统要求或基本功能的实现,且没有办法更正,比如遥测、遥控失败。
5- Urgent 致命级别:不能执行正常软件功能或重要功能,软件无法正常运行下去,比如系统崩溃、死机。
2:软件错误的分类:
从错误的性质看,软件错误分为以下几种
1:静态测试和动态测试:
主要从是否需要执行被测软件的角度,可分为静态测试和动态测试,前者不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审核。(我认为主要是让测试人员对编译器发现不了的潜在错误进行分析,如无效的死循环,多余的变量等),而动态测试则通过运行被测试软件来达到目的。
2:黑盒测试和白盒测试:
黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,他是从用户的角度进行测试,用这种方法进行测试,被测程序被当作打不开的黑盒,因而无法了解其内部结构。在完全不考虑程序内部结构和内部特性的情况下,测试者只知道该程序输入和输出之间的关系,或是程序的功能,他必须能够根据输出判断测试结果的正确与否。在确认测试或系统测试中大都采用黑盒测试,常用的测试方法有:等价类划分、边值分析、因果图。
白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,采用这一测试方法,测试者可以看到被测的源程序,他可用以分析程序的内部结构,并且根据其内部构造设计测试用例。在单元测试当中主要采用白盒测试,常用的测试方法有:语句覆盖,判定覆盖,条件覆盖、判定/条件覆盖、路径覆盖、模块接口测试。
3.测试步骤:
软件测试工作可以从一螺旋曲线上来体现,在螺线的核心点针对每个单元的源代码,进行单元测试,在单元测试完成后,沿螺线向外前进,开始针对软件整体构造和设计的集成测试,然后是检验软件需求是否能得到满足的确认测试,后,来到螺线的外层,把软件和系统的其他部分协调起来,当作一个整体,完成系统测试。这样,沿着螺旋线,从内到外,逐步扩展了测试的范围。
上图表示了测试的流程图,开始分别完成每个单元的测试任务,以确保每个模块能正常工作。单元测试大量地采用白盒测试方法,尽可能发现模块内部的程序错误,然后,把已测试过的模块组装起来,完成集成测试,其目的在于检测与软件设计相关的程序结构问题。这是较多的采用黑盒测试方法来设计测试用例。完成集成测试以后,要对开发工作初期制定的确认准则进行检验,确认测试是检验所开发的软件是否能满足所有功能和性能需求的后手段,通常采用黑盒测试方法,完成确认测试后,给出的应该是合格的软件产品,但为检验它是否能与系统的其他部分(如硬件、数据库及操作人员)协调工作,需要进行系统测试。
A:单元测试:
是程序的小组成单位,它具有以下特征:
1:单元接受数据输入后,经过加工,得到一些结果,可能给出输出结果,也可能仅仅发生一些状态的改变,但如果输入、加工和输出三者缺少任何一个,这个程序单元都不是完整的。
2:原则上说,每个程序单元都应有正规的规格说明,使之对其输入、加工和输出的关系作出明确的描述。
比程序单元更大的是程序模块,它有以下基本属性:
名字,明确的功能,内部使用的数据,与其它模块或与外界存在的数据联系,实现其特定功能的算法,可被其上层模块调用,在其工作过程中也可调用其下属模块协同工作。
有时候我们不加区分,默认单元测试是模块测试也是允许的
单元测试要解决的问题主要有以下5个方面:
1:模块接口:对被测的模块,信息能否正常无误地流入和流出
2:局部数据结构:在模块工作过程中,其内部的数据是否能保持其完整性,包括内部数据的内容、形式及相互关系不发生错误。
3:边界条件:在为限制数据加工而设置的边界处,模块是否能正常工作。
4:覆盖条件:模块的运行能否作到满足特定的逻辑覆盖
5:出错处理:模块工作中发生了错误,其中的出错处理设施是否有效。
模块与其周围环境的接口有无差错应首先得到检验,否则其内部的各种测试工作也将是徒劳的。
由于每个模块在整个软件中并非孤立,为模拟这一联系,在进行单元测试时,需要设置若干辅助测试模块,一种是驱动模块,用以模拟被测模块的上级模块。
另一种是桩模块,用以模拟被测模块工作过程中所调用的模块。驱动模块在单元测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。壮模块由被测模块调用,它们仅作很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11