1、如何保证测试的结果是正确的?
最终结果是正确的,没有错误日志?这样只能测试到开发者已经预测到的异常,并不能保证程序是没有bug的。
我们不仅要关注最终结果是否正确,还要对关键步骤进行跟踪。
比如,假设有10个连接,每个连接上的包有序列号。那么我们不仅要看每个连接上的包的序列号是升序就ok了,
还需要确认所有连接上的包的总数,和返回包的序列号的总数也要一致,除此之外,还需要确认,每个连接上的包
的序列号和返回包的序列号是一致的,排除将这个连接上的包由于错误,处理的时候变成了另一个连接的包的可能性。
此外,由于连接是有状态改变的,我们也要关注状态的变换,防止由于状态转换的错误,导致本来处理后结果应该是
错误的,但是,最终结果却变成了正确的。
2、对于多线程的公平性的测试。
不仅仅只看每个线程内对每个连接处理的是否公平,还需在一个大的绝对轴上进行比较。因为,可能出现每个
线程对每个连接的处理是公平的,但是,多个线程处理后的结果在时间轴上累加的结果可能就不是公平的。
3、测试时连接的数据,也要根据线上的实际数据进行测试,或者是实际数据乘一个系数进行测试。防止,测试数据没有参考价值。
同时,也能防止由于数据的量级不同导致的程序的处理结果不同。