总结知乎答主和虫师博客的观点:
根据项目流程阶段划分测试
单元测试:单元测试是对软件中的基本组成单位进行的测试。目的是检验软件基本组成单位的正确性。
集成测试:集成测试是在软件系统集成过程中所进行的测试。目的是检查软件单位之间的接口是否正确。
系统测试:系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。
验收测试:验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,向软件购买都展示该软件系统满足其用户的需求。
根据我们看待所测试对象时的位置或者说设计测试时的思路
黑盒测试:黑盒测试,指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
白盒测试:白盒测试,指的是把盒子盖子打开,去研究里面的源代码和程序结果。它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作
灰盒测试:灰盒测试介于黑盒测试与白盒测试之间。可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
根据所测试对象的不同面或者说不同的属性,或者说是被测对象在不同维度所表现出来的不同行为,也可以简称为测试类型。
功能测试:
功能测试检查实际的功能是否符合用户的需求。测试的大部分工作也是围绕软件的功能进行,设计软件的目的也就是满足客户对其功能的需求。如果偏离的这个目的任何测试工作都是没有意义的。
功能测试又可可以细分为很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。
性能测试:
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
软件的性能包括很多方面,主要有时间性能和空间性能两种。
时间性能:主要是指软件的一个具体的响应时间。比如一个登录所需要的时间,一个交易所需要的时间等。当然,抛开具体的测试环境,来分析一次事务的响应时间是没有任何意义的。需要搭建一个具体且独立的测试环境。
空间性能:主要指软件运行时所消耗的系统资源,比如硬件资源,CPU、内存,网络带宽消耗等。
性能测试分类之我见:http://www.cnblogs.com/fnng/archive/2012/06/09/2543274.html
不算具体明确的测试阶段,是各个阶段的测试技术,也即是说我们在计划一个项目时,按照时间顺序以及自身测试水平和能力所需要的中间过程,并非是必须的,也会因为不同的测试开展方式而有极大的不同。例如,在敏捷方式下开展测试,就没有单独的回归测试阶段,可以认为是无时无刻不在进行回归。
冒烟测试:
是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
引入到软件测试中,就是指测试小组在正规测试一个新版本之前,先投入较少的人力和时间验证一个软件 的主要功能,如果主要功能都没有实现,则打回开发组重新开发。这样做的好处是可以节省大量的时间成本和人力成本。
回归测试:
回归测试是指修改了旧代码后,重新时行测试以确认修改后没有引入新的错误或导致其他代码产生错误。
回归测试一般是在进行软件的第二轮测试开始的,验证第一轮中发现的问题是否得到修复。当然,回归也是一个循环的过程,如果回归的问题通不过,则需要开发人员修改后再次进行回归,直到通过为止。
随机测试:
是指测试中的所有输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
随机测试可以发现一些隐蔽的错误,但是也有很多缺点,比如测试不系统,无法统计代码覆盖率和需求覆盖率,发现的问题难以重现。一般是放在测试的最后执行。其实随机测试更专业的升级版叫 探索性测试
探索性测试:
探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
探索性测试应该是未来测试领域的一个方向。
安全测试:
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。
安全测试也在越来越受到企业的关注和重视,因为由于安全性问题造成的后果是不可估量的。尤其对于互联网产品最容易遭受各种安全攻击。
作者:宣spring
链接:https://www.zhihu.com/question/24345678/answer/27547581
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
任何主张都受限于其所处时代。也即是说,也许在当时很适用、很正确的观念和做法,放到如今的时代背景中来看待,却显得不合理、不正确了,但这并不代表这些观念和做法本身有问题,只是它们已经不再适合。1. 设计测试时的思路问题白盒、黑盒:是指我们看待所测试对象时的位置,是以“身处其中”(白盒)也即可以知晓其内部运作机制的角度看待并设计和执行测试用例,还是以“置身事外”(黑盒)也即只知道外面可以看见的情况完全不知道内部情况如何的方式看待并设计和执行测试用例。在往年那个生产力匮乏、工具也欠缺的年代,这种说法还很有启发作用,毕竟要去观察和跟踪系统内部运行状态并不那么容易,但在如今这个时代,哪还有什么白盒、黑盒之分?难道你在白盒测试编程语言本身的时候,会深入到编译器内部去观察语言执行情况?或者是检查硬件的数字或脉冲信号?2. 跟被测对象强相关的测多大东西、测哪个方面的问题单元测试、系统测试等:是我们所选定的测试对象的范围或规模的不同,单元测试就是关注一个类、一个函数这个级别的表现的测试,系统测试则是关注系统整体的行为。每个公司可能都会有自己的一些测试范围的名词,例如模块测试之类的。功能、压力、性能等:是我们所测试对象的不同面或者说不同的属性,或者说是被测对象在不同维度所表现出来的不同行为,也可以简称为测试类型。就好像一个人,会不会洗碗(功能)?能够连续洗碗4个小时吗(压力)?最快能够在10分钟内洗几个碗(性能)?3. 跟整体研发方式强相关的测试时间点问题集成测试、回归测试等:其实是测试的阶段,也即是说我们在计划一个项目时,按照时间顺序以及自身测试水平和能力所需要的中间过程,并非是必须的,也会因为不同的测试开展方式而有极大的不同。例如,在敏捷方式下开展测试,就没有单独的集成测试和回归测试阶段,可以认为是无时无刻不再进行集成和回归。又例如,在传统方式(例如瀑布)下,由于需求分析和测试用例设计进行方式的原因,集成和回归则会被看作是一种测试类型,以覆盖其他测试类型没有覆盖的部分。4. 跟整体测试活动相关的生产力问题测试工具:测试工具这个词本身是很泛(也即很广义)的,简单来讲,就是测试工作中用到的任何工具都可以称之为测试工具。而测试工作又包含了很多活动,例如分析需求、拟订测试计划、设计测试用例、执行测试用例、编写测试报告、提交缺陷等等,这也意味着会有很多种不同用途的测试工具,甚至,可能还有不同厂商打包不同用途的(狭义)测试工具而提供的测试工具包(也被称为测试工具)……如果你们的需求文档是用Word编写的,那么你可以认为Word是你们的一种需求工具。如果你们用DOORS或其他工具保存,那你可以认为DOORS是你们的需求管理工具。如果你们用了Lotus Notes或者QC等来管理你们的测试计划和测试用例,那么你可以认为它们是测试管理工具。如果你使用了Jira或Bugzilla等来管理你们的缺陷,那么你可以认为它们是你们的缺陷追踪系统。如果你们用了Redmine、VersionOne等敏捷项目管理工具来管理你们的测试工作任务,那么你可以认为它们也是你们的项目管理工具。如果你们使用了Robotframework、Watir、Robotium、LoadRunner等各种工具来编写自动化测试用例和执行,那么你可以认为它们就是你们的测试自动化工具。
作者:徐毅
链接:https://www.zhihu.com/question/24345678/answer/27486022
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
http://www.cnblogs.com/fnng/archive/2012/10/24/2737972.html
首先要明确,测试是整个软件过程的一部分,当你从软件过程来看测试,就知道为什么测试会有那么多种类了。比如大型软件开发中经常用到的持续集成过程,软件被分成多个增量过程,代码开发者不停的将自己的开发代码checkin到代码树,为了保障质量差的代码不被引入到代码树,就需要代码review和单元测试。当多个模块由底向上集成的时候,为了保证集成后的集合质量,就有了集成测试。等整个系统完成了,就需要做各种系统测试,验收测试。根据各种测试的特性,有些测试适合用白盒的方法设计,这些测试就都叫做白盒测试,比如一般的单元测试;有些测试适合用黑盒的方法设计,就有了黑盒测试,比如系统测试。而自动化测试则是为了缓解测试覆盖和测试成本之间的矛盾,移除回归测试中的重复僵化的部分而来的。总之,想要想清楚在什么时候需要什么测试,就必须要用一种工程的眼光来看待软件过程。