常见的⼆⼗种软件测试⽅法详解(史上最全)
⼀.单元测试(模块测试)
单元测试是对软件组成单元进⾏测试。其⽬的是检验软件组成单位的正确性。测试对象是:模块。
对模块进⾏测试,单独的⼀个模块测试,属于静态测试的⼀类
测试阶段:编码后或者编码前(TDD)
测试对象:最⼩模块
测试⼈员:⽩盒测试⼯程师或开发⼯程师(测源码)
测试依据:代码和注释+详细设计⽂档
测试⽅法:⽩盒测试(因为要测源码)
测试内容:模块接⼝测试(测试模块⾥⾯的参数传递是否正确)、局部数据结构测试(测试变量的作⽤域范围)、路径测试(if-else 判断必须覆盖所有分⽀)、错误处理测试、边界测试( for 循环)
⼆.集成测试
集成测试也称联合测试,将程序模块采⽤适当的集成策略组装起来,对系统的接⼝(⽩盒测试)以及集成后的功能(⿊盒测试进⾏正确性检测的⼀种测试。集成主要⽬的是检查软件单位之间的接⼝是否正确。
测试阶段:⼀般单元测试之后进⾏
测试对象:模块间的接⼝
测试⼈员:⽩盒测试⼯程师或开发⼯程师
测试依据:单元测试的模块+概要设计⽂档
测试⽅法:⿊盒测试与⽩盒测试相结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
三.系统测试
将软件系统看成是⼀个系统的测试。包括对功能、性能以及软件所运⾏的软硬件环境进⾏测试。时间⼤部分在系统测试执⾏阶段,包括回归测试和冒烟测试。
测试阶段:集成测试通过之后
测试对象:整个系统(软、硬件)
测试⼈员:⿊盒测试⼯程师(对功能测试)
测试依据:需求规格说明⽂档
测试⽅法:⿊盒测试
测试内容:功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等
回归测试(Regression Testing)
四.回归测试
回归测试是指修改了旧代码后,重新进⾏测试以确认修改没有引⼊新的错误或导致其他代码产⽣错误。
有了代码修改后就进⾏回归测试,根据测试阶段确定回归范围。
在整个软件测试过程中占有很⼤的⼯作量⽐重,软件开发的各个阶段都会进⾏多次回归测试。随着系统的庞⼤,回归测试的成本越来越⼤,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
五.冒烟测试
这⼀术语源⾃硬件⾏业。
对⼀个硬件或硬件组件进⾏更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。也可以理解为该种测试耗时短,仅⽤⼀袋烟功夫⾜够了。
冒烟测试的对象是每⼀个新编译的需要正式测试的软件版本,⽬的是确认软件基本功能正常,可以进⾏后续的正式测试⼯作。冒烟测试的执⾏者是版本编译⼈员。
概念:对核⼼主⼲流程进⾏测试,如果成功,就认为成功
作⽤:判断是否接受测试的标准,若核⼼主⼲都⾛不通,那么直接打下去
六.验收测试
买到新⼿机,⼀般会有7天包退,⼀个⽉包换,我们会尽量在7天内把⼿机的所有功能都试⼀遍。
验收测试是部署软件之前的最后⼀个测试操作。它是技术测试的最后⼀个阶段,也称为交付测试。验收测试的⽬的是确保软件准备就绪,按照项⽬合同、任务书、双⽅约定的验收依据⽂档,向软件购买都展⽰该软件系统满⾜原始需求。
测试阶段:系统测试通过之后
测试对象:整个系统(包括软硬件)。
测试⼈员:主要是最终⽤户或者需求⽅。
测试依据:⽤户需求、验收标准
测试⽅法:⿊盒测试(对功能进⾏测试)
测试内容:同系统测试(功能…各类⽂档等)
七.静态测试(不运⾏程序本⾝,测试⽂档)
静态测试是指不运⾏被测程序本⾝,仅通过分析或检查源程序的语法、结构、过程、接⼝等来检查程序的正确性。‘对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执⾏来错。
⼋.动态测试
动态测试⽅法是指通过运⾏被测程序,检查运⾏结果与预期结果的差异,并分析运⾏效率、正确性和健壮性等性能。⼤多数软件测试⼯作都属于动态测试。
软件测试app九.⼿⼯测试
就是由⼈去⼀个⼀个的输⼊测试⽤例,然后观察结果,和机器测试相对应,属于⽐较原始但是不可缺少的⼀个步骤。
总结优缺点:
(1)优点:⾃动化⽆法替代探索性测试、发散思维结果的测试。
(2)缺点:执⾏效率慢,量⼤易错。
⼗.⾃动化测试
就是在预设条件下运⾏系统或应⽤程序,评估运⾏结果,预先条件应包括正常条件和异常条件。
简单说⾃动化测试是把以⼈为驱动的测试⾏为转化为机器执⾏的⼀种过程。
⾃动化实施步骤:
1.完成功能测试,版本基本稳定
2.根据项⽬特性,选择适合项⽬的⾃动化⼯具,并搭建环境
3.提取⼿⼯测试的测试⽤例转化为⾃动化测试的⽤例
4.通过⼯具、代码实现⾃动化的构造输⼊,⾃动检测输出结果是否符合预期
5.⽣成⾃动测试报告
6.持续改进,脚本优化。
⼗⼀.业务测试
业务测试是测试⼈员把系统各个模块串接起来运⾏、模拟真实⽤户实际的⼯作流程,满⾜⽤户需求定义的功能来进⾏测试的过程。
例如查看邮件:
登录⽹站-输⼊⽤户名、密码登录-进⼊收件箱-查到邮件-点击打开-查阅-关闭邮件-退出邮箱-关闭⽹站
业务测试关注需求和⽤户
所有业务流程进⾏测试,包过主⼲流程,分⽀流程,甚⾄更⼩的流程
测不同的业务,必须对项⽬的需求特别了解
⼗⼆.界⾯测试
界⾯测试(简称UI测试),测试⽤户界⾯的功能模块的布局是否合理、整体风格是否⼀致、各个控件的放置位置是否符合客户使⽤习惯,此外还要测试界⾯操作便捷性、导航简单易懂性,页⾯元素的可⽤性,界⾯中⽂字是否正确,命名是否统⼀,页⾯是否美观,⽂字、图⽚组合是否完美等。
⼗三.⽂档测试
⼗四.兼容性测试
⼤家经常上⽹,同⼀⽹站在不同的浏览器上表现不⼀样
WEB测试 ;APP测试
兼容性主要是指软件之间能否很好的运做,会不会有影响、软件和硬件之间能否发挥很好的效率⼯作,会不会影响导致系统的崩溃。
平台测试
浏览器测试
软件本⾝能否向前或者向后兼容
测试软件能否与其它相关的软件兼容
数据兼容性测试
最常见的就是浏览器的兼容性测试,不同浏览器在css,js解析上的不同会导致页⾯的显⽰不同。
⼗五.易⽤性测试
易⽤性(Useability)是交互的适应性、功能性和有效性的集中体现。
⼿机拔打电话功能不放在⾸页,放在⼀个⽬录下边,点击三四次才可以到拔打电话功能,这个功能好⽤吗?
⼗六.性能测试
检查系统是否满⾜需求规格说明书中规定的性能。
通常表现在以下⼏个⽅⾯:
对资源利⽤(如内存、处理机周期等)进⾏的精确度量
对执⾏间隔
⽇志事件(如中断,报错)
响应时间
吞吐量(TPS)
辅助存储区(例如缓冲区、⼯作区的⼤⼩等)
处理精度等进⾏的监测
⼗七.易⽤性测试
易⽤性(Useability)是交互的适应性、功能性和有效性的集中体现。易⽤性属于⼈体⼯程学的范畴,⼈体⼯程学(ergonomics)是⼀门将⽇常使⽤的东西设计为易于使⽤和实⽤性强的学科。
⼿机拔打电话功能不放在⾸页,放在⼀个⽬录下边,点击三四次才可以到拔打电话功能,这个功能好⽤吗?
在某些⼤⼚会有专门的部门来进⾏易⽤性测试,⼜叫⽤户体验测试。
⼗⼋. 安装测试
测试程序的安装、卸载
典型的是app的安装、卸载
⼗九.安全测试
安全测试是⼀个相对独⽴的领域,需要更多的专业知识。例如web的安全测试,需要熟悉各种⽹络协议
TCP\HTTP,防⽕墙,CDN,熟悉各种操作系统的漏洞,熟悉路由器等。从软件来说,熟悉各种攻击⼿段,例如
SQL注⼊、Xss等。
作为web⼊门测试,可以IBM的appscan。
⼆⼗.内存泄漏测试
电脑打开的东西太多,机器反应慢甚⾄死机,重启之后就好了,过会同样的问题出现
很多软件系统都存在内存泄露的问题,尤其是缺乏⾃动垃圾回收机制的“⾮托管”语⾔ 编写的程序,例如C、CH、Delphi等。从⽤户使⽤的⾓度来看,内存泄露本⾝不会造成什 么危害,⼀般⽤户可能根本不会感觉到内存泄露的存在。但是内存泄露是会累积的,只要执 ⾏的次数⾜够多,最终会耗尽所有可⽤内存,使软件的执⾏越来越慢,最后停⽌响应。可以 把这种软件的问题⽐喻成软件的“慢性病”。
造成内存泄露的原因有很多,最常见的有以下⼏种。
1.分配完内存之后忘了回收。
2.程序写法有问题,造成没办法回收。
3.某些API函数的使⽤不正确,造成内存泄露。
4.没有及时释放。
内存泄漏的检测:
1、对于不同的程序可以使⽤不同的⽅法来进⾏内存泄露的检查,还可以使⽤⼀些专门的⼯具来进⾏内存问题的检查,例如MemProof. AQTime、Purify、BundsChecker等。 有些开发⼯具本⾝就带有内存问题检查机制.要确保程序员在编写程序和编译程序的时候打开这些功能。
2、通过代码扫描分析⼯具来检查
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论