一、面向对象软件的集成测试策略
由于面向对象软件中类之间通过消息传递协作,缺乏传统自顶向下或自底向上的控制流结构,因此集成测试需采用更适合其特性的策略:
基于线程的测试(Thread-Based Testing)
- 将系统中响应某一输入或事件所需的一组协作类视为一个“线程”。
- 对每个这样的线程进行独立集成和测试,模拟真实运行场景下的行为流程。
- 需结合回归测试来检测修改引入的副作用,确保其他线程不受影响。
基于使用的测试(Use-Based Testing)
- 优先测试使用较少依赖其他类的“实用类”或“服务类”(如工具类、数学计算类)。
- 然后逐步集成使用这些基础类的更高层类,形成自底向上但更可控的增量式集成。
- 有助于早期发现核心功能缺陷,降低故障传播风险。
二、Web 应用测试的质量维度
Web 应用具有分布式、异构环境运行的特点,测试需从多个质量维度全面评估:
内容质量
- 语法层面:检查文本中的拼写、标点、语句通顺性等。
- 语义层面:验证信息是否准确、完整,内容在不同页面间保持一致。
功能质量
- 核查所有功能是否符合需求规格说明。
- 测试功能逻辑正确性、异常处理能力及对技术规范(如 HTML5、JavaScript、AJAX)的遵循程度。
结构质量
- 检查系统架构能否有效支撑内容与功能的组织。
- 评估可扩展性,即是否易于添加新模块、页面或服务而不破坏现有结构。
可用性质量
- 关注用户界面设计的人性化程度,包括布局合理性、操作直观性。
- 支持不同技能水平用户理解并完成任务,尤其关注辅助功能(Accessibility)。
导航性质量
- 验证链接路径的正确性,避免死链、断链或循环跳转。
- 导航语义清晰,用户能明确当前位置及如何到达目标页面。
性能质量
- 在正常与高负载条件下测试响应时间、吞吐量和资源消耗。
- 进行压力测试和负载测试,确保系统在峰值访问时仍稳定运行。
兼容性质量
- 客户端兼容性:跨浏览器(Chrome、Firefox、Safari 等)、跨设备(PC、手机、平板)表现一致。
- 服务器端兼容性:支持不同操作系统、数据库、中间件配置下的部署与运行。
识别参与同一事件响应的类集合是基于线程的测试(Thread-Based Testing)的关键步骤。该过程通常结合系统设计文档、用例分析和动态行为建模来完成,具体方法如下:
从用户场景或用例出发
- 选取一个具体的输入/事件(如“用户登录”),分析其完整的执行流程。
- 跟踪该事件从界面输入到后端处理再到响应返回的全过程。
构建消息流图或调用序列图
- 使用UML序列图(Sequence Diagram)描述对象间的交互顺序。
- 明确哪些类在该事件中被创建、调用或传递消息(如
UserInterface → AuthService → DatabaseManager)。
识别协作类集合(Class Collaboration Set)
- 所有出现在该序列图中的类即为构成此“线程”的类集合。
- 包括直接参与的对象以及间接支持的功能类(如日志记录、异常处理等)。
利用程序静态分析技术辅助识别
- 通过解析源代码中的方法调用关系、依赖注入配置或接口引用,自动生成类依赖网络图。
- 结合事件触发点(如控制器方法)进行正向追踪,提取所有可达类。
结合动态执行轨迹验证
- 在测试环境中模拟该事件,使用日志或AOP(面向切面编程)记录实际运行时涉及的类与方法。
- 对比预期与实际的类集合,修正模型偏差。
分层组织测试线程
- 对复杂事件可进一步划分子线程(如“认证子线程”、“授权子线程”),分别测试后再集成。
综上,识别关键在于将外部输入/事件映射为内部类协作路径,并借助建模与工具实现精准捕获。