十年经验大牛浅谈自动化测试与测试用例的编写

author author     2023-03-20     286

关键词:

今天聊得是自动化测试与测试用例的编写,首先来聊一聊框架(Framework)。
技术图片
框架是工程学上一个非常重要的概念。在计算机和软件工程领域,我们可以轻松列举出一些耳熟能详的框架。例如,Windows软件开发框架.NET,Web开发框架React JS、 Angular JS、Python Django、Ruby on Rails, 机器学习框架TensorFlow、Caffe,等。

  那么,什么是一般意义上的框架呢?首先,框架是一个“架子”。这个架子能够完成领域内基础的、重要的功能。基于这个已有的架子,我们可以将重心放在面向业务的开发上。其次,框架也是一个“框框”。“框框”为我们设置了有形和无形的约束。所谓有形的约束,就是我们的开发工作需要符合框架的定义、与框架兼容。所谓无形的约束,就是我们的开发工作需要承受框架的缺点和不足(毕竟,没有十全十美的框架)。

回到测试自动化领域,什么是测试自动化框架呢?顾名思义,就是用于测试自动化的框架。具体来说,它提供了自动化测试用例编写、自动化测试用例执行、自动化测试报告生成等基础功能。我们只需要基于这个框架,完成和业务高度相关的测试用例设计和实现即可。另外,框架会为我们处理好复杂度与扩展性的问题,我们无需为此操心。

  相比手动测试,自动化测试更加注重框架。毕竟,自动化测试本质上也是一种软件开发活动,也需要适当的软件框架。在多个项目中,使用一致的自动化测试框架,可以让复用自动化测试成为可能。

  在某一领域,经常存在着多种类型的框架。测试自动化也不例外。那么,有哪些种类的测试自动化框架呢?它们各自有什么特点?

  线性框架:又指录制和回放(play and record)框架。在这种框架中,测试人员通常不需要编写测试脚本,只需要录制某一次测试的过程(自动生成测试脚本),然后在后续的测试中回放这次录制的结果(执行测试脚本)即可。线性框架最大的好处是无须手动编写测试代码,因此门槛较低、易于上手。然而线性框架的不足之处也很明显:录制的脚本是固定的(hardcode)。这意味着,当应用发生微小变化时,上一次录制的脚本可能就无法使用了,需要重新录制(rework),从而产生大量的后期维护成本。
技术图片
  数据驱动框架:在数据驱动框架中,测试数据和测试脚本是分离的。在许多测试场景中,需要使用不同的测试数据多次测试同一功能或特性。如果测试数据是hardcode进测试脚本的,那么每更换一次测试数据都需要修改测试脚本。这是很大的工作量。此时,可以使用数据驱动框架。具体来说,测试脚本是固定的,而测试数据可以从外部的数据文件,以Excel、CSV、SQL等形式作为参数传入测试脚本。这样,我们只需要维护一份脚本和一份数据文件即可。总体来说,这种框架最大的好处就是易于维护。但是识别与格式化数据、编写通用测试脚本等需要花费技术和时间。

关键词驱动框架:在关键词驱动框架中,测试数据和测试脚本也是分离的。不同的是,这个框架更进一步地将测试脚本中的通用功能剥离出来,形成关键词(keyword)。测试脚本本质上就是对一系列通用的或者自定义的关键词的调用。这样做的好处是关键词可以在多个测试中复用,并且测试脚本更加易于维护。不过,实现这样一个框架并非易事。

  除了上述三种类型,测试自动化框架还有:模块化框架、库结构框架、混合框架等类型。

  需要指出的是,业界已经有了实现上述各种测试自动化框架的工具。通常来说,我们并不需要重新发明一个新的框架,而是基于已有的框架完成自动化测试工作。那么,面对一个新的自动化测试框架,如何着手工作呢?笔者认为,我们应该聚焦在以下四个问题上。

如何生成测试用例?不同的框架,生成测试用例的方法不一样。对于线性框架来说,无须编写脚本,只需要点击预设的按钮就能够生成测试用例;对于多数框架来说,生成测试用例需要编程。当然,不同框架使用的编程语言、编程风格有差异。对于Selenium框架来说,使用的是通用编程语言Java;对于Robot Framework来说,使用的是其专用的Robot Framework编程语言。一般来说,使用框架编程的过程很多时候就是调用库接口的过程。因此作为前提,在编写用例之前,我们需要熟悉框架提供的库的种类和功能,以及这些库所提供的API的使用方法。

 如何执行测试用例?当测试用例完成之后,我们需要运行测试用例。自动化测试是通过GUI图形界面来触发,还是通过CLI命令触发,这因框架而异。当然,仅仅知道如何触发测试是不够的。我们通常有更多的需求。例如,如何选择性地执行满足特定条件的测试用例子集?如何设置全局的执行参数(超时时间、日志路径、报告形式、...)?如何动态地给测试用例集传入参数?一般来说,一个完整的框架需要提供足够多的控制选项,从而让我们根据需求定制执行测试的方式。以Robot Framework为例,其执行用例的命令具有30多个不同的选项。这提供了足够的自由度和一些非常棒的功能。例如其dryrun选项,可以让我们在不实际执行用例的情况下,快速检查出测试用例中参数不匹配、语法不正确、关键词找不到、库导入失败等错误,非常实用。

如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。
技术图片
 如何检查测试结果?测试执行结束之后,我们需要关注测试结果。不同的框架会以不同形式提供测试结果。例如,测试结果既能以控制台日志的形式体现、也能够以图表和报告的形式体现。根据测试结果,我们可以很容易地了解测试的执行情况,包括测试的成功/失败情况、测试的整体/局部用时等。当测试失败时,我们尤其需要关注测试失败的具体情况。通常,我们关心失败是由于我们使用框架的方法不当造成的,还是由于被测软件的质量问题。这一点,只能通过检查和分析测试结果得到。

 如何扩展测试框架?一般来说,框架只是提供了最基本的功能。很多时候,框架并不能直接满足自动化测试的需求。这时我们可以寻求第三方的、与框架本身兼容的库或者插件。如果第三方工具不能满足我们的需求,我们就需要开发自己的库和工具。例如,对于HTTP、SSH等公有协议,我们很容易在网络上找到某个框架的第三方库;而对于只用于公司产品的私有协议,我们通常无法找到第三方库,只能自己开发。自己开发时,需要注意的是要遵从框架的规范,使得开发出的库能够与框架无缝兼容。

  我们已经强调过,选择了一个框架,在享受其好处时,也不得不承受其不足。如果我们的关键需求受制于框架,并且框架也不容易扩展,那么我们就可能需要开发自己的框架。这是一件投入较大的事情。

以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

9个问题浅谈自动化测试与测试用例的编写

  1、请问一般情况的安全测试都是从哪几个方面展开的?  安全测试主要针对以下漏洞类型进行测试,顺便罗列一些常用的测试工具、80%都是我们在用的。  (1)弱口令Nessus\\X-scan\\h-scan\\hydra  (2)ACL访问控制列表暴露在外... 查看详情

十年测试经验大牛教你怎样跑测试用例

...经完成。这是手工执行的方式。也经历过很长一段时间用自动化的方式去运行用例的情况,这时候用例基本是代码,代码是经常要去更新的,以便增强稳定性和更新业务逻辑。这时候报告和日志比较重要,因为跑出问题之后需要... 查看详情

十年经验大牛与你谈为什么要进行自动化测试?

今天跟大家分享的是为什么要进行自动化测试?自动化测试与手工测试区别是什么?自动化测试有点有哪些?为什么要进行自动化测试?之前很长时间做的都是手工测试,虽然也有将手工测试用例转化为自动化测试用例过,但是... 查看详情

从功能测试到自动化测试,携程大牛总结一些工作经验分享

现如今应该有很多测试人员应该有这样的疑虑,自动化测试要怎么去做,今天把一些学习经验分享给大家,希望对你们有帮助,有说的不好的地方,还请多多指教!对于测试人员来说,不管进行功能测试还是自动化测试还是性能... 查看详情

测试用例编写思路

...自己定义的模板。  今天作为测试老鸟的我经过几年的经验沉淀总结出来的一套测试用例编写思路,该思路累计共有八步,经验过验证几乎所有功能性测试都可以依据该架构思路来进行,将最大限度提 查看详情

携程大牛带你了解自动化测试脚本设计

今天给大家讲解一下自动化测试脚本设计,首先跟大家了解一下编写自动化测试脚本的方法。一、不同的自动化测试脚本的编写方法主要有:1、线性的;2、结构化的;3、共享的;4、数据驱动的;关键字驱动的(1)、线性脚本... 查看详情

测试用例的编写

一、测试用例的概念  测试用例是为特定目标而开发测一组测试输入、执行条件和预期结果,其目标可以是测试某个程序路径或核实是否满足某个特定的需求。二、测试用例的编写    1、测试用例文档的编写    编... 查看详情

浅谈自动化测试行为的本质

今天跟大家讲解的是自动化测试行为的本质是什么?会有很多人都说自动化测试可以零基础入门,可是对于新手来说,总是把自动化看得很高端和复杂。下面就跟大家讲讲什么是自动化行为的本质。 先来看看功能测试如何进... 查看详情

自动化测试用例设计

一、了解自动化测试的目的和作用  自动化测试是为了让测试人员从繁琐重复的机械式测试过程中解脱出来,把时间和精力投入到更有价值的地方,从而挖掘更多的产品缺陷。目前自动化测试更多的是定位在冒烟测试和回归测... 查看详情

自动化测试用例设计

一、了解自动化测试的目的和作用  自动化测试是为了让测试人员从繁琐重复的机械式测试过程中解脱出来,把时间和精力投入到更有价值的地方,从而挖掘更多的产品缺陷。目前自动化测试更多的是定位在冒烟测试和回归测... 查看详情

测试用例的编写

在这里和大家聊聊测试用例编写的问题。做一名测试人员,最基本的就是测试用例的编写。文档功底一定要有。我们来说说用例的编写需要的东西。首先,用例的模板网上有很多。这些都是根据个人习惯的,但是再变,其核心内... 查看详情

如果有一个项目我们怎么进行前期准备工作及测试用例的选取,在编写自动化测试用例过程中应该遵守以下几点原则?--web用例的稳定性和效率如何提高:

1、自动化前期准备工作:1、先熟悉业务,项目背景,项目现状,测试目前存在的问题2、选取项目周期长,历史功能稳定;在这样的情况下筛选用例来做自动化,从功能用例中选,如已经选取200个用例3、如果做结构,需要了解... 查看详情

测试用例的“真相”与“事实”这9个事实让人扎心!

...正是基于这些真相与事实,可以对我们的手工测试、自动化测试、甚至规模化的自动化测试(数以万计的用例)带来不同的启发。真相1:不能提前确定所需要的所有测试用例测试领域有一个几乎是共识的结论࿰... 查看详情

测试用例你了解多少

...高到低、独立性、与功能一一对立,根据需求设计,由有经验的人员设计设计测试用例的注意事项有模板,正确性,代表性,可判断性,重现性,详细准确清晰的步骤,符号规范用例的管理工具市场上的用例缺陷管理工具有很多... 查看详情

自动化测试用例编写

测试用例名同测试用例的编号,例如用例名统一以case+编号的形式开头; 每个测试用例粒度必须尽可能小,短小简单的测试用例易于调试。如果测试用例不得不长而复杂,则把它分成两个或更多的私有方法,并单独调用这些... 查看详情

求翻译!谢谢了!

...测试充分性,测试权值技术能够利用测试工程师的知识、经验和技巧指导测试用例的生成,提高测试用例的效率。但是,这种方法需要测试人员对软件程序和需求文档进行深入分析,给出大量程序规则。提取规则谓词行程解空间... 查看详情

测试用例的设计步骤

测试用例的设计步骤作为测试新人,如何实现测试用例的设计一直是我的一个疑惑,在工作中写过几个项目的测试用例,尝试总结一个测试用例的设计步骤。前提:编写测试用例之前我们需要对项目的需求有清晰的了解,对要测... 查看详情

测试2:编写测试用例的方法(代码片段)

2.编写测试用例的方法==7种==测试常用的方法:codereview+代码静态分析、CI/CDCI--持续集成--开发成员经常集成它们的工作,尽快发现集成错误CD--持续部署--将集成后的代码部署到更贴近真实运行的环境2.1测试用例的描述:用例编号... 查看详情