专业第三方软件测评机构软件测试的方法可以从两个方面来了解:一是测什么,二是怎么测。
一、测试类型。
功能测试
测试软件是不是按需求实现了所有功能。但专业机构的做法是走通正常流程,更会系统性地挖掘异常场景。比如,会测试输入错误格式的数据、在业务流程中途强行取消、反复提交同一请求等情况,测试软件的容错能力和操作的准确。
性能测试
测试系统在不同负载下的表现。包括多项内容:负载测试是模拟正常业务高峰,看响应速度和处理能力;压力测试是不断加大并发,找到系统的性能拐点和极限承载能力;稳定性测试则是长时间运行,一般要求7x24小时,监测系统资源占用,排查是不是存在内存泄漏、服务不声不响地崩溃后又恢复等现象。
安全性测试
用于发现系统漏洞和被攻击的风险。方法包括漏洞扫描、渗透测试和代码审计。会测试系统是不是有效防护了常见威胁,比如SQL注入、跨站脚本攻击,还会检查身份认证机制是不是健壮、权限控制是不是存在越权可能、敏感数据传输和存储是不是加密。
兼容性/适配性测试
测试软件在不同环境组合下的运行情况。特别是在信创或国产化项目中,需要建立详细的软硬件兼容性矩阵,包括不同CPU架构、操作系统、浏览器、中间件、数据库以及外设。测试时会逐一测试安装、卸载以及重要功能的正常运行,保证在任何预期的用户环境中都能稳定工作。
可靠性测试
测试系统在遭遇异常时的生存能力。模拟各种故障,比如网络闪断、服务所在节点意外宕机、磁盘空间被写满等,测试系统是不是有自动切换、优雅降级或故障恢复的能力,以及能否保证数据的一致和事务的完整。
易用性测试
测试软件是不是好懂、易学、操作是不是顺手。一般会结合用户界面原型走查、专家评审和真实用户试用反馈,检查操作流程是不是顺畅、文字提示是不是清晰、界面风格是不是统一、是不是符合主流使用习惯等。
可移植性测试
测试软件从一种环境迁移到另一种环境的难易度,包括从旧版本向新版本的升级,或从一种数据库向另一种数据库的迁移。会实际执行完整的部署、数据迁移和配置过程,测试适应性、易安装性和易替换性。
维护性测试
测试软件未来被修改、扩展或修复的便捷性。会审查代码的模块化程度、注释质量和相关文档的完整性。具体操作上,可能会尝试对某个模块进行局部修改,然后执行回归测试,观察影响范围是不是被良好地控制在预期之内。
二、测试手段
静态测试
不实际运行程序,而是通过审查文档、阅读代码、评审架构来发现缺陷。如,在代码中寻找潜在的思路错误、不符合规范的写法、安全漏洞等。优点是能在开发早期以很低的成本介入。
动态测试
和静态测试相对,就是真正运行被测软件,输入测试数据并观察输出,是功能、性能、安全等绝大多数测试类型的实际执行形式。
手工测试
测试工程师根据用例一步步操作,并用自己的经验和判断力去发现一些脚本难以捕捉的问题,尤其适用于探索性测试、复杂交互思路的测试和易用性考虑。
自动化测试
利用脚本或工具替代人工完成重复性的测试工作。典型应用场景是回归测试和接口测试。在需要模拟海量并发用户时,性能测试也几乎完全是自动化的。它的优势是高效、准确、可重复。
接口API测试
绕开前端页面,直接对软件的服务接口进行调用和测试,因为能更早、更直接地暴露深方面的业务思路、数据处理和集成上的问题,而且稳定性高,非常适合纳入自动化测试流程。
模糊测试
专门用来发现深层安全漏洞和系统健壮性缺陷的技术。方法就是向软件程序大量输入随机、非预期的畸形数据,同时监控程序是不是会因此崩溃、挂起或表现出其他异常,在测试文件分析、网络协议等类型的软件时应用广泛。