Test Automation Frameworks-什么是自动化测试框架

上一篇 / 下一篇  2014-04-11 14:51:09 / 个人分类:QTP

转载(自己翻译)

What is a Framework ?

Instead of providing a bookish definition of a framework, lets consider an example.

I am sure you have attended a seminar / lecture / conference where the participants was asked to observe the following  guidelines -

 

  •    Participants should occupy their seat 5 minutes before start of lecture
  •    Bring along a notebook and pen for note taking.
  •    Read the abstract so you have an idea of what the presentation will be about.
  •   Mobile Phones should be set on silent
  •   Use the exit gates at opposite end to the speaker should you require to leave in middle of the lecture.
  •   Questions will be taken at the end of the session

 

Do you think you can conduct a seminarWITHOUTobserving these guidelines????

The answer is a bigYES!Certainly you can conduct a seminar / lecture / conference / demonstration without above guidelines (in fact some of us will not follow them even though there are laid  ...wink)

 

But if the guidelines are followed it will result in beneficial outcome like reduced audience distraction during lecture and increased participant retention and understanding of the subject matter.

Based on above, aFramework can be defined as a set of guidelines which when followed produce beneficial results.

Nowwhat is a TEST Automation Framework ?

什么是测试框架

A set of guidelines like coding standards , test-data handling , object repository treatment  etc... which when followed during automation scripting produce beneficial outcomes like increase code re-usage ,  higher portability  , reduced script. maintenance cost  etc. Mind you these are just guidelines and not rules; they are not mandatory and you can still script. without following the guidelines. But you will miss out on the advantages of having a Framework.

测试框架是一系列的准则,就像编码规则,测试数据处理方法,对象库管理方法 等等,如果我们遵循这些准则,将会带来很多好处,就像 增加代码的复用率,可移植性,减少代码的维护成本等等。这些准则都是一些参考并不是一定要遵守的规则,你也可以不遵守这些规则去写代码,框架带来的好处你就体会不到了。

What are the various Automation Frameworks available?

1) Linear Scripting

线性脚本
2)The Test Library Architecture Framework.

测试库体系结构框架
3)The Data-Driven Testing Framework.

数据驱动
4)The Keyword-Driven or Table-Driven Testing Framework.

关键字驱动
5)The Hybrid Test Automation Framework.

混合驱动

Lets  look at them in detail -

1) Linear Scripting - Record & Playback

It is the simplest of all Frameworks and also know as"Record & Playback".In this Framework , Tester manually records each step ( Navigation and User Inputs), Inserts Checkpoints ( Validation Steps) in the first round . He then , Plays back the recorded script. in the subsequent rounds.

这是最简单录制回放的框架,测试人员手动 录制每个步骤,在第一轮的是就插入检查点,然后在第二轮的时候回放录制的脚本。

Ex :  Consider logging into Flight Reservation Application and checking wether the application has loaded on successful log-on. Here , the tester will simply record the steps and add validation steps.

eg.

考虑登陆飞机定票系统,验证系统是不是登陆成功,测试人员简单的录制然后回放校验。

1
2
3
4
5
6
7
8
9
10
11
SystemUtil.Run"flight4a.exe","","","open"
 
    Dialog("Login").WinEdit("Agent Name:").Set"Guru99"
 
    Dialog("Login").WinEdit("Password:").Set"Mercury"
 
    Dialog("Login").WinButton("OK").Click
 
    'Check Flight Reservation Window has loaded after successful log-on
 
    Window("Flight Reservation").Check CheckPoint("Flight Reservation")

Advantages

优点

  • Fastest way to generate script.

很快就能生成脚本。

  • Automation expertise not required

不需要自动化测试的经验。

  • Easiest way to learn the features of the Testing Tool

最简单的方法去学习测试工具的各种功能。

Disadvantages

缺点

  • Little reuse of scripts

代码重用率低

  • Test data is hard coded into the script.

测试数据直接写死在代码里。

  • Maintenance Nightmare

维护起来困难

2)The Test Library Architecture Framework.

测试库体系结构框架。

It is also know as"Structured Scripting"or"Functional Decomposition".

有时候也叫结构化脚本或者功能分解

In this Framework , test scripts are initially recorded by "Record & Playback" method. Later, common tasks inside the scripts are identified and grouped into Functions. These Functions are called by main test script. calledDriverin different ways to create test cases.

在这种框架下, 测试脚本开始的时候都是通过录制回放生成的,然后,脚本中常用的功能被封装在不同的function 函数中,这些function都可以在脚本中调用。在测试用例中叫驱动

Ex:Using the same example as above, the function for logging in to Flight Reservation will look like .

 

     Function Login()

1
2
3
4
5
6
7
8
9
SystemUtil.Run"flight4a.exe","","","open"
 
Dialog("Login").WinEdit("Agent Name:").Set"Guru99"
 
Dialog("Login").WinEdit("Password:").Set"Mercury"
 
Dialog("Login").WinButton("OK").Click
 
EndFunction

Now, you will call this function in the main script. as follows

   'Driver Script

1
2
3
4
5
6
7
CallLogin()
 
---------------------------
 
OtherFunctioncalls / Test Steps.
 
---------------------------

Advantages

优点

  • Higher level of code reuse is achieved in Structured Scripting as compared to "Record & Playback"

与录制回放功能对比起来,代码复用率高

  • The automation scripts are less costly to develop due to higher code re-use
  • Easier Script. Maintenance

代码维护起来更容易

Disadvantages

缺点

  • Technical expertise is necessary to write  Scripts using Test Library Framework.
  • More time is needed to plan and prepare test scripts.

需要更多时间去准备测试脚本

  • Test Data is hard coded within the scripts

测试数据是在代码中写死的

3)The Data-Driven Testing Framework.

数据驱动框架

In this Framework , while Test case logic resides in Test Scripts, the Test Data is separated and kept outside the Test Scripts.Test Data is read from the external files (Excel Files, Text Files, CSV Files, ODBC Sources, DAO Objects, ADO Objects) and are loaded into the variables inside the Test Script. Variables are used both for Input values and for Verification values. Test Scripts themselves are prepared either using Linear Scripting  or Test Library Framework.

在这个框架下,测试用例是嵌套在测试脚本中的,但是测试数据是独立于脚本而保存在别的地方,测试数据保存在外部文件中(Excel Files, Text Files, CSV Files, ODBC Sources, DAO Objects, ADO Objects),在运行过程中加载进脚本的, 变量在输入值和校验值中都需要用的, 测试脚本是线性框架或者测试对象库框架。

Ex:Developing the Flight Reservation Login script. using this method will involve two steps.

在飞机顶票系统中用这个方法有两步:

Step 1)Create a Test - Data file which could be Excel , CSV , or any other database source.

第一步: 创建测试数据

AgentName

Password

Jimmy

Mercury

Tina

MERCURY

Bill

MerCURY

Step 2)Develop Test Script. and make references to your Test- Data source.

创建测试脚本

     SystemUtil.Run "flight4a.exe","","","open"

1
2
3
4
5
6
7
8
9
10
11
Dialog("Login").WinEdit("Agent Name:").SetDataTable("AgentName", dtGlobalSheet)
 
Dialog("Login").WinEdit("Password:").SetDataTable("Password", dtGlobalSheet)
 
Dialog("Login").WinButton("OK").Click
 
'Check Flight Reservation Window has loaded
 
Window("Flight Reservation").Check CheckPoint("Flight Reservation")
 
**Note"dtGlobalSheet"is the default excel sheet provided by QTP.

Advantages

  • Changes to the Test Scripts do not affect the Test Data

修改测试脚本不会影响测试数据

  • Test Cases can be executed with multiple Sets of Data

测试用来可以在多组测试数据中执行

  • A Variety of Test Scenarios can be executed by just varying the Test Data in the External Data File

改变外部测试数据来实现不同测试场景的测试

DisAdvantages

缺点

  • More time is needed to plan and prepare both Test Scripts and Test Data

需要更多的时间去计划和准备测试脚本和测试数据。

4)The Keyword-Driven

关键字驱动

or Table-Driven Testing Framework.

The Keyword-Driven or Table-Driven framework requires the development of data tables and keywords,independent of the test automation toolused to execute them . Tests can be designed with or without the Application. In a keyword-driven test, the functionality of the application-under-test is documented in a table as well as in step-by-step instructions for each test.

There are 3 basis components of a Keyword Driven Framework viz. Keyword , Application Map , Component Function.

What is a Keyword ?

Keyword is an Action that can be performed on a GUI Component. Ex . For GUI Component Textbox some Keywords ( Action) would be InputText, VerifyValue, VerifyProperty and so on.

What is Application Map?

An Application Map Provides Named References for GUI Components. Application Maps are nothing but "Object Repositry"

What is Component Function?

Component Functions are those functions that actively manipulate or interrogate GUI component. An example of a function would be click on web button with all error handling , enter data in a Web Edit with all error handling. Component functions could be application dependent or independent.

Ex: To understand Keyword View lets take the same example. It invovles 2 steps

Step 1: Creating Data Table (Different from Test-Data Table created in Data Driven Framework). This Data Table contains Action to be performed on GUI Objects and correspoding arguments if any. Each row respresents one Test Step.

Object

(Application MAP)

Action

(KEYWORDS)

Argument

WinEdit(Agent Name)

Set

Guru99

WinEdit(Password)

Set

Mercury

WinButton(OK)

Click

 

Window(Flight Reservation)

Verify

Exists

Step 2: Writing Code in the form. of Component Functions.

Once you've created your data table(s), you simply write a program or a set of scripts that reads in each step, executes the step based on the keyword contained the Action field, performs error checking, and logs any relevant information. This program or set of scripts would look similar to the pseudo code below:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Functionmain()
 
{
 
           CallConnectTable(Name of the Table) {   //CallingFunctionfor connecting to the table.
 
                   while (CallTableParser() != -1)  //Calling function for Parsing and extracting values from the table.
 
                  {
 
                      Pass values to appropriate  COMPONENT functions.LikeSet(ObjectName , Argument) ex.Set( Agent Name , Guru99).
 
                  }
 
           }   
 
                 CallCloseConnection()   //Functionfor Closing connection after all the operation has been performed.
 
 }   //Endof main

Thats all to Keyword Driven Framework.

The advantage of Keyword Driven Framework is that the Keywords are re-usable. To understand this consider  you want to verify login operation for a Website say YAHOO MAIL.  The table will look like this -

Object

(APPLICATION MAP)

   Action

(KEYWORD)

      Argument

WebEdit(UserName)

Set

abc@yahoo.comThis email address is being protected from spambots. You need JavaScript. enabled to view it.

WebEdit(Password)

Set

xxxxx

WebButton(OK)

Click

 

Window(Yahoo Mail)

Verify

Loads

If you observe in this case the Keywords Set , Click , Verify remain the same for which corresponding component functions are already developed. All you need to do is change the Application Mapping (Object Repository) from earlier Flight Reservation to Yahoo Mail , with change in argument values and the same script. will work!

Advantages

  • Provides high code re-usability
  • Test Tool Independent
  • Independent of Application Under Test, same script. works for AUT (with some limitations)
  • Tests can be designed with or without AUT

Disadvantages

  • Initial investment being pretty high, the benefits of this can only be realized if the application is considerably big and the test scripts are to be maintained for quite a few years.
  • High Automation expertise is required to create the Keyword Driven Framework.

NOTE :Even though QTP advertises itself as KeyWord Driven Framework, you can not achieve complete test tool and application idependence using QTP.

5)The Hybrid Test Automation Framework.

As the name suggests this framework is the combination of one or more frameworks discussed above pulling from their strengths and trying to mitigate their weaknesses. This hybrid test automation framework is what most frameworks evolve into over time and multiple projects. Maximum industry uses Keyword Framework in combination of Function decomposition method.

PS:  Other Frameworks worth a mention are

1) Test Modularity Framework 

In this framework common task in test script. are grouped together as Modules.

Ex:Using Actions in QTP use can create a Modualr Scripts

  'Sample Script. for Login

1
2
3
4
5
6
7
8
9
SystemUtil.Run"flight4a.exe","","","open"
 
Dialog("Login").WinEdit("Agent Name:").Set"Guru99"
 
Dialog("Login").WinEdit("Password:").Set"Mercury"
 
Dialog("Login").WinButton("OK").Click
 
'End of Script

Now you can call this Action in the main script. as follows - 

  RunAction ("Login[Argument]", oneIteration)

2) Business Process Testing (BPT)-

This frameworks , breaks up large Business Processes into Components  which can re-used multiple times in the  same or different test scripts. For example , the Business Process of Booking a flight is split into components like Login , Finding Flights , Booking , Payment & Logout which can be re-used in the same  Business process or different processes. Also, BPT facilitates closer coordination amongst SME's and Automation Engineers

Usefull links for keyword driven

http://www.automationrepository.com/2012/11/desigining-keyword-driven-framework-mapped-at-functional-level-part-2/


TAG:

 

评分:0

我来说两句

Open Toolbar