前言
在我们使用各种App访问各个网站时,偶尔会出现软件崩溃,加载缓慢,或者出现报错的情况,而这两年,我们也见过了很多大厂的App出现问题,比如美团外卖,比如阿里云和微信都出现过问题,而要避免出现上述这些大的问题,就需要我们在软件上线之前尽可能的发现软件的问题,这就是我们所说的测试,即对软件进行测试,发现问题找到原因就是我们软件测试的目的。
软件缺陷
在了解什么是软件测试之前,我们先要了解一下软件缺陷,因为软件测试的目的就是找到软件缺陷,找到原因,并协助解决。
软件缺陷:就是我们熟知的“Bug”。即计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
缺陷的表现形式:
- 软件没有实现产品规格说明书所要求的功能模块;
- 软件中出现了产品规格说明指明不应该出现的错误;
- 软件实现了产品规格说明中没有提到的功能需求;
- 软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;
- 软件难以理解、不易使用、运行缓慢、用户体验不友好。
产生软件缺陷的原因:
- 需求不清晰;
- 系统结构较为复杂;
- 对程序逻辑路径或者数据范围考虑不全面;
- 确保设计时间的精准同步;
- 存在系统性、可靠性的隐患问题;
- 系统运行环境的复杂;
- 通信端口较多时影响系统的安全性、适用性;
- 设计技术系统兼容的问题。
软件测试
定义:软件测试是为了发现错误而执行程序或系统的过程。
软件测试应该遵循以下原则:
- 全面性:覆盖所有可能情况和用例,包括正常和异常情况。
- 独立性:测试应该独立于开发,由专门的测试团队或者专业测试人员进行。
- 早期开始:测试应该从软件开发的早期阶段就开始,早发现缺陷,成本更低。
- 缺陷集中:当发现缺陷时,应集中在问题的根源而不是表面修复,以避免同类问题再次出现。
- 尽可能自动化:使用自动化测试工具提高效率、减少人为错误。
- 持续改进:测试流程和策略应不断改进,以适应不断变化的软件和需求。
软件测试策略
软件测试策略是软件工程过程的一个软件测试的模板,也就是把特定的测试用例方法放置进去的一系列步骤:
软件测试包含的特征:
- 测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中;
- 不同的测试技术适用于不同的时间点;
- 测试由开发人员及独立的测试组来管理的;
- 测试和调试是不同的活动,但是调试必须能够适应任何测试策略。
软件测试的分类
软件测试有多种分类方法,我们这里介绍几种常用的分类法:
软件开发阶段划分
- 单元测试
指对软件中的最小可测试单元进行检查和验证,单元测试需要从软件的内部结构出发设计测试用例。多个模块可以独立地进行测试。
- 集成测试
组装测试/联合测试:将所有模块按照设计要求组装成子系统或者系统进行集成测试。
- 系统测试
将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试 和确认测试,系统测试是针对整个产品的测试。
- 验收测试
交付测试:确保软件准备就绪。
按测试技术划分
- 白盒测试:结构性测试/透明盒测试/逻辑驱动测试/基于代码的测试。
- 黑盒测试:功能测试:通过测试每个功能是否都能正常使用。
- 灰盒测试:介于白盒测试和黑盒测试之间的一种测试方法:不仅关注输出、输入的正确性,同时也关注程序内部的情况。
被测试软件是否实际运行划分
- 静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
- 对于代码测试:主要测试代码是否符合相应的标准和规范;
- 对于界面测试:主要测试软件的实际界面与需求中的说明是否相符;
- 对于文档测试:主要测试用户和需求说明是否符合用户的实际需求。
- 动态测试:指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性、健壮性等性能。
测试类型划分
- 功能测试,主要针对产品需求说明书对软件进行测试,验证软件功能是否符合需求,包括对原定功能的检验以及测试软件是否存在冗余功能、遗漏功能。
- 界面测试,主要对系统的界面进行测试,测试用户界面是否友好,软件是否方便易用、系统设计是否合理、界面位置是否正确等问题。
- 性能测试,主要测试系统的性能是否满足用户需求,即在特定的运行条件下验证系统的能力状态。性能测试主要是通过自动化的测试工具模拟正常、峰值、异常负载状况、对系统的各项性能指标进行测试。
- 强度测试,迫使系统在异常的资源配置下运行。目的是找出因资源不足或者资源争用而导致的错误。
- 压力测试,主要是在超负荷环境中,检验系统是否能够正常运行。
- 安全测试,测试系统防止非法入侵的能力。
- 兼容性测试,测试软件产品在不同的平台、不同的工具软件或者相同工具软件不同的版本下的兼容性。
- 安装测试,主要校验软件是否可以正确安装、安装文件的各项设置是否有效、安装后是否影响整个计算机系统、卸载软件时是否可以卸载干净、卸载软件之后是否影响整个计算机系统。
- 文档测试,主要检查内部或外部文档的清晰性和准确性。
软件测试过程模型
- V模型
- W模型
- H模型
- X模型
总结
软件测试是确保软件质量的重要环节,它不仅关乎产品的稳定性和用户体验,也直接影响到企业的声誉和利益。了解基本的软件测试原则、对象和作用,以及缺陷的种类和影响,对于我们学习软件测试非常重要。