基于Robot Framework的验收测试驱动开发
A-TDD(Acceptancetest-drivendevelopment)withRobotframework 在了解A-TTD之前,先了解下TTD。 测试驱动开发,英文全称Test-DrivenDevelopment,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。 A-TTD(验收测试驱动开发)非常接近T-DD。不同点在于A-TDD强调开发-测试-客户之间的协同,A-TTD是一种协同需求发现方法,利用示例和可自动的测试来明确需求,创建可执行用例方法。 ATTD(验收测试驱动开发)是敏捷和scrum经常采用的实践方法。框图如下: 1.Discusstherequirementinaworkshop(在专题讨论会中讨论需求) 2.Developthemconcurrentlyduringtheiteration(在迭代中并行开发) 3.Delivertheresulttothestakeholderforacceptance.(提交结果给利益相关方进行验收) Discuss(讨论):
如何讨论:假象系统完成,你会如何使用系统并期待它能实现什么。 研讨会的重点是讨论并发现需求,而不是实际的测试。 Develop(开发): 将示例提取成测试。 需求实现活动的开发(包括testlibraries,tables) 实现需求通过测试。 Deliver(交付): 当测试通过后,需求会被产品负责人和其他利益相关方评审,这可能导致新的需求产生或现有测试的变化
下图是一个更为详细的A-TDD框架图 A-TDD如何map到Scrum迭代开发
讨论:在具体的Sprint计划之前,团队,产品负责人,相关利益方需要在专题讨论会中澄清需求。 并行开发:在迭代开发的过程中,实现需求的开发,验证实现的测试需要在sprint的backlog中计划 交付验收:交付基于需求的产品和验收测试的case给相关利益方并组织Sprintreview讨论。
A-TDD例子示范(ATTDwithRobotFramework) Robot背景:RobotFramework是一个基于关键字驱动的自动化测试框架。具体信息参见 www.robotframework.org 现有一个供应商展销会的信息查询系统,通过该系统参观者可以用它来查询下面的信息:
案例一:供应商列表
一:需求澄清(产生具体的示例) 客户:需要把所有的供应商名单制作成一份“好的表格” 开发:能举得例子吗?什么是一份“好的表格”
客户:下面是一个例子: 讨论:发现假如有微小的不同,将会发生重复的输入(比如相同的供应商,不同的展位等)。 开发:数据库中什么样数据可以导出一份“好的供应商列表” 客户: 从上面的表格可以发现,相同的供应商由于展位信息不同,有美有logo,会存在一些重复。 二.需求示例提取成Robotframework的测试用例。 这里简单介绍下Robotframework,具体参见www.robotframework.org Robotframework包含4个表格:
下面是Robotframwork的调用过程: 测试用例和用户关键字是填在RobotFramework里面的,Framework调用testlibraries,它再调用待测系统。
现在从示例中抽取测试用例。 测试用例执行,发现keywords“Standinput”,“Isstandoutput”,“Hasnoextrastands”areundefined. 下面我用userkeyword实现“Isstandoutput”,“Hasnoextrastands”。 再次跑测试用例发现下面keyword没有定义:”Standout”,“Getcurrentlog”,“Getcurrentname”,“Getcurrentplace”,“Standsleft”.而这些关键字将会在testlibrary里面实现。
当前待测系统是用C语言写的,可以通过用户接口来调用或者直接调用。该案例采用直接调用(使用ctypesforeignlibrary)。testlibrary代码如下: 结论: A-TTD是一个相互协作的需求澄清工具,它使用可执行的用例去探索需求。需求-->需求例子表格-->Robot表格-->可执行用例(表格表述) RobotFramework是一个基于A-TDD思想的测试框架。它采用表格化的结构来表述一个用例,再通过testlibraries去实现用例的可执行话。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |