软件没有实现产品规格说明书所要求的功能模块;
软件中出现了产品规格说明指明不应该出现的错误;
软件实现了产品规格说明中没有提到的功能需求;
软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;
软件难以理解、不易使用、运行缓慢、用户体验不友好。
需求不清晰;
系统结构较为复杂;
对程序逻辑路径或者数据范围考虑不全面;
确保设计时间的精准同步;
存在系统性、可靠性的隐患问题;
系统运行环境的复杂;
通信端口较多时影响系统的安全性、适用性;
设计技术系统兼容的问题。
全面性:覆盖所有可能情况和用例,包括正常和异常情况。
独立性:测试应该独立于开发,由专门的测试团队或者专业测试人员进行。
早期开始:测试应该从软件开发的早期阶段就开始,早发现缺陷,成本更低。
缺陷集中:当发现缺陷时,应集中在问题的根源而不是表面修复,以避免同类问题再次出现。
尽可能自动化:使用自动化测试工具提高效率、减少人为错误。
持续改进:测试流程和策略应不断改进,以适应不断变化的软件和需求。
测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中;
不同的测试技术适用于不同的时间点;
测试由开发人员及独立的测试组来管理的;
测试和调试是不同的活动,但是调试必须能够适应任何测试策略。
单元测试
集成测试
系统测试
验收测试
白盒测试:结构性测试/透明盒测试/逻辑驱动测试/基于代码的测试。
黑盒测试:功能测试:通过测试每个功能是否都能正常使用。
灰盒测试:介于白盒测试和黑盒测试之间的一种测试方法:不仅关注输出、输入的正确性,同时也关注程序内部的情况。
静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
对于代码测试:主要测试代码是否符合相应的标准和规范;
对于界面测试:主要测试软件的实际界面与需求中的说明是否相符;
对于文档测试:主要测试用户和需求说明是否符合用户的实际需求。
动态测试:指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性、健壮性等性能。
功能测试,主要针对产品需求说明书对软件进行测试,验证软件功能是否符合需求,包括对原定功能的检验以及测试软件是否存在冗余功能、遗漏功能。
界面测试,主要对系统的界面进行测试,测试用户界面是否友好,软件是否方便易用、系统设计是否合理、界面位置是否正确等问题。
性能测试,主要测试系统的性能是否满足用户需求,即在特定的运行条件下验证系统的能力状态。性能测试主要是通过自动化的测试工具模拟正常、峰值、异常负载状况、对系统的各项性能指标进行测试。
强度测试,迫使系统在异常的资源配置下运行。目的是找出因资源不足或者资源争用而导致的错误。
压力测试,主要是在超负荷环境中,检验系统是否能够正常运行。
安全测试,测试系统防止非法入侵的能力。
兼容性测试,测试软件产品在不同的平台、不同的工具软件或者相同工具软件不同的版本下的兼容性。
安装测试,主要校验软件是否可以正确安装、安装文件的各项设置是否有效、安装后是否影响整个计算机系统、卸载软件时是否可以卸载干净、卸载软件之后是否影响整个计算机系统。
文档测试,主要检查内部或外部文档的清晰性和准确性。
V模型
W模型
H模型
X模型