一、按是否查看程序内部结构划分:
(1)黑盒测试(black-box testing):只关心输入和输出的结果(主要测试软件的功能和需求说明是否相符)—— 黑盒测试一般用于功能测试,不可视化。像用户同样看待产品就行了。优缺点:不考虑内部的实现;更贴近用户的角度。覆盖率较低;复用率较低;维护成本较高。
关注:是否有不正确或遗漏的功能?输入和输出是否知足预期要求;是否有数据结构错误或外部信息访问错误;性能上是否知足要求?
(2)白盒测试(white-box testing):去研究软件里面的源代码和程序结构(主要是测试代码的)—— 白盒测试一般用于单元测试,可视化
缺点:1昂贵 2没法坚持代码中遗漏的路径和数据敏感性错误 3不能直接验证需求的正确性。优势:检测内部代码的实现;更容易检测代码内部的逻辑。
(3)灰盒测试(gray-box testing):介于黑白盒二者之间的一种测试,在白盒测试交叉使用黑盒测试方法,在黑盒测试交叉使用白盒测试方法—— 灰盒测试一般用于网页测试
总结:测试是从用户需求的角度去对软件质量进行检测,具体使用黑盒,白盒,灰盒,不须要明确的区分,应该多角度去设计测试用例,
多角度测试软件,找出bug,才是一个测试工程师具有的思想。在测试过程当中,涉及软件的功能测试,建议先考虑使用黑盒测试,而后统计相应的覆盖率,涉及到软件的性能测试,
再设计黑盒测试加上适当的白盒测试用例做为补充来测试软件的性能,以保证软件测试的完整性。
二、按照是否使用自动化测试工具划分:
(1)手工测试(手工测试(Manual Testing)就是由人去一个一个的输入用例,而后观察结果和机器测试相对应属于比较原始可是必须的一个步骤。
(补充:手工测试只是功能测试的一种方式。两者的区别主要是划分规则的不一样手工测试是根据是否使用自动化测试
工具划分的而功能测试是根据质量模型的六大特征划分的。)
它是依靠人来查找缺陷。通常采用黑盒测试方法(等价类划法,边界值划分法,决策表法、错误推测法,因果图法,场景法、正式试验法)
(2)自动化测试(自动化测试(Automated Testing)是把以人为驱动的测试行为转化为机器执行的一种过程,强调使用第三方工具。
一般在设计了测试用例并经过评审以后由测试人员根据测试用例中描述的规程一步步执行测试获得实际结果和指望结果的比较,
在此过程当中,为了节省人力、时间或者硬件资源,提升测试效率从而引进了自动化测试的概念)注意:通常用于接口测试,UI测试、性能测试等
三、按是否运行程序划分:
(1)静态测试(结构分析)(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。
静态测试包括:互审(技术评审)-走查(桌面走查,代码走查,代码审查)-静态分析
a 对于代码测试,主要是测试代码是否符合相应的标准和规范。
b 对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
c 对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。
(2)动态测试(结构化测试)(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程
四、按阶段划分:
(1)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。即由测试人员设计测试用例,开发人员编写测试代码,测试人员执行测试用例。
桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。
(2)集成测试(integration testing),是单元测试的下一阶段,是指将经过测试的单元模块组装成系统或子系统,再进行测试,重点测试不一样模块的接口。
集成测试就是用来检查各个单元模块结合到一块儿可否协同配合,正常运行。测试对象是已经进行过单元测试的各个模块组合起来测试
(3)确认测试(integration testing),是集成测试的下一阶段,是指已经按照设计把全部的模块组装成一个完整的软件系统,接口错误也已经基本排除了,
接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。
(4)系统测试(system testing),指的是将整个软件系统看作一个总体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。【业务角度】
将系统或程序与初始目标进行比较。
系统测试的主要依据是《系统需求规格说明书》文档。
(5)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。也称交付测试。
(β测试,也叫Beta测试。是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者一般不在测试现场,Beta测试不能由程序员或测试员完成。
a测试,又叫Alpha测试。是由一个用户在开发环境下进行的测试,也能够是公司内部的用户在模拟实际操做环境下进行的受控测试,Alpha测试不能由该系统的程序员或测试员完成。)
细分:用户验收测试【包含Beta和Alpha测试,用户角度】、运行验收测试【运维角度】、合同和规范验收测试
五、按测试策略划分:这几种测试出如今软件测试的周期中,既不算具体明确的测试阶段,也不是具体的测试方法
【1】回归测试 是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。重心在关键模块和重点功能组件上。
【2】冒烟测试 是指在对一个新版本进行大规模的测试以前,先验证一下软件的基本功能是否实现,是否具有可测性。
【3】随机测试 是指测试中的全部输入数据都是随机生成的,其目的是模拟用户的真实操做,并发现 一些边缘性的错误。
【4】探索式测试 是一种测试思惟技术,强调主观能动性,抛开用例和测试方法。
【5】安全测试 是在产品开发基本完成至发布阶段,对产品进行检验。
六、按实施组织划分:
开发商测试:软件开发,软件测试,产品销售都属于同一个公司
外包测试:把一套成套的产品交给专业的组织进行测试。服务模式:现场测试;安全离岸外包;设立联合研发中心。
七、按测试范围划分:
本地化测试:特定目标区域设置,重点测试 基本功能测试,安装/卸载测试,当地区域的软硬件兼容测试
全球化测试:保证软件在全世界不一样地域都能正常运行
国际化测试:修改代码支持多语言
多语言测试:测试软件在不一样语言系统下GUI显示的正确性
8、常见的测试方法:
功能测试 界面测试
性能测试 配置测试
压力测试 文档测试
负载测试 兼容性测试
易用性测试 安全性测试
安装测试 恢复测试
白盒测试经常使用工具备:logiscope、Jtest、Junit。html
什么是软件测试?程序员
使用人工或自动的手段来运行或测量软件系统的过程【测试手段能够是人工或自动】,
以检验软件系统是否知足规定的要求,并找出与预期结果之间的差别。
软件测试的目的?
加强对质量的信心——发现bug——为决策者提供信息——预防bug
软件测试所遵循的原则?
1测试由第三方来构造
2穷尽测试是不可能的,应设定及时终止的条件
3测试应该尽早进行
4缺陷具有群集特性
5测试的杀虫剂悖论
6测试应追溯需求
7必须肯定预期结果
8必须完全检查每一个测试结果
9其余值得注意的规律和经验
正确认识软件测试的4个方面:数据库
一、软件质量不是靠软件测试出来的编程
二、软件测试并不开发容易安全
三、软件测试须要开发人员和测试人员共同努力网络
四、软件测试并非一个阶段,须要贯穿于整个软件开发阶段数据结构
软件测试工程师必备技能:并发
一、测试专业技能运维
二、软件编程技能工具
三、网络、数据库、操做系统、中间件等知识
软件测试工程师必备素质:
一、正确高效的沟通能力
二、超强的责任心
三、耐心、细心、信心
四、要坚持原则
五、团队合做精神