个人站点地址:https://www.devtester.cn/
关于软件测试的定义
软件测试是指运用人工或自动手段来运行或测试某个系统的过程,目的在于检测是否满足规格需求,检验预期结果和实际结果的差别。
目的
在于验证软件是否有缺陷,而不是证明其无问题。
从低到高来讲,最基本的是找出软件中的错误;进一步,检验产品是否满足用户需求;最高一级,是能够从测试中发现提高用户体验的问题点。
#软件测试的分类
##按测试阶段分
有单元测试,集成测试,系统测试与验收测试。
单元测试
代码级测试,具体到类,函数等,通常由开发自测。
单元测试框架上,常见的有:
- C/C++: googletest
- java: junit,TestNg
- python:unittest, pytest
单元测试框架除了对开发有提高代码测试效率与代码质量的好处外,测试人员的接口自动化与UI自动化也需要借用单元测试框架来组织与管理测试脚本。
集成测试
在单元测试之后,将各单元进行组合,以测试接口的正确性,主要是接口数据传递与接口的健壮性,安全性。
通常由开发或测试进行,随着自动化测试的普及推广与测试前移,接口测试更多是由测试人员来完成。
接口测试有很多成熟的工具如Jmeter,postman(系列[狗头]),httpclient以及国内最近推广比较火的apifox等,另外,也可通过自研实现,如使用python requests库。
系统测试
根据软件需求规格说明说的要求对系统进行综合的测试,包括软硬件功能,性能等的测试。
验收测试UAT
此阶段发现缺陷不是主要目的,而应以软件规格说明书为依据,验证系统是否满足预期效果。
系统测试分为正式验收测试与非正式验收测试,非正式验收测试又分为alpha测试与beat测试。
- 正式验收测试:部分用户,根据测试流程对产品进行的详细的测试。
- Alpha测试:用户在模拟生产环境进行的测试,其目的是评价软件的功能,可用性,可靠性和性能等,对产品GUI与特点比较关注。可以在编码结束时开始或者主要模块测试完成以后开始。
- Beta测试:部分用户在生产环境进行测试,并需要用户报告异常并提出意见。
按测试技术分
白盒测试,灰盒测试与黑盒测试。
白盒测试
代码层级的测试,需要进行代码阅读与评审,掌握代码内部逻辑。
灰盒测试
介于黑盒与白盒之间,不了解内部代码详细逻辑,但相比黑盒更关注内部程序逻辑。
黑盒测试
黑盒测试又称为功能测试、数据驱动测试或基于规格说明书的测试,不需要了解程序内部如何运转,只关注输入与输出是否符合所需。
按被测对象是否运行
分为静态测试与动态测试。
静态测试
对文档等进行检查与审阅。
动态测试
通过运行软件来检查软件的动态行为与结果的正确性。
按不同测试手段
分为手动测试与自动化测试。
手动测试
由测试人员根据测试用例手动执行测试,记录测试结果。
自动化测试
包括单元测试自动化,接口自动化与UI自动化,无人值守,自动运行,最大限度的利用系统资源,保证软件质量。
##按测试内容分
功能,性能,安全,界面,兼容性,易用性,数据库测试等。
功能测试
测试软件功能是否正常。
性能测试
模拟正常,峰值,异常条件下,测试系统的各性能指标,包括负载测试与压力测试。
- 负载测试:从较小负载开始,逐渐增加并发数与数据量,观察记录不同的在情况下系统的各项指标,直至系统无法承受而崩溃或服务不可用。
- 压力测试 在几乎导致系统崩溃的负荷下,观察系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐率等的变化。
安全测试
安全测试人员或委托第三方安全测试公司,尝试对被测软件进行的各种渗透与入侵,如sql注入,跨站脚本攻击,DDOS攻击等,检测系统是否存在安全漏洞。
界面测试
检测UI显示是否符合原型图设计,设计是否合理,美观。
兼容性测试
根据不同设备不同浏览器不同系统以及同系统不同版本等条件下,软件是否兼容。
易用性测试
功能可以正常使用,模拟用户体验,业务流程是否合理,操作是否符合用户习惯。
数据库测试
检查数据库设计,表结构是否合理,数据库存储是否安全,以及数据一致性。
其他测试:
冒烟测试,回归测试,探索性测试
冒烟测试
验证基本功能是否可以正常使用,如果可以,也可以开展后续测试,否则,打回。
回归测试
开发将bug改为修复后,在新版本上进行确认,确认该bug已被修复以及相关功能正常,然后关闭bug,否则,重新指派该bug给相关开发人员
探索性测试
测试人员根据自身经验积累,结合软件系统所展现出来的特点,对可能存在缺陷的功能点设计与执行测试用例