自动化测试用例的编写是实现项目自动化的核心,合理的用例设计是保证自动化效益和实用性的关键,也直接决定了自动化脚本是否具备可扩展和可维护性。由此,本篇文章主要为大家介绍了测试用例编写的规范和注意事项。
  一、自动化测试用例选择
  自动化测试主要应用于基础功能的验证和回归,对于在项目迭代过程中不断修改的功能来说,手工测试的效率是大大高于自动化测试的。因此,我们在进行自动化之前,要挑选基础功能来进行自动化。在这个过程中,我们可以从手工测试用例中进行挑选,也可以专门为自动化编写一套用例。
  在自动化初期,建议从手工测试用例中进行挑选。一方面手工测试用例的覆盖度最为全面,可以保证测试的全面性;另一方面,也会提高测试效率。我们挑选用例的原则是:清晰、简单、基础、改动小的功能。
  二、自动化测试用例编写
  挑选完合适的用例之后,就是通过代码编写自动化用例的过程。这个过程主要包括数据预置、用例编写和用例后置三个步骤。
  1、数据预置
  在进行用例编写之前,我们需要准备一些数据,保证用例能够真正的执行起来。比如,我们在测试一个网页登录功能,我们需要系统的URL参数、需要一个可以登录的用户名和密码;我们需要测试删除文件的功能,就需要提前上传一个文件,这个文件可以提前预置,也可以在执行删除操作之前,执行一个上传操作;通过哪种方式预置数据,需要根据项目的实际情况选择。我们将数据预置和用例编写分开是为了减少用例之间的耦合度,保证上一个用例执行的结果不会对下一条用例产生影响。此外,有利于用例的维护和修改。
  2、用例编写
  我们准备好测试数据后,就要开始自动化用例的编写,在编写过程中需要注意以下几个方面:
  熟悉业务。自动化测试是为了业务系统服务的,只有充分的了解业务,明确如何将手工测试用例通过自动化实现,才能保证用例质量。
  使用变量。通常,我们需要将变量统一管理,写入配置文件,这样方便统一修改。例如:我们需要测试一个业务系统,这个系统包含测试环境和生产环境,我们需要将自动化脚本灵活的适用于每个环境,这个时候,我们就需要将url等系统参数写入配置文件,方便修改和迁移。
  写明操作过程。在编写操作过程时,代码注释必不可少。每一步都是怎么操作的,需要验证什么功能。
  设置检查点。在编写测试用例的过程中,需要设置合理的检查点,添加断言,判断用例是否执行成功。在用例执行后,将预期结果和实际结果进行对比,输出测试结果,明确功能是否执行成功,是自动化测试的关键。不添加断言的用例执行,是没有任何意义的。
  3、用例后置
  用例后置时指用例执行完成之后的操作,与数据预置相对应,是为了自动化能够循环执行。比如:我们需要测试文件上传功能,在用例执行通过之后,需要将文件删除,便于下一次自动执行。
  此外,我们应该在用例后置之后进行一些合理的检查,比如上个步骤中,我们如果删除文件失败的话,依然会影响下一次的操作。因此,我们需要结合项目实际情况,对一些核心文件进行检查,保证自动化的顺利执行。
  三、用例编写规范
  在用例编写过程中,我们需要遵守一些规范来提高用例质量。主要包括:连续性、独立性、完整性、可重用性、可维护性和逻辑分块。
  1、连续性
  保证用例之间的连续性,保证用例可以批量执行。比如,我们在进行UI自动化时,要保证上一个操作之后进入下一个操作的执行界面。
  2、独立性
  用例之间要相互独立,保证上一个用例的执行结果不会对下一个用例的执行产生影响。这样,才能更清楚的定位到问题。此外,需要保证一个用例的执行不会修改到下一个用例的数据。
  3、完整性
  每一个用例都需要有数据准备、操作过程,断言和用例后置的全部过程,能够根据用例明确具体的测试内容。
  4、可重用性
  类似于开发的公共代码,我们要抽象出自动化测试的原子操作,提供给其他用例调用,这样可以减少开发成本
  5、可维护性
  用例名要清晰,做到见名知意;对每个步骤、每个变量添加明确的注释;对哪些是预置数据、哪些是检查项、预期结果都有明确的说明;用例步骤要简单明了
  6、逻辑分块
  根据一定的规则进行逻辑分块(例如可以根据不同功能划分),保证逻辑块的独立性,可以抽出单个功能用例进行验证

这可能是你少有的能get到测试用例编写精髓的机会!的更多相关文章

  1. C#单元测试面面观

    标题有点标题党,但相信各位看完这篇文章一定会所收获,如果之前没有接触过单元测试或了解不深通过本文都能对单元测试有个全新认识.本文的特点是不脱离实际,所测试的代码都是常见的模式. 写完这篇文章后,我看了 ...

  2. 在Android中,使用Kotlin的 API请求简易方法

    原文标题:API request in Android the easy way using Kotlin 原文链接:http://antonioleiva.com/api-request-kotli ...

  3. 【转载、推荐】不要自称是程序员,我十多年的 IT 职场总结

    注评:一气读完后,有些和我的观点类似.这篇文章显然是外国老写的,但是不妨碍我们的跨国交流. 如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是一门介绍行业现实的入门课,因 ...

  4. AngularJS介绍

    AngularJS介绍–AngularJS的前世今生 AngularJS是什么 在Web开发领域,我们一般使用HTML作为前端页面元素的声明式语言,使用CSS技术作为展示样式的描述语言,JavaScr ...

  5. AngularJs2 学习之路-笔记1-Atscript Ts ES6包含关系

    Atscript 这门新的语言是由谷歌的Angular团队弄出来的 就是为了编写ng2.0 ng2是个极具前瞻性的尝试 这种激进的革新在于对未来标准的迎合 ng2的标准包括了如下:1 module 2 ...

  6. 用Netty开发中间件:高并发性能优化

    用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...

  7. T检验与F检验的区别_f检验和t检验的关系

    1,T检验和F检验的由来 一般而言,为了确定从样本(sample)统计结果推论至总体时所犯错的概率,我们会利用统计学家所开发的一些统计方法,进行统计检定. 通过把所得到的统计检定值,与统计学家建立了一 ...

  8. Android开源项目分类汇总

    目前包括: Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...

  9. android 很多牛叉布局github地址(转)

    原文地址 http://blog.csdn.net/luo15309823081/article/details/41449929 点击可到达github-------https://github.c ...

随机推荐

  1. idea如何打开右侧工具栏

  2. BZOJ 3217: ALOEXT (块状链表套trie)

    第一次写块状链表,发现还挺好写的,但是一点地方写错加上强制在线就会各种姿势WA/TLE/RE爆- 想法就是分块后,在每一个块上维护最大值和次大值,还在每一个块上维护一棵trie树来求异或最大值.散块直 ...

  3. 【Winform-最大化窗体】Winform设置窗体最大化,填满整个屏幕

    设置窗体最大化,填满整个屏幕//this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;//this.MaximumSize = Screen. ...

  4. shell爬取斗图网

    #!/bin/bash read -p "请输入要爬取的页面数(默认为10):" page_num page_num=${page_num:-} echo $page_num re ...

  5. JavaScript变量、作用域和内存问题总结

    ㈠理解基本类型和引用类型的值  ⑴JavaScript变量可以用来保存两种类型的值:基本类型值和引用类型值. ⑵基本类型的值源自以下 5 种基本数据类型:Undefined.Null.Boolean. ...

  6. 2、CString与string借助char *互转

    CString是MFC中的类,MFC前端界面中获得的字符串是CString类.标准C/C++库函数是不能直接对CString类型进行操作的. string是C++中的类. 安全性 CString &g ...

  7. xml------文件打开样式

    -----添加css样式修饰 引入css样式 浏览器展示 -------- 在服务器上通过 XSLT 转换 XML xsl文件 样式展示

  8. 洛谷——P2058 海港

    题目传送 由于于题目保证输入的ti是递增的,所以发现当我们统计完一艘船的答案后,这个答案多少会对下一艘船的答案有贡献.同时还发现如果对每个艘船都记录他的乘客在整个数据出现的所有国籍中相应出现的次数,在 ...

  9. javascript数组的增删改和查询

    数组的增删改操作 对数组的增删改操作进行总结,下面(一,二,三)是对数组的增加,修改,删除操作都会改变原来的数组. (一)增加 向末尾增加 push() 返回新增后的数组长度 arr[arr.leng ...

  10. STL漫谈

    从现在开始,想写一个关于STL工具的各种tip类的东西,记录下那些细节,以免以后使用STL工具时出错. 1.关于map,如果需要第一个键值需要放进一个结构体,那么结构体是需要写好其自定义的排序规则的, ...