系统测试是一个比较复杂的测试过程。其主要目的是使被测产品的众多功能甚至是产品本身的集合,在以系统级别运行时进行行为的验证,其测试类型非常多样且复杂,主要体现在一下几个方面。
第一,相对于功能测试比较固定的测试环境,系统测试环境往往会比较复杂,配置繁多,并且不固定、不稳定。比如网络设备测试,功能测试会根据功能需求,建立一套相对固定的环境,规模也不会很大。但是作为系统测试,可能会是一个多台设备的复杂环境,并且配置也会变得复杂,一次来测试不同功能的组合。所以对于自动化测试来说,环境的配置要足够灵活,能够应对不同的环境配置来执行相同的测试目的。
第二,测试用例的容错性要做够强,系统测试的配置和测试过程的复杂度,对测试用例本身的稳定性,或者被测系统的稳定性提出了一定的需求。我们不希望一个历时 3 小时的测试用例,因为一个小问题导致整个测试用例的失败。而对于非法测试这类具有一定危险性的测试,我们同样希望,在被测系统进入一个不正常的状态时,测试工具能能够有能力去恢复它。
第三,压力测试和性能测试的需求。对于标准的性能测试要求,我们希望自动化工具能够快速集成相应的标准性能测试设备或工具。
第四,客户场景模拟测试。即便有聪明的测试工程师设计种类繁多的测试用例,总会有他们想象不到的场景,而客户才是真正的麻烦制造者。客户的操作更加随机而不可捉摸,如果客户发现了问题,在解决问题前,也需要对客户的场景进行模拟和简化来复现问题和定位。
对于系统测试,自动化工具需要具有足够的弹性来匹配不同的测试场景,而不是通过不同的测试用例来对应不同的场景,同时要有足够强的扩展性,能够加入不同的辅助测试工具和设备来满足更多的测试需求,并且要有比较好的测试流程控制能力,能够快速设计测试用例的工具的工作流,应对客户提出的问题。