做任何事,要牢记你的用户是谁!设计一个框架,要知道你的用户的使用需求是什么,这样,框架设计才可能容易被接受,离成功也就越进一步了。
框架的用户是测试人员。测试人员的特点是:
-
熟悉或精通业务
-
了解程序元素,但不了解程序结构
-
实现细节更是难以洞察
因此,在设计初期,就考虑将控件的访问封装起来。对于测试人员来说,所有的控件都已经封装好了,他们只需要调用就可以了。
这一点,应该已经初步解决问题了。但是我们并没有满足这一点。
对于测试来讲,他们了解的是业务元素,而我们常规做法,是把控件封装成编程元素。这是不一样的。举个例子:
我们在界面编程的时候,命名一个按钮控件,叫btnOk,标题是“确定”。对于程序员来说,btnOk可能是自然的标识名称,而对于测试来说,“确定”反而是更自然的选择。
我们考虑,测试最后编程的代码,应该接近DSL(domain-specific language领域描述语言)。可能有这样的几种方式:
- 设置文本(标题编辑框, "新的标题")
- 标题编辑框.设置文本("新的标题")
由于我采用了VCL的控件封装策略,所以倾向于使用接口的访问方式(使用.的方式),向测试人员开放接口。在这点上和同事有过争论。不过后来,对测试人员做过简单调查,发现第二种方式还是可以接受的。
下面的考虑问题是,这些控件的访问代码,怎么让测试写了?最直接想到的方法,就是通过遍历窗体,通过访问每一个控件,逐个封装成代码,这样测试就不需要关心这段复杂代码的编写了。
比如:
TMyFormTestCase=class
private
FEdit1:IEdit;
public
propertyEdit:IEditreadFEdit1;
procedureDoTestCase;override;
end;
其中DoTestCase是真正完成业务功能的虚拟函数。通过覆盖,完成实际业务代码。属性Edit直接封装给测试人员调用。但是,注意到业务代码和我们自动生成的代码混合在一起,这有两个坏处:
- 自动生成的代码,需要和编写的代码进行混合处理。降低了自动化的可能性。
- 两者混合,其实是增加了测试学习的成本。相反,如果隔离,可以使得应用变得简单。
这两个缺点,让我们决定,为每一个窗体都建立一个基类,在这个基类中,完成所有控件的定义和访问。并将所有这些控件封装类,集中在一个单元中。每一个类,一个单元也想过,但是感觉太复杂了。也没必要。
这里面还有另外一个易用性问题。这和第一篇中讲到的组件架构有关。如果我们的测试业务代码,都是和主程序混在一起,那么对于测试人员,
- 他们必须在有主程序代码的前提下,才可以调试业务测试代码
- 程序代码,也会成为他们的负担
另外,从程序代码的封装角度来看,也有可能遭受破坏的可能。所以,决定将所有业务代码都封装到一个独立的Dll中。另外,为了降低Dll对程序代码的依赖,所有对控件的访问,都通过对应的接口(如IEdit,IForm,IButton)来访问,而这些接口的对象实例的创建,都可以留在程序代码中(这是为了方便扩展)。
整个框架过程中,还有几个重要的问题。第一个就是控件名称的命名问题。本来可能通过控件的属性来生成,但后来发现,不一定有中文信息,比如Edit控件啊,Grid控件啊。所以支持了字典表的方式来做翻译。首先将控件Name按照骆驼命名法分离,然后将那些缩写或者单词,到对应表中,查找中文解释,最后组合称为名称。
还有就是业务流程的Log问题。这个实现,后来采用的是AOP模式。具体的实现思路,后面会有专门介绍。
当然了,实际应用中,还可能有很多其他问题。这些都需要细细解决。总之一句话,由于充分考虑了用户的感受,所以这部分的框架,改了又改,现在才稍微满意了。
分享到:
相关推荐
项目概述:高效自动化测试框架 本项目采用Python作为主要开发语言,集成了C、HTML、JavaScript、CSS、Lua和C++等多种编程语言,共包含15,431个文件。文件类型丰富,主要包括: - Python编译文件(pyc):6,303个 -...
1. 选择合适的测试框架:根据项目需求和技术栈,选择最适合的自动化测试框架。 2. 编写测试用例:根据应用的功能,编写详细的测试用例,包括正常流程和异常情况。 3. 安装和配置:安装所选框架,设置必要的环境变量...
本节课程从自动化测试概述、UFT(QTP)脚本增强、VBscript脚本编程及Python等,扣丁学堂软件测试技术交流群:338750406 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
【文档标题】:“WEB自动化测试框架文档.doc” 【文档描述】:该文档详细阐述了WEB自动化测试的关键思路、编码基础和框架介绍,旨在提供一套有效的自动化测试解决方案。 【标签】:“WEB自动化测试框架文档.doc” ...
Selenium是一个开源的Web自动化测试工具,它支持多种编程语言,包括Python。Python作为简洁易懂的脚本语言,非常适合编写自动化测试脚本。Selenium与Python的结合使得测试代码编写更为简单,且易于维护。 在描述中...
Java作为一门广泛应用的编程语言,拥有众多优秀的自动化测试框架。例如,JUnit是最基础的单元测试框架,适合对单个类或方法进行测试;TestNG则提供了更丰富的功能,如并行测试、测试套件管理等。对于更复杂的集成...
### 自动化测试框架 #### 涉及技术的简介 在现代软件开发过程中,自动化测试已成为确保软件质量的关键组成部分。本文将详细介绍一种基于CODEUI的自动化测试框架的设计与实现,该框架采用文本模板引擎(T4)来生成...
通过这个项目实战,我们可以学习到如何构建一个完整的接口自动化测试流程,包括选择合适的自动化测试框架、编写测试用例、执行测试和生成报告,这对于提升测试技能和理解软件测试生命周期至关重要。同时,对Python...
Python UI自动化测试框架是软件测试领域中一种高效、灵活的工具,它可以帮助测试人员实现对图形用户界面(GUI)的自动化测试。本框架基于Python编程语言,结合了Selenium WebDriver库,unittest测试框架,...
首先,Java作为一门广泛使用的编程语言,提供了丰富的库和框架支持自动化测试。在给定的描述中提到了`testng-report`,这是一个基于TestNG的测试报告生成工具。TestNG是一款功能强大的测试框架,支持多种类型的测试...
Python作为一种强大的编程语言,因其简洁明了的语法和丰富的库支持,成为构建接口自动化测试框架的首选。 在【基于python的接口自动化测试框架(带演示案例版)】中,我们可以看到一个完整的测试解决方案,它可能...
第三模块REST Assured +testng 接口自动化测试框架项目实践,框架搭建、数据驱动测试DDT、项目自动化测试脚本业务代码编写、extentsreport 自动化测试报告输出以及测试结果分析 第四模块selenium+TestNG WEB自动化...
Web自动化测试框架搭建是现代软件开发过程中的重要环节,它能显著提高测试效率,减少人工错误,确保产品质量。本文将详细介绍自动化测试理念以及如何构建一个分层的自动化测试框架,并结合持续集成(CI)进行管理。 ...
在IT行业中,软件测试自动化框架是提升测试效率和质量的关键技术。对于拥有两年以上自动化测试经验的工程师来说,深入理解并熟练应用自动化框架至关重要。本文将详细探讨这一主题,涵盖自动化框架的基础概念、常见...
因此,在选择自动化测试框架时需要考虑多个因素,如支持的操作系统类型、编程语言兼容性、易用性等。 ### 三、iOS自动化测试框架 #### 1. XCUITest XCUITest是苹果官方推出的用于iOS应用UI测试的框架。它支持Swift...
UFT自动化测试框架是测试行业发展的趋势之一,自动化测试的工具有很多,但UFT(QTP)是最流行的测试工具之一。很多公司在招聘时会把UFT(QTP)作为指定需要掌握的测试工具。本文将以具体的框架为实例,叙述整个框架...
**Selenium**: Selenium是一个开源的Web应用程序自动化测试框架,它允许测试人员通过编程方式模拟用户与浏览器的交互。Selenium支持多种浏览器和编程语言,包括Java。在这个实例项目中,Selenium WebDriver将被用来...
项目概述:深入探索基于Python的Playwright UI自动化测试框架 本项目致力于深入研究Playwright这一前沿的...本项目不仅作为学习Playwright框架的实践案例,也适合对自动化测试、Python编程感兴趣的同行交流与参考。
首先,Python是一种广泛应用于测试领域的编程语言,其简洁明了的语法和丰富的库支持使得它成为自动化测试的理想选择。Selenium是一个开源的Web应用程序接口(API),可以模拟用户在浏览器中的操作,如点击按钮、填写...