概述
并发测试大致分为两类,即安全性测试与活跃性测试。安全性:不发生任何错误的行为。活跃性:某个良好的行为终究会发生。
在进行安全性测试时,通常会采用测试不变性条件的形式,即判断某个类的行为是否与其规范保持一致。
活跃性测试包括进展测试和无进展测试两方面,这些都是很难量化的。
与活跃性测试相关的是性能测试。性能可以通过多个方面来衡量,包括:
- 吞吐量:指一组并发任务中已完成任务所占的比例。
- 响应性:指请求从发出到完成之间的时间(也称为延迟)。
- 可伸缩性:指在增加更多资源的情况下(通常指CPU),吞吐量(或者缓解短缺)的提升情况。
正确性测试
在为某个并发类设计单元测试时,首先需要执行与测试串行类时相同的分析——找出需要检查的不变性条件和后验条件。
性能测试
性能测试通常是功能测试的延伸。事实上,在性能测试中应该包含一些基本的功能测试,从而确保不会对错误的代码进行性能测试。
虽然在性能测试与功能测试之间肯定会存在重叠之处,但它们的目标是不同的。性能测试将衡量典型测试用例中的端到端性能。
性能测试的第二个目标是根据经验值来调整各种不同的限值,例如线程数量、缓存容量等。这些限值可能依赖于平台的特性(例如,处理器的类型、处理器的步进级别、CPU的数量或内存大小等),因此需要动态地进行配置,而我们通常需要合理地选择这些值,从而使程序能够在更多的系统上良好地运行。