05_RobotFramework怎么写好用例

github地址:https://github.com/robotframework/HowToWriteGoodTestCases/blob/master/HowToWriteGoodTestCases.rst,这个文档是官方描述如何写好用例的,主要内容包括:命名规范、文档使用、用例结构组织等。

1.命名

1.1 测试用例集命名

  • 通常一个robot文件为一个测试用例集,如:test_login.robot,那么它的测试用例集名称就是Test Login.
  • 所以,测试用例集的命名符合以下3个规则:

1.会去掉扩展名robot.
2.会把下划线转换为空格.
3.会将每个单词的首字母大写.

  • 测试用例集的命名长度是没有限制的,但是测试用例集是以文件形式存在于操作系统的文件系统中,当测试用例集的命名超过操作系统支持的最大长度或字符不满足操作系统要求,是会出现问题的。

1.2 测试用例命名

  • 测试用例命名时,需要结合测试用例集的命名,使测试用例集名称+测试用例名称能够充分描述一个用例的功能。
  • 因此,在命名时,需要注意,名称不要冗余,见示例图:
测试用例命名

1.3 关键字命名

  • 关键字命名应该是清晰的描述性语言,用于解释关键字的作用,而不是怎样用。
  • 示例见图片:
image.png

1.4 setup and teardown命名

  • 采用已有的关键字进行命名操作
  • 当有多个步骤,用AND连接
  • 当这个用例集的setup和teardown只需要运行一次时,需要加上关键字Run Keywords
image.png

2.文档

2.1 测试集文档

  • 对测试集添加文档说明,有助于明确测试用例集的功能及背景信息
  • 测试集的文档信息中,应该包括:创建原因、执行环境信息等,为了能更好的了解背景信息,也可以添加链接
  • 当不需要测试集的文档描述时,可以不必添加
  • 测试集的描述应该简洁清晰,不需要添加详细的测试用例信息
image.png

2.2 测试用例文档

  • 测试用例通常不需要文档说明
  • 测试用例的功能由用例名称和用例集的描述进行体现,因此用例名称需要简洁贴切
  • 如果需要对用例进行描述,可以添加[Tags]对用例进行一个简要说明
  • 最后,测试用例文档描述并非不可用哦,需要用Documentation才能清楚描述的话,还是可以采用的
image.png

2.3 关键字文档

  • 关键字通常不需要进行文档描述
  • 使用简洁明确的关键字信息就可以了

3.测试集结构

  • 一个测试集中的测试用例应该有相关性,比如:能够用同一组setup/teardown
  • 除数据驱动类的用例外,一个测试集中的用例最好不要超过10个
  • 测试集中的用例应该保持独立性,用例之间不要关联,如:用例2需要用到用例1成功才能执行,不能存在这类关联性
  • 但有时,用例之间的关联性是不能避免的,这时应该如何处理呢?
    1.情况1:当用例2需要用到用例1的结果,但如果将用例1放入setup的执行步骤中,会导致所有用例的初始化时间过长,可以考虑关联;
    2.但是不要使用例关联的链过长,如:用例4关联用例3、用例3关联用例2、用例2关联用例1,这类过长的关联链很容易出现问题,在规划用例时,需要采用一些手段进行用例的合理规划;
    3.当用例关联时,需要用到上一个用例的结果,可以采用内置关键字${PREV TEST STATUS}进行验证。

4.测试用例结构

  • 测试用例应该简洁明了,易于理解和阅读
  • 一个测试用例应该验证一个功能点或一个测试点
  • 设置合适的用例级别,如用于:冒烟测试或全量测试
  • 用例通常分为2种类型:工作流程用例和数据驱动用例

4.1 流程用例

  • 流程用例通常包含以下几个要素:前置条件、执行步骤、断言验证、环境恢复
image.png
  • 用例是由关键字进行描述的,关键字清晰明确,不需要文档或注释去描述用例实现的功能是什么
  • 不同的用例应该有不同的测试级别,一个用例只能有一个测试级别,通常E2E(指一个完整功能点)的用例拥有较高级别
  • 测试用例的风格:
    1.更多的低级别的详细信息的技术测试和集成测试;
    2.将“可执行规范”作为需求文档;
    3.使用领域特定语言;
    4.用例易于理解,客户或产品经理等都能看懂用例描述的功能。
  • 测试用例中没有复杂的逻辑,如:条件判断和循环、变量的赋值使用合理、用例看起来不应该像脚本。
  • 每个用例的步骤不要超过10个,最好少于10个;
  • 工作流测试的用例示例,如图:
image.png

4.2 数据驱动用例

  • 每个用例中,都有一个高级别的关键字:
    1.不同的参数需要创建不同的用例;
    2.一个测试用例中,可以采用多组参数来运行同一个关键字多次,去验证多个相关的变化。
  • 如果关键字是以用户关键字实现的,那它通常在工作流用例中有一个相似的流程:除非在其他地方需要,否则最好将它与使用它的测试创建在同一个文件中。
  • 数据驱动用例推荐使用测试模板,这样可以减少关键字重复,更易于在同一用例中使用多组变量数据;
  • 由于使用的参数通常不止一个,建议在用例的标头对使用的参数进行命名,这样更易于阅读,如图所示:
  • 如果一个用例需要使用大量的测试数据,建议将数据保存在一个外部文件中,读取后进行参数化操作
  • 数据驱动示例如图:
image.png

5.用户关键字

  • 关键字应该易于理解,不需要文档或注释去描述用例实现的功能是什么
  • 关键字具备不同的抽象级别
  • 关键字中允许有程序逻辑,如:循环和判断
  • 但是复杂的逻辑最好放在Library中,通过关键字去调用,不要在用户关键字中去实现复杂逻辑

6.变量

  • 变量用于封装过长或者过于复杂的值
  • 在命令行中进行参数传递时,可以采用--variable选项
  • 在关键字之间传递信息

6.1 变量命名规则

  • 短小清晰
  • 在变量表中可以使用文档或注释对变量进行说明
  • 变量的使用说明:
    1.以小写的单词作为局部变量的命名;
    2.以大写的单词作为全局变量的命名;
    3.单词之间可以使用空格或下划线进行分割;
  • 建立在变量列表中,设置动态的变量,如:列表、字典格式的变量
  • 设置动态变量通常使用内置关键字: Set Suite Variable
  • 定义变量时,同时需要进行初始化操作


    image.png

6.2 传递和返回值

  • 常见方法是,将关键字返回的值传递给变量,再将变量以参数形式传递给其他关键字:
    1.传递过程应该明确且易于遵循;
    2.创建独立的关键字,使关键字易于复用;
    3.在测试用例级别上使用领域性语言,使用例看起来不像程序;
  • 为了避免用例像程序语言风格,以及破坏关键字的复用性,可以将需要传递值的功能写入Library或者使用内置关键字 Set Test Variable进行存储。
image.png

7.避免使用sleeping

  • 使用sleeping,极易造成同步测试的不稳定;
  • 通常,安全边界会导致过长的睡眠时间;
  • 因此,我们可以使用内置关键字代替sleep:Wait Until Keyword Succeeds
  • 但是有时,对于逻辑功能实现,使用sleep也是一个有效的解决方案,所以要善于使用,但是不要用于调用频繁的用户关键字中。

总结

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

推荐阅读更多精彩内容