软件测试各种分类
软件测试按照所做⼯作的不同,可以分为很多的⽅⾯,下⾯我们⼀起来看⼀下,⼀些常见的分类,如下图:
下⾯,我们就上⾯的分类进⾏详细的学习吧!
⼀、按开发阶段划分
1.单元测试(Unit Testing)
单元测试,⼜称模块测试。对软件的组成单位进⾏测试,其⽬的是检验软件基本组成单位的正确性。测试的对象的是软件你测试的最⼩单位:模块。
测试阶段:编码后或者编码前
测试对象:模块
测试⼈员:⽩盒测试⼯程师或开发⼈员
测试依据:代码和注释+详细⽂档
测试⽅法:⽩盒测试
测试内容:模块接⼝测试、局部数据测试、路径测试、错误处理测试、边界测试
补充说明:
(1)学习测试依据时,我们可以对⽐软件测试的“V”模型结合记忆
(2)⽩盒测试不是单元测试,单元测试是⽩盒测试相互保怎么退出?
(3)测试驱动开发:测试⼈员先编写测试⽤例,开发⼈员根据测试⽤例写程序
2.集成测试(Integration Testing)
集成测试也称联合测试(联调)、组装测试:将程序模块采⽤适当的集成策略组装起来,对系统的接⼝及集成后的功能进⾏正确性检测的测试⼯作。集成主要⽬的是检查软件单位之间的接⼝是否正确。
测试阶段:⼀般是单元测试之后
测试对象:模块间的接⼝
测试⼈员:⽩盒测试⼯程师或开发⼯程师
测试依据:单元测试的⽂档+概要设计⽂档
测试⽅法:⿊盒测试与⽩盒测试(灰盒测试)
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能的正确性、全局数据结构、单模块缺陷对系统的影响
补充说明:
单元测试是⼀个模块内部的测试,集成测试是在模块之间进⾏测试(⾄少两个)
3.系统测试(System Testing)
系统测试:将软件系统看成是⼀个系统的测试。包括对功能、性能以及软件所运⾏的软硬件环境进⾏测试。时间⼤部分在系统测试执⾏阶段,包括回归测试和冒烟测试。
测试阶段:集成测试阶段之后
测试对象:整个系统(软件、硬件)
测试⼈员:⿊盒测试⼯程师
测试依据:需求规格说明⽂档
测试⽅法:⿊盒测试
于湉富二代
测试内容:功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等
补充说明:
(1)系统测试是从完整的⾓度,⼴⾯去看待问题,不再看模块
(2)虽然系统测试包括冒烟测试和回归测试,但三者之间是有严格的先后顺序的,即:先冒烟、再系统、后回归。
(1)回归测试(Regression Testing):指修改了旧的代码之后,重新进⾏测试以确认修改没有引⼊新的错误或导致其他代码产⽣错误。(⾃动回归测试将⼤幅度降低系统测试、维护升级等阶段的成本)。
在整个软件测试过程中占有很⼤的⼯作⽐重,软件开发的各个阶段都会进⾏多次回归测试。随着系统的庞⼤,回归测试的成本越来越⼤,通过正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
(2)冒烟测试(smoke testing):该术语来⾃硬件,指对⼀个硬件或⼀组硬件进⾏更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试,也可以理解为该种测试耗时短,仅⽤⼀袋烟的功夫就⾜够了。
冒烟测试的对象是每⼀个新编译的需要正式测试的软件版本,⽬的是确认软件基本功能正常,可以进⾏后续正式的测试⼯作。
冒烟测试的执⾏者是版本编译⼈。
冒烟测试⼀般在开发⼈员开发完毕后送给测试⼈员来进⾏测试时,测试⼈员会先进⾏冒烟测试,保证基本功能正常,不阻碍后续测试。
4.验收测试(Acceptance Testing)
验收测试(交付测试):是部署软件之前的最后⼀个测试操作。它是技术测试的最后⼀个阶段,也称为交付测试。验收测试的⽬的是确保软件准备就绪,按照项⽬合同、任务书、双⽅约定的验收依据⽂档,向软件购买都展⽰该软件系统满⾜原始需求。
测试阶段:系统测试通过后
测试对象:整个系统(包括软硬件)
测试⼈员:主要是最终⽤户或者需求⽅
测试依据:⽤户需求、验收标准
测试⽅法:⿊盒测试
测试内容:同系统测试(功能、各类⽂档⽂档等)
下⾯,我们以⼿机为例,举个例⼦:
针对买回来的新⼿机以及它的美颜功能来进⾏测试。
(1)当买回来的⼿机,它的美颜功能有问题时,我们只针对美颜功能的代码进⾏测试,就是单元测试。
(2)对于新买回来的⼿机,检测⼿机通讯录是否可以增添、删除、更改⼿机号码,打电话时需要⼿动的输⼊电话,也可以在⼿机中查,这就是集成测试。
(3)新⼿机都会有⼀个合格标签,原因是出⼚前⼿机⼚商会对某⼀个型号的⼿机功能全部测试⼀遍,包括⼿机硬件本⾝,⼿机⾃带的APP 等,这个叫系统测试。
(4)当修好新买回来的⼿机的美颜功能以后,⽤户除了会查看美颜功能是否完好,还会查看其他功能是否也完好,这个叫回归测试。(5)对于新买回来的⼿机,我们做的第⼀件事是将常⽤的⼿机功能试⼀遍,第⼆件事情就是讲所有功能都试⼀遍,这个叫冒烟测试。(6)对于新买回来的⼿机,⼀般都有7天包退,30天包换,我们⼀般都是在7天内把⼿机的所有功能都试⼀遍,这叫验收测试。
⼆、按是否查看代码划分
1.⿊盒测试(Black-box Testing)
⿊盒测试也是功能测试,测试中把被测的软件当成⼀个⿊盒⼦,不关⼼盒⼦的内部结构是什么,只关⼼软件的输⼊数据和输出数据。
2.⽩盒测试(White-box Testing)
⽩盒测试⼜称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。⽩盒测试是指打开盒⼦,去研究⾥⾯的源代码和程序结果。
⽩盒测试也是接⼝测试的⼀种。
3.灰盒测试(Gray-Box Testing)
灰盒测试是介于⽩盒测试和⿊盒测试之间的⼀种,灰盒测试多⽤于集成测试阶段,不仅关注输⼊、输出的正确性,同时也关注程序内部的情况。
灰盒测试:功能+接⼝
三、按是否运⾏划分
1.静态测试(Static testing)
静态⽅法是指不运⾏被测程序本⾝,仅通过分析或检查源程序的语法、结构、过程、接⼝等来检查程序的正确性,对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执⾏来错。分析如下:
检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;⾛查、审查与技术复审⼿册。
静态质量:度量所依据的标准是ISO9126。在该标准中,软件的质量⽤以下⼏个⽅⾯来衡量,即功能性(Functionality)、可靠(Reliability)、可⽤性(Usability)、有效性(Efficiency)、可维护性(Maintainability)、可移植性(Portability)。
静态测试:代码静态分析和⽂档测试都属于静态测试。
候旭2.动态测试(Dynamic testing)
动态测试是指通过运⾏被测程序,检查运⾏结果与预期结果的差异,并分析运⾏效率、正确性、健壮性、等性能。
(1)动态测试有三部分组成:构造测试⽤例、执⾏程序、分析程序的输出结果。
(2)⼤多数软件测试都属于动态测试。
四、按测试对象划分
1.性能测试
检查系统是否满⾜需求规格说明书中规定的性能。
六级听力分值题型分值通常表现在以下⼏个⽅⾯:
对资源利⽤(如内存、处理机周期等)进⾏的精确度量
对执⾏间隔
⽇志事件(如中断,报错)
响应时间
吞吐量(TPS)
辅助存储区(例如缓冲区、⼯作区的⼤⼩等)
处理精度等进⾏的监测
2.安全测试
安全测试是⼀个相对独⽴的领域,需要更多的专业知识。如:WEB的安全测试、需要熟悉各种⽹络协议、防⽕墙、CDN、熟悉各种操作系统的漏洞、熟悉路由器等。
安全测试这个领域感觉也是很有意思的,希望以后有机会学习学习!!!
叶璇陈紫函
3.兼容性测试
兼容性测试主要是指,软件之间能否很好的运作,会不会有影响、软件和硬件之间能否发挥很好的效率⼯作,会不会影响导致系统的崩溃。
平台测试
浏览器测试
软件本⾝能否向前或向后兼容
测试软件能否与其它相关软件兼容
数据兼容性测试
最常见的兼容性测试就是浏览器的兼容性测试,不同浏览器在css,js解析上的不同会导致页⾯显⽰不同。
常见的IE8的兼容性。
4.⽂档测试
写清明节的作文300字三年级
国家有关计算机软件产品开发⽂件编制指南中共有14种⽂件,可分为3⼤类。
开发⽂件:可⾏性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗。⽤户⽂件:⽤户⼿册、操作⼿册,⽤户⽂档的作⽤:改善易安装性;改善软件的易学性与易⽤性;改善软件可靠性;降低技术⽀持成本。
管理⽂件:项⽬开发计划、测试计划、测试分析报告、开发进度⽉报、项⽬开发总结报告。
在实际的测试中,最常见的就是⽤户⽂件的测试,例如:⼿册说明书等。
⽂档测试关注的点:
⽂档的术语
⽂档的正确性
⽂档的完整性
⽂档的⼀致性
⽂档的易⽤性
5.易⽤性测试(⽤户体验测试)
易⽤性(Useability)是交互的适应性、功能性和有效性的集中体现。⼜叫⽤户体验测试。
6.业务测试
业务测试是指:测试⼈员将系统的整个模块串接起来运⾏、模拟真实⽤户实际的⼯作流程。满⾜⽤户需求定义的功能来进⾏测试的过程。
7.界⾯测试
界⾯测试(简称UI测试),测试⽤户界⾯的功能模块的布局是否合理、整体风格是否⼀致、各个控件的放置位置是否符合客户使⽤习惯,此外还要测试界⾯操作便捷性、导航简单易懂性,页⾯元素的可⽤性,界⾯中⽂字是否正确,命名是否统⼀,页⾯是否美观,⽂字、图⽚组合是否完美等。
8.安装测试
安装测试是指:测试程序的安装、卸载。最典型的就是APP的安装、卸载。
9.内存泄漏测试
内存泄漏的检测: 1、对于不同的程序可以使⽤不同的⽅法来进⾏内存泄露的检查,还可以使⽤⼀些专门的⼯具来进⾏内存问题的检查,例如MemProof. AQTime、Purify、BundsChecker等。 有些开发⼯具本⾝就带有内存问题检查机制.要确保程序员在编写程序和编译程序的时候打开这些功能。
2、通过代码扫描分析⼯具来检查
五、按测试实施的组织
1.α测试(Alpha Testing)
α测试是由⼀个⽤户在开发环境下进⾏的测试,也可以是公司内部的⽤户在模拟实际操作环境下进⾏的测试。
α测试的⽬的是评价软件产品的FLURPS(即功能、局域化、可使⽤性、可靠性、性能和⽀持)。
2.β测试(Beta Testing)
Beta测试是⼀种验收测试。Beta测试由软件的最终⽤户们在⼀个或多个客房场所进⾏。
α测试与Beta测试的区别:
(1)测试的场所不同:Alpha测试是指把⽤户请到开发⽅的场所来测试,beta测试是指在⼀个或多个⽤户的场所进⾏的测试。
(2)Alpha测试的环境是受开发⽅控制的,⽤户的数量相对⽐较少,时间⽐较集中。beta测试的环境是不受开发⽅控制的,⽤户数量相对⽐较多,时间不集中。
(3)alpha测试先于beta测试执⾏。通⽤的软件产品需要较⼤规模的beta测试,测试周期⽐较长。
3.第三⽅测试
介于开发⽅和⽤户⽅之间的组织测试。
六、按是否⼿⼯执⾏划分
1.⼿⼯测试(Manual testing)
⼿⼯测试是由⼈⼀个⼀个的输⼊⽤例,然后观察结果,和机器测试相对应,属于⽐较原始但是必须的⼀种。
优点:⾃动化测试⽆法代替探索性测试、发散思维类⽆既定结果的测试。
缺点:执⾏效率慢,量⼤易错。
2.⾃动化测试(Automation Testing)
所谓⾃动化测试,就是在预设条件下运⾏系统或应⽤程序,评估运⾏结果。(预先条件包括:正常条件和异常条件)。简单来说,⾃动化测试就是是把⼈为驱动的测试⾏为,转化为机器执⾏的⼀种过程。
⾃动化测试有:测试⾃动化、性能测试⾃动化、安全测试⾃动化。(⼀般情况下,我们说的⾃动化是指功能测试的⾃动化)
⾃动化测试按照测试对象来分,还可以分为接⼝测试、UI测试等。接⼝测试的ROI(产出投⼊⽐)要⽐UI测试⾼。
⾃动化实施的步骤:
(1)完成功能测试,版本基本稳定
(2)根据项⽬特性,选择适合项⽬的⾃动化⼯具,并搭建环境
(3)提取⼿⼯测试的测试⽤例转换为⾃动化测试的⽤例
(4)通过⼯具、代码实现⾃动化的构造输⼊、⾃动检测输出结果是否符合预期
(5)⽣成⾃动测试报告
(6)持续改进、脚本优化
七、按测试地域划分
1.国际化测试
软件的国际化和软件的本地化是开发⾯向全球不同地区⽤户使⽤的软件系统的两个过程。⽽本地化测试和国际化测试则是针对这类软件产品进⾏的测试。由于软件的全球化普及,还有软件外包⾏业的兴起,软件的本地化和国际化测试俨然成为了⼀个独特的测试专门领域。
本地化和国际化测试与其他类型的测试存在很多不同之处。下⾯是本地化和国际化测试 的⼀些要点。
1、本地化后的软件在外观上与原来版本是否存在很⼤的差异,外观是否墼齐、不⾛样。
2、是否对所有界⾯元素都进⾏了本地化处理,包括对话框、菜单、⼯具栏、状态栏、提⽰信息(包括声⾳的提⽰)、⽇志等。
3、在不同的屏幕分辨率下界⾯是否正常显⽰。
4、是否存在不同的字体⼤⼩,字体设置是否恰当。
5、⽇期、数字格式、货币等是否能适应不同国家的⽂化习俗。例如,中⽂是年⽉⽇,⽽英⽂是⽉⽇年。
6、排序的⽅式是否考虑了不同语⾔的特点。例如,中⽂按照第⼀个字的汉语拼⾳顺序排序,⽽英⽂按照⾸字母排序。
7、在不同的国家采⽤不同的度量单位,软件是否能⾃适应和转换。
8、软件是否能在不同类型的硬件上正常运⾏,特别是在当地市场上销售的流⾏硬件上。
9、软件是否能在Windows或者其他操作系统的当地版本上正常运⾏。
10、联机帮助和⽂档是否已经翻译,翻译后的链接是否正常。正⽂翻译是否正确、恰当, 是否有语法错误。
软件本地化和国际化测试是⼀个综合了翻译⾏业和软件测试⾏业的测试类型。它要求测 试⼈员具备⼀定的翻译能⼒、语⾔⽂化,同时具备测试⼈员的基本技能。