软件测试的定义
软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
V模型:
V模型和瀑布模型有一些共同的特性,V模型中的过程从左到右,描述了基本的开发 过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。局限性: 把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现.见下图。
软件测试的分类
1、按测试策略分类
黑盒/白盒测试、动态/静态测试、手工/自动测试
2、按测试阶段分类
单元测试、集成测试、(确认测试)、系统测试、验收测试
3、按测试方法分类
功能测试、性能测试、压力测试、负载测试、易用性测试、安装测试、界面测试、配置测试、文档测试、兼容性测试、安全性测试、恢复测试
单元测试:又称模块测试,是最小单位的测试,单元测试是在系统开发过程中进行的测试活动。目的是确保每个模块能正常工作。
集成测试:又称综合测试,是在单元测试的基础上将通过测试的单元模块按照设计要求组装成系统或子系统,再进行测试。目的在于检验与软件设计相关的程序结构问题。
确认测试:软件在由集成测试进入系统测试之前,需要对软件是否可以进入系统测试进行评估过程的测试。
系统测试:是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机的硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际的运行环境下,对计算机系统进行全面的功能覆盖。
验收测试:是软件产品交付用户正式使用前的最后一头工序,是以用户为主的测试。目的是向客户和承包人证明产品是可靠的。
黑盒测试:又称功能测试、数据驱动测试或基于规格说明书的测试。
白盒测试:又称结构测试、逻辑驱动测试或基于程序本身的测试。
白盒分为:静态代码走查,验证代码覆盖率,逻辑功能执行三类
冒烟测试:对应用程序关键的功能进行的测试。
回归测试:对某些已经进行过的测试的某些子集再重新进行一遍,已保证上述改变不会传播无法预料的副作用或引发的问题。
Alpha 测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。
Beta 测试:由软件的最终用户们在一个或多个客房场所进行。
手工测试:
由人来输入并执行用例,确认用例的执行结果和预期结果的差别
自动化测试:
自动化测试,是把以人为驱动的测试行为转化为机器执行的一种过程。
关于单元测试
1、单元测试多采用白盒测试技术
静态审查代码
动态单元测试
2、单元测试的意义
一个好的单元测试将会在产品开发的阶段发现大部分的缺陷,并且修改它们的成本也很低。
在软件开发的后期阶段,缺陷的发现并修改将会变得更加困难,并要消耗大量的时间和开发费用
无论什么时候做出修改都要进行回归测试
经过单元测试的系统,系统集成过程将会大大地简化
3、桩模块(Stub)和驱动模块(Driver)
桩模块:集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。
驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块。
需求->测试计划->测试用例设计->测试环境搭建->发现bug缺陷->开发修复bug->测试验证bug->总结报告
白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。