软件测试(SoftwareTesting)是对软件产品进行验证和确认的活动过程。软件测试是软件质量保证过程中的重要一环,同时也是软件质量控制的重要手段之一。
1 软件测试的原则
1) 所有的测试都应追溯到用户需求
软件开发的最终目的是满足用户的需求。
系统中最严重的错误是那些导致程序无法满足用户需求的错误。
2) 尽早开展预防性测试
在软件生命周期各阶段都可能产生错误;
缺陷的修改成本随着阶段的推移将急剧上升;
测试工作进行得越早,越有利于提高软件的质量和降低软件的质量成本。
3) 投入/产出原则
不充分的测试是不负责任的,过分的测试是一种资源的浪费。
4) 注意测试中的群集现象
在所测程序段中,若发现错误数目多,则残存错误数目也比较多。
应当对错误群集的程序段进行重点测试,以提高测试投资的效益。
5) 考虑有效输入和无效输入
6) 避免测试自己的程序
7) 合理安排测试计划
8) 进行回归测试
2 软件测试分类
软件测试可按照软件开发的阶段、测试技术、测试组织、测试内容等进行划分。
1) 按照软件开发的阶段划分,软件测试可分为:
l 单元测试(UnitTesting)
l 集成测试(IntegrationTesting)
l 系统测试(SystemTesting)
l 验收测试(AcceptanceTesting)
2) 按照测试技术划分,软件测试可分为:
l 静态测试(StaticTesting):静态测试是指不运行程序,通过人工或者借助专用的软件测试工具对程序和文档进行分析与检查,借以发现程序和文档中存在的问题。
l 动态测试(DynamicTesting):动态方法是指通过人工或使用工具运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等特性。动态测试分为白盒测试、黑盒测试和灰盒测试。
3) 按照软件开发的阶段划分,软件测试可分为:
l 开发方测试
l 用户测试(β测试)
l 第三方测试
4) 按照测试内容划分,软件测试分为:
l 功能测试(FunctionalTesting)
l 性能测试(PerformanceTesting)
l 容量测试(VolumeTesting)
l 健壮性测试(RobustnessTesting)
l 安全性测试(SecurityTesting)
l 可靠性测试(ReliabilityTesting)
l 兼容性测试(CompatibilityTesting)
l 易用性测试(UsabilityTesting)
l 本地化测试(LocalizationTesting)
l 配置测试(Configurationtesting)
l 安装测试(InstallationTesting)
l 文档测试(DocumentationTesting)
3 软件缺陷
软件缺陷(SoftwareDefect),也叫Bug。IEEE729-1983对缺陷的定义是:从产品内