您在使用 Python 吗? 开启测试自动化的未来

白皮书

使用 Python 脚本迈进先进的测试自动化技术

传统上,测试自动化工程师都是使用 shell 脚本和自主开发的工具进行自动测试。现在,测试团队可以使用 Python 更轻松、更稳健地完成他们的测试方案。本文探讨了对三种编程语言进行集成话题,旨在帮助您踏入自动化测试世界的第一步。

  1. 理解 Python 的优势
  2. Python 编程挑战
  3. 使用 Python 进行测试

 

 

Python 简介

开发一套成功的测试方案的关键,在于为项目确定恰当的自动化工具。这些工具对于电子产品开发的时间和效率极为关键。测试自动化可在三个方面提升效率。首先,自动化替代了手动的人工重复,减少了出错机会。其次,通过对一系列测试进行自动切换,可以加速定序测试。其效率远远高于手动测试。第三,自动捕获数据和连续执行有利于提高精度。

 

 

Python 是一款用于编写脚本的强大工具,可以用于自动化测试。Python 是一种运行时语言,易于学习;但是针对全面的自动化测试,它在所需要的强大的图形用户界面(GUI)和开发驱动程序方面略显不足。将 Python 与其他编程语言相结合,例如 C# 和 .NET,测试自动化工程师可以得到两全其美的结果。

 

 

强大的 Python 工具和程序库:

  • Pytest:一个极为通用的 Python 测试框架
  • NumPy:一个提供多维阵列和高层数学函数的程序库
  • SciPy:一个利用大量算法来扩展 NumPy功能的程序库
  • Mathplotlib:一个在数字绘图和数据分析工具中使用的程序库
  • Pythonnet:在Python 与 .NET CLR之间进行集成的套件

 

 

Python 的优势

测试工程师在为自动化选择一种编程语言之前,需要评测这种语言的优势。他们必须考虑这种语言在一个生态系统中的可扩展性、易开发性和受欢迎程度,这些都会影响到第三方可用资源和程序库的多样性。

 

 

Python 拥有全部这些属性,并且具有免费和开源优势。任何人都可以下载 Python,并开始快速开发和发布 Python 代码。相比之下,企业的开发人员可能需要花费数天或数周时间为企业的开发环境(如 Visual Studio)收集编译器和程序库。Python 开源社区提供了广泛的程序库,以帮助测试工程师开始执行自动化测试。这些便于访问的社区资源有助于工程师们解决常见的难题。

 

 

Python 是一种运行时语言,不需要编译器,因此属于一种脚本语言。它能在安装了 Python 解释器的所有设备上运行。由于在开源社区得到了广泛使用,因此 Python 拥有杰出的跨平台支持能力。与更复杂的语言相比,Python 非常便于快速学习。Python 的语法很少,具有良好的可读性,因此工程师们即使没有丰富的编码经验,也能快速学会。图 1 所示的是一个典型的入门程序‘Hello World’,使用了 C# 和 Python 来编码。

 

 

Python 的极简风格对于测试自动化具有诸多优势。测试步骤在本质上是呈线性的,一次执行一个,按顺序执行。这种简单、易读的 Python 环境非常适合开发线性测试脚本。熟悉脚本的资深测试工程师可以快速学会 Python 的语法。对于刚步入职场的大学生而言,他们更容易熟悉 Python 代码,而不是 C++ 或 C#。对 Python 代码的需求正在增加。据 indeed.com 统计,2018 年,对有经验的 Python 编程人员的需求量为46,000 人,而 C++ 和 C# 编程人员的人才缺口分别为 31,000 人和 27,000 人。

 

 

 

让计算变得简单

尽管看上去非常简单,但是 Python 的功能却非常强大。它拥有专为创建测试而设计的丰富套件。例如,Pytest 便是一个适用于各种测试框架的通用测试工具。这些套件可以节省测试工程师的时间,减少错误,简化必须要为一系列测试所开发的计算代码。熟悉 MATLAB 的工程师们将会非常欣赏 Python 的数值分析特性。与 MATLAB 不同,Python 是开源、免费的,并且可以作为编程语言来使用。工程师们熟悉的所有MATLAB 特性均可在 Python 中执行,因此他们可以获得丰富的计算工具和算法。

 

 

Python 可以轻松与 NumPy 和 SciPy 等计算程序库相结合,并能存储和解释结果,这对更高级的运算非常必要。NumPy 添加了对科学计算工具的支持,包括多维阵列对象。SciPy 程序库包含了高效的数值例程,包括进行数值集成和优化的例程。程序库和程序套件是帮助工程师们开发 Python 的最强大的工具。

 

 

Python 编程挑战

Python 是开发脚本的绝佳工具,但测试工程师们也需要了解它的局限性。Python 的最大缺点是其整体性能。作为一种解释性语言,ython 将始终比一些编译语言(如C#)要慢。在一些速度特别重要的关键任务中,这可能是一个问题。这种解释性代码的另一个缺点是编译器并不检查破损代码。在将其引入开发环境之前,开发人员必须投入更多精力,使用单元、系统和集成测试的方法对 Python 代码执行测试。

 

 

Python 数据对象可以动态输入和解释,这种特性非常有利于建立小型项目。不过针对大型项目,这种优势很难继续保持。最后,虽然 Python 拥有设计 GUI 的程库库,但 C# 和 .NET 仍然是最好的 GUI 设计工具,尤其是在 Windows 环境下执行开发任务时。

 

 

与其他语言相集成,从而克服自身的挑战

Python 的缺点可以通过与其他语言相集成来解决。这样可以把 Python 的脚本编写优势与其他语言的优势和速度融合起来。测试团队可以使用 Python 来开发自动测试脚本,同时对于那些性能关键型和特定设备的驱动程序代码,则仍然使用其他语言,比如C#。这可以通过 Pythonnet 之类的工具来实现,它是一个将 Python 集成到 .NET 代码中的工具套件。这个 .NET 框架运行时环境被称为 CLR(通用语言运行时),它负责执行 .NET 程序。

 

 

Pythonnet 可让编程人员将 Python 代码添加到 .NET 应用程序中,实现与 .NETCLR 环境的无缝交互。IronPython 提供了与 .NET 更紧密的、解释性的集成,但与 Pythonnet 相比牺牲了速度优势。图 3 示出了 IronPython 如何通过 Python 对Windows 表格和按钮进行编程。在这里,使用预期的参考表把 CLR 导入到了项目中。

 

 

另外,了解集成并不仅限于 Python 和 .NET,这一点也很重要。大多数流行的编程语言都支持 Python 集成。由于 Python 具有跨平台支持,拥有大量的中间件产品,并且采用了面向对象的风格,支持动态输入/绑定功能,因此它是与 windows 编程语言相结合的一个良好选择。另一个集成工具 Jython,也可以与 Java 平台实现类似集成。对于开发人员来说,必须选择一种最适合自身需求的语言,并了解该语言的集成能力。

 

 

使用 Python 执行测试

在这个真实示例中,我们来看看测试工程师如何使用 Python 与现有的测试程序相结合,以便建立一个新的集成的自动化测试。在无线通信中,随着多模设备的增多也增加了对多模测试的需求,此时,需要同时测试 Wi-Fi 环境和蜂窝环境。现在,越来越多的多模设备都在同时使用 Wi-Fi 和蜂窝通信。以前的无线网络设备都是在 Wi-Fi 或蜂窝环境中单独进行测试的。

 

 

请下载此文档以了解更多信息。