Selenium Web Driver自动化测试(java版)系列下半部分(34) - 用数据驱动搭建测试框架雏形(7) - 测试框架雏形总结

前几篇我们模拟了一个测试框架的雏形,用的是Human Resources System测试网站:

重申一遍,框架的设计多种多样,只要能够满足一致性、复用性和扩展性就可以了。这篇我们就来总结一下写完的框架。和开发一个软件一样,自动化测试项目的完成也需要经历好几个步骤。虽然每个公司都有自己的计划和安排,但大体情况都差不多。我简单归纳如下:

你看,完成一个项目需要合理规划,并不是直接拿来就编程,写代码之前还有好几步要做。首先,项目分析。其实项目分析的过程就是熟悉应用以及确定测试模块的过程。Hrsystem是一个网站应用,打开后默认来到登录页面。登录页面上有员工代号,密码,登录按钮。我们可以用三个模拟员工登录:

便选择一个登录进去直接跳转到主页(Home)。主页上有一个员工头像以及一段欢迎辞。导航栏有四项,分别指向当前主页(Home),员工信息(Employee),员工工时表(Timesheet),以及网上商城(OnlineStore)。再简单浏览一下网站。点击Employee来到员工信息页面,它里面记录了每一个员工的代号(Employee Code)、姓名(Employee Name)、最近登录日期(Last Login Date),以及该员工是否还在该公司(Active)。代号姓名不用说了;对于Last Login Date来说,只要你一登录,最近登录日期就会变成今天;有些员工离职了或调走了就不再是Active了。

接下来点击timesheet跳转到员工工时表,员工的每一条工作记录都会存在此表中。Roster Date,Roster Start和Roster End指的领导排的班次,也就是计划上班的日期和时间。Actual Start和Actual End指的是实际上下班的时间。Comments指的是根据Roster和Actual的对比提示该员工是否迟到或早退(大部分老板都爱搞这个)。

点击OnlineStore来到网上商城,琳琅满目的商品,只可惜全是假的。虽然都是假的,但还都有标价。点击某商品的buy按钮就会弹出一个页面让你选择颜色材质个数,然后就可以放入购物车结账。

浏览了一遍网站,我们也就知道了它的某些功能。通常情况下导航栏中不同的项目代表不同的功能,是个天然的模块分割器,所以我也是按导航栏来给测试点分模块。项目的测试点分为四个模块:

我们的框架中暂时只有登录模块和员工模块,剩下的两个模块大家有兴趣可以去写写,我就不做演示了。

第二步,测试用例整理。我们有四个模块,每个模块都有几个需要测试的功能。因为只是演示,我只挑选了几个有代表性的测试点作为test case,实际项目中或许老板会让你面面俱到尽可能覆盖周全。Test case如下,一般会写在Excel表里:

每个test case的具体步骤如下:

EmpLogin(登录):
1. 正常登录(用户名/密码输入正确)

  1. 打开网站;
  2. 输入用户名;
  3. 输入密码;
  4. 点击登录按钮(断言点:登录成功,用户名与网页显示一直时表示登录成功);
  5. 点击退出按钮(断言点:退出成功,登录按钮再次出现表示退出成功)。

2. 非正常登录(用户名/密码错误)

  1. 打开网站;
  2. 输入用户名;
  3. 输入密码;
  4. 点击登录按钮(断言点:登录失败,出现” usercode or password is incorrect”表示登录失败)。

3. 非正常登录(用户名/密码为空)

  1. 打开网站
  2. 输入用户名;
  3. 点击登录按钮(断言点:登录失败,弹出对话框”Please enter password”表示登录失败)。

Employee(员工信息):
1. 员工登录后最后登录时间字段正确

  1. 打开网站;
  2. 输入用户名;
  3. 输入密码;
  4. 点击登录按钮;
  5. 登录成功后在导航栏上点击Employee(断言点:登录员工Last Login Date应与数据库时间均显示为当天)。

Timesheet(工时表):
1. 按员工姓名搜索工时表

  1. 打开网站;
  2. 输入用户名;
  3. 输入密码;
  4. 点击登录按钮;
  5. 登录成功后在导航栏上点击Timesheets;
  6. 输入员工姓名;
  7. 点击查询(断言点:返回被查询员工的工时表,且数量正确。当工时表上员工姓名和查询字段一致,并且记录数的xpath与期望一致即为查询正确)。

2. 查看员工迟到早退

  1. 打开网站;
  2. 输入用户名;
  3. 输入密码;
  4. 点击登录按钮;
  5. 登录成功后在导航栏上点击Timesheets(断言点:Roster Time和Actual Time进行对比,具体写case时细讲);

OnlineStore(网上商城):
1. 查看物品被添加到购物车

  1. 打开网站;
  2. 输入用户名;
  3. 输入密码;
  4. 点击登录按钮;
  5. 登录成功后在导航栏上点击OnlineStore;

你也可以按照我提供的测试用例来完成工时表和网上商城两个模块的开发。

第三步,框架选择(framework selection)。我们用的是Selenium来写,这个没什么疑问。有些公司基于Selenium自己又开发新的框架工具,做得比较好的Robot Framework(用Python),Watir(用Ruby)等等。前三步虽然没什么技术要求,但它帮你确定了测试模块和范围,合理规划了整个项目,地位也很重要。

第四步是项目结构定位。我们不断地在修改加工框架,最后修成了现在这个样子:

结构包括以下几层:

Managers(测试中枢层):最高层,负责测试用例执行、选择、以及设置测试环境,比如用什么driver,打开哪个网站,执行哪些test case。涉及的包是com.testalliance.hrsystem.managers;

Tests(测试用例层):第二层,里面包含每个test case以及它们执行过程。涉及的包有com.testalliance.hrsystem.tests.login,com.testalliance.hrsystem.tests.employee。你会发现我就是按照项目分析得出来的模块来命名每一个tests子包;

Page Object(业务逻辑层):第三层,里面装了为实现某个功能而写的方法,比如登录(login),跳转(navigate),查看(view)等等,以及该功能实现过程所需要的操作,也就是关键字,比如点击(click),输入(enter),断言点(verify)。涉及的包是com.testalliance.hrsystem.pageobj;

Obj Repository(Object声明层):第四层,里面存储了所有网页元素的声明,在com.testalliance.hrsystem.objrepository中;

Utility(功能/应用层):第五层,指的是除业务逻辑层之外的功能性方法,比如读写文件、数据库连接、截图、email测试结果等等。

雏形的结构差不多就是这样,大家可以根据自己的需要自行调整,方便自己的框架。总之,听你老板的。

之后就是写代码、代码检查和支付了,基本上就没什么说的了。你可以在我们这个框架的基础上继续加工,比如用log4j抓运行信息,或是制作一个小的报告,或是重新设计配置文件满足更高的要求。当然,在修改框架之前我说过,市面上已经有很多公司设计了测试框架,它们的功能远比我写的这个更丰富、更强大,大家有空可以去研究研究,相信有了这几篇的帮助,理解一个框架应该不成问题了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容