目录
一、按照是否查看代码划分
1、黑盒测试
不关心代码内部的逻辑结构,不去查看代码,只关心软件的功能外部的输入和输出是否满足用户的需求,相当于把软件内部的实现屏蔽掉了。
黑盒测试的优点是
不去关心软件内部的实现,不用去看代码
站在用户的角度去设计测试用例,容易培养产品思维
设计测试用例是根据软件需求来设计的,不容易遗漏需求
黑盒测试的方法:等价类、边界值、场景法、因果图、错误猜测法、正交法
2、白盒测试
查看代码是否规范,风格是否和公司设计一致,分析代码的逻辑结构,对代码进行测试,看代码是否实现了需求
可以用单元测试来进行白盒测试
白盒测试测试方法:语句覆盖、路径覆盖、逻辑覆盖、判定覆盖、条件覆盖、判定组合覆盖、判定和组合覆盖、条件和条件组合
路径覆盖:if else switch case try catch finally
循环覆盖:for while
等价类和边界值有时候会用到白盒测试中
3、灰盒测试
既关心软件功能的输入和输出,也关心软件内部程序的实现。
二、按照开发阶段划分
测试金字塔
金字塔共分为3层,从上到下第一层为界面,它是直接和用户进行交互的
第二层是业务层,它是一个功能模块的集成,同时做接口测试
第三层是单元测试,即代码层的测试
测试金字塔的特点为
越往底层走,测试效率越高
越往底层走,定位问题越容易
越往底层走,测试独立性越高,耦合性变低
按照开发阶段划分共分为四个阶段
1、单元测试阶段
对软件组成的最小的单元进行测试,查看测试单元的功能是否正常
测试阶段:测试前(TDD,Test-Dirven-Development),测试后
测试方法:白盒测试
测试人员:白盒测试工程师,开发人员
测试依据:详细设计文档
测试内容:接口测试,局部数据结构测试(局部变量测试),路径测试,边界测试(for,while),循环测试 ,错误处理测试(try,catch,finally)
2、集成测试
按照一定的逻辑和策略把单元模块组合在一起,形成一个具有完整功能的大模块
测试阶段:单元测试之后
测试方法:灰盒测试
测试人员:黑盒测试工程师/白盒测试工程师
测试依据:概要设计文档
测试内容:模块功能的正确性,组成模块的单元之间的接口测试,全局数据结构测试,单个模块的功能缺陷对整个模块的影响
3、测试系统
对软件系统进行全面的功能和非功能测试
测试阶段:集成测试之后
测试对象:整个软件系统
测试方法:黑盒测试
测试人员:黑盒测试工程师
测试依据:需求设计文档
测试内容:系统的功能,界面,可靠性,容错性,易用性,可移植性,兼容性,安全性,性能,安装卸载(新软件)
回归测试
当系统引入了新代码(增加新功能的时候或者修改BUG的时候)的时候,测试人员往往需要验证新代码对旧的功能产生的影响,所做的测试就叫做回归测试
一般情况下回归测试的测试量很大,所以会把手工测试写为自动化测试
冒烟测试
在软件开发完成后,要对软件的基础功能和核心流程进行测试,测试通过后,才可以进入正式测试环境,如果测试不通过,测试人员有权利打回,让开发人员重新修改,直到冒烟成功
冒烟测试是测试或者开发人员进行的
冒烟测试是一个准入原则,如果冒烟测试都没有通过,其它的测试就没必要了。
4、验收测试
软件在上线前最后一次测试,所以也称之为交付测试
测试阶段:系统测试之后
测试对象:整个软件系统
测试依据:用户需求
测试人员:用户
测试方法:黑盒测试
测试内容:和系统测试一样,除了这个还要进行文档测试,如可用性分析文档,需求设计文档,软件设计文档,软件开发文档等等
三、按照实施组织划分
1、α测试
在β测试之前进行,是把用户或者非测试和开发的人员请到开发现场进行的测试
测试环境:开发现场
测试人员:用户或者非测试和开发的人
2、β测试
让实际用户在实际使用环境中进行测试,测试完成后对问题进行统一汇总反馈
α测试与β测试的区别
测试环境不同;测试时间集中程度不同;α测试优先于β测试
3、第三方测试
是软件第三方测评机构,按照软件行业的标准规范对软件进行测试
四、按照代码是否运行划分
1、静态测试
不运行代码,仅检查代码的风格,看格式是否符合公司的规范标准,检查代码的逻辑结构是否满足需求要实现的功能。
主要看功能性、性能、兼容性、易用性、可靠性、安全、可维护性、可移植性
2、动态测试
运行代码,给程序响应的输入,看是否得到期望的输出
五、按照是否手工划分
1、手工测试
按照测试用例,手工去测试系统的功能
缺点:量大容易出错,效率低,有些极端情况无法测试到
优点:可以进行探索性测试,比较灵活
2、自动化测试
机器按照人为设定好的预设条件去运行,这些预设好的条件包括正常的和异常的,去检查软件系统有没有符合设定的条件
自动化测试把手工测试用例转化成脚本运行
这里要记住一点,不是所有的项目都适合自动化
六、按照地域划分
首先需要了解软件国际化,即进行软件设计和开发的时候,使用一种工程技术,使得软件在转化为不同的国家语言的时候,可以不用修改源码,适应不同的语言,不同国家人民的风俗习惯等
1、软件国际化测试
外观上看界面功能有没有缺失,能不能正常使用
是否适应这个国家人的使用习惯,文字,日期,风俗习惯
度量单位,货币,重量单位
不同的分辨率下,软件的正常展示和使用
不同的硬件设备
2、软件本地化测试
这个就是具体到某一个国家