自动化测试通常由三个部分组成:自动生成测试数据流;根据被测设备的反应情况自动生成下一步的测试数据流,自动化测试的优势就在于它能和被测设备形成互动而无需人工干预;自动分析测试结果并形成相应的报告。
自动化测试的本质在于通过事先编译好的程序来调用测试设备的底层API,使测试设备具有一定的智能化和自动化。目前这类程序通常由C/C++和TCL/TK语言来编写,前者能提供更好的封装性和可重用性,后者则是一种脚本语言,简单易学开发速度快且支持高级正则表达式和强大的文本处理能力,但不容易集成到一个统一的测试平台中。C/C++和TCL/TK孰优孰劣不在本文讨论的范围之中,但是无论用哪种语言开发自动化测试软件,它只能是测试的一种手段,它使测试人员能快速实现一个复杂的测试用例,这样测试人员可以将更多的精力放在测试用例的制订上,而不是繁琐的配置和长时间的等待中。如果开发某个测试项目的自动化测试所需要的资源要比测试本身还要多的多的话,就失去了自动化测试的意义了,因为测试人员最应关心的是测试而不是编程。我很欣赏测试设备制造商思博伦公司的SmartBits Automation技术,它不仅极大简化了测试脚本编写的难度,还减少了对编程语言的依赖程度,虽然这个技术目前还不够完善,但它的出现预示着自动化测试的实现正变得越来越简单。此外,随着WEB应用的普及,自动化测试的优势更加突出,如测试结果可以通过浏览器来查询等。
自动化测试的优势是显而易见的,它能提供更好的测试准确性,更高的测试效率,减少测试中的人工错误率。就拿国际上通用的ADSL兼容性标准(TR-048)测试来说吧,它包含有几百个测试用例,需要比较和分析上千个测试结果,如果全部用人工测试的话,其效率是可想而知的,但通过自动化测试,所有工作只需要几个小时而已。尽管如此,对于自动化测试的怀疑始终存在着,认为自动化测试无法满足复杂的测试要求,最多只能完成一些重复性工作。
的确,网络设备需要实现的功能越来越多,组网环境也日趋复杂,这就造成了测试用例的数量和复杂度与日俱增,将这些测试用例全部自动化不仅难度不小而且没有带来效率上的显著提高。这和自动化测试在软件测试中遇到的处境很相似,因此,到目前为止自动化测试在软件测试中的作用依然是很有限的。但我们不能忘记一点,即网络设备的操作系统是封闭的,它和特定的硬件紧密相关且没有第三方软件运行其上,这个系统所处理的绝大多数是传输的数据而不是用户的行为,这都大大限制了不确定因素。更为重要的是,自动化测试的技术正在走向成熟,它不是万能的,但作为一种工具,它的确给了测试人员更大的空间。
总之,测试在网络界的地位正在不断地提升,更复杂更高严格的测试标准为测试人员提出了更高的要求。现在,国内的网络设备制造商如中兴和华为都有专门的自动化测试工作组,运营商中如上海电信和北京通信的测试工作中也开始采用自动化测试。如果你是一位侧射工程师那么未来几年里自动化测试会是经常遇到的一个词。