自动化测试实施规范

   在这篇文章中,主要讲述自动化测试过程中的一些规范性的建议,毕竟好的标准往往能够带来事半功倍的效果,以下仅供大家参考。

1、用例选取标准 

    该测试是否包含核心业务流程 

    该测试是否覆盖了最关键的特性路径 

    该测试的重复执行率较高 

    该测试是否定期运行,比如,经常重用,还作为回归测试或构建测试的一部分 对于手动运行这个测试是否太昂贵而不可能或是禁止的,如并行,渗透,耐力测试,内存泄漏等  。

    是否有对时间敏感的组件而必须自动化  

    该测试是否覆盖了最复杂的领域(通常是最有可能出错的领域) 

    使用相同步骤时,该测试是否需要许多数据组合  

    期望的结果是常数吗,比如每一次测试时都不会改变或不同?即使结果不同,是否可参数化(结果可预知)或可测出一个与期望结果的可接受的百分比(结果不可预知) 

    该测试是否非常耗时,如对成百上千的输出进行预期的分析 

    该测试是否运行在稳定的应用上 

    运行速度很慢的 case 不应该选取为自动化实现 

    自动化测试用例是否包含了手工测试的基线用例集 

    自动化的用例以正向用例为主,辅以个别重要的反向用例

2、对象识别规范

 

    优先选择 By.id,By.name,By.classname 

    优先选择当前页面中不重名的属性 

    如遇重名属性,使用 List 返回多个元素,使用时根据元素在 List 中的位置调用 

    极其难以定位的元素可以考虑使用 xpath 定位 

3、验证点规范 

3.1、验证点选取标准 

    自动化 case 的验证点需满足对手工 case 验证点的覆盖,这里说的手工 case 是专门为自动化测试选取的,验证点也是专门为自动化测试优化选取的,验证点选取原则如下: 

    要选取能覆盖当前 case 本质的主要验证点 

    尽量选取前台的明文验证点,即验证点在页面上可见,方便获取 

    前台无法验证的 case,需要去后台验证的情况下,需提供查询的表名与字段以及验证关系 

    新增类 case 的验证点需新增保存成功后重新查询比对查询结果得出 

    修改类 case 的验证点需修改保存保存成功后重新查询比对查询结果得出 

    数据计算类的验证点需要在数据驱动中提供预期结果 

    页面跳转类的验证点可以选 page title 或判断页面上比较特殊的元素的存在性

3.2、脚本断言机制 

    断言是 testng 中提供的一种判断验证点是否通过的机制,需要说明的是:如果某个断言失败,则当前 case 会自动结束并 fail 掉,不会继续执行当前 case 的后续步骤。断言可以添加在业务层即 business 层也可以添加到 case 层,可根据 case 的实际业务选择断言的位置,  为了代码风格的统一并尽量少的引入 jar 包,断言建议使用 testng 自带断言org.testng.Assert,尽量不要使用 junit 断言。 

    Testng 提供了多种断言方法,详见 Testng API Assert 类。建议优先选用下面的断言: 

    Assert.assertEquals (expected, actual);:期望值与实际值比较  

    Assert.assertTrue (Boolean expression):布尔表达式即为验证点的预期值与实 际值的关系 

    Assert.fail ("failing message"):对于可预知失败的验证点 

3.3、待测系统开发规范 

此章节主要罗列影响自动化测试编码的几个重要的规范,其余规范请遵循 Java Web应用开发通用编码规范。 

    元素的 ID 名有意义且尽量不要使用动态 ID 

    一个页面上的所有元素的 name 名尽量保证不重复 

    日期选择控件需要支持手动输入 

    文件上传控件的路径需要支持手动输入 

    尽量少的使用弹出页面 

    尽量避免使用 js 监听浏览器的关闭事件,会导致浏览器无法正常关闭 

4、自动化脚本编码规范 

4.1、基本信息 

    在每个脚本模块的最上面,必须写上脚本运行的软件和硬件环境(如 IE 版本、框架版本、数据库版本等)、项目名称、脚本编写人(使用英文名或中文拼音缩写)、脚本创建时间、脚本修改时间、修改说明、输入参数、输出参数、脚本描述等。 

4.2、常量命名规范 

    常量的命名应该全部用大写,使用"_"作为单词间的分隔符,单词尽量使用全名称,如,final int MY_SCORE = 100;另外,对常量的声明必须带上类型。 

4.3、变量命名规范 

    变量命名应该简单,应尽量使用缩写。如果是一般的值类型(如 int、String),则直接使用变量用途命名。尽量使用全名,例如,String name;如果是一般的临时性变量定义,应该尽可能地简单,例如,int i;如果名称由多个单词组成,则取每个单词的首字母,如 EntityManager 缩写为 em,ProcedureManager 缩写为 pm;如果名称由一个单词组成,则对单词进行分段取首字母,如 Entity 缩写为 et。缩写应该控制在 3 个字母以内,且尽量清晰。 

4.4、参数命名规范 

    参数命名的原则是全部用小写,如果参数包括两个或两个以上的单词时,首单词字母小写,其他单词首字母大写,如 stepName、stepDescription。 

4.5、方法命名规范 

    方法表示的是一个动作,所以它的结构应该是动词+名词,动词必须小写,后面的名称首字母大写,如 getMaterialCode。函数命名尽量不要使用缩写,而且它的名称应该使人一目了然,能够从名称就知道这个函数的功能,不要使用无意义的函数名称。当函数名称不足以表达其功能时,应使用在函数头部加上让调用者足够明白的注释。 

4.6、代码注释规范 

    注释务必做到准确简洁,能够充分表达代码实现的功能。 

4.7、空行 

    空行是区分代码块与块的间隔,在函数之间必须加上空行;而在函数内部,变量声明块和实现块(实现块指除变量声明外的其他代码)要使用空行来间隔,实现块的内部,通过空行来标识一个功能段。 

4.8、 缩进 

    必须严格执行缩进,变量声明块不缩进,实现块必须保证全部缩进(不可能有实现块是行首对齐的);对于基本的控制结构来说,必须要有缩进,如 IF、DO、FOR、WHILE块。 

4.9、续行 

    对于过长的语句来说,必须使用续行,续行的位置要有明显意义,例如,sql ="SELECT [code],[name] FROM [Person]"_&"WHERE [code] LIKE'001%'"。 另外,还要通过管理对象库来提高代码的可读性,通过修改命名来达到更加易读的

效果。对于使用比较频繁的代码块来说,最好将其写成函数,并尽量将功能复杂的大函数拆分成小函数。 

4.10、检查点检查 

    每个测试脚本都应该有相应的检查点及对应的检查结果输出。 

5、用例组织规范 

    如项目 case 总数量不多(1500 以内),为了提高回放通过率,建议使用低耦合的方式组织 case,即每个测试方法结束后将浏览器关闭。如果 case 数量较多,为了保证一次自动化的构建所占用的时间不会特别长以至于无法接受,建议将 case 改造为高耦合的方式 ,即每次启动浏览器后完成一系列相关的 case 执行后再关闭浏览器,case 执行顺序通过 dependsOnMethods 实现。构建两个测试基类,可实现在一个自动化构建中两种方式并存。 

低耦合方式组织 case 

    一个模块对应一个 class 

    一个测试对应一个@test,测试方法无需指定执行顺序,默认顺序或者随机顺序执行都可以 

    Case 可自定义属于 Groups,如 groups = { "uitest", "funtest" } 

    浏览器的初始化与全局元素等待在基类的@BeforeMethod 中定义 

    浏览器的关闭与其他资源回收在基类的@AfterMethod 中定义 

    Xml 中配置需要执行的 class 与 groups 即可 

    高耦合方式组织 case 

    一个模块下的有关联的一系列 case 对应一个 class 

    一个测试对应一个@test,测试方法需指定执行顺序,用 dependsOnMethods 实现 

    浏览器的初始化与全局元素等待在基类的@BeforeClass 中定义 

    浏览器的关闭与其他资源回收在基类的@AfterClass 中定义 

    Xml 中配置需要执行的 class 与 groups 即可 

6、结构分层规范 

6.1、Control 层 

    框架底层,定义web page的基本元素类型(含元素识别、属性、方法),勿轻易修改。 

6.2、Util 层 

    对 selenium driver方法的重定义与 封 装 ( Selenium2Proxy) 、自定 义 通 用 方法(CommonMethord)、公共case方法(CommonCase),第三方服务等,可根据需要自行添加 。

6.3、Page 层 

    以页面为单位,定义页面上的元素识别与基本动作(赋值、点击等),一个页面对应一个java文件 

6.4、Business 层 

一个页面对应一个java文件,定义该页面上的所有基本事务(查询、新增、删除等),事务是page层所定义元素的动作组合 

6.5 、Case 层 

    Case实现层,是business层、page层所定义对象的组合操作,并加入适当的断言(验证点)。 

    Case组织方式请参看“用例组织规范” 

6.6、Data 层 

    数据驱动层,定义case层中的测试方法所用到的数据 

6.7、Config 层 

    配置定义,含浏览器驱动配置、配置文件读取等,勿轻易修改。 

7、脚本回放规范 

    Selenium 脚本回放由快到慢:htmlunit>chrome>firefox>ie。

    Htmlunit 回放时无界面,对 js 支持不是很好,不建议使用 

    本地开发时选择适合自己的回放浏览器(不建议使用 IE6,推荐 IE8 和Chrome) 

    执行机批量执行选择可兼容的最快的浏览器进行回放 

    浏览器兼容性测试时选择需求规定的浏览器回放 

    建议控制每个测试方法的回放速度在 60S 之内,通过优化测试脚本实现 

    为防止因某个测试方法卡住很长时间影响整个自动化构建的持续运行,所有测试方法应该加上超时限制,如:timeOut = 120000(ms),时间长短根据当前case 的复杂程度人为判定 为提高元素识别的准确率和稳定性,自动化测试回放时浏览器默认最大化处理 为提高元素识别的准确率与识别速度,自动化测试回放时需设置全局的元素默认等待时间,implicitlyWait(10, TimeUnit.SECONDS),建议 10S

 

### 回答1: 我们首先要明确测试目标,确定测试策略,然后确定测试环境,最后确定测试细节和实施步骤。 针对测试目标,我们要确定测试的范围、测试的类型、测试的级别、测试的内容、测试的方法、测试的方式等。 针对测试策略,我们要确定测试的计划、测试的责任人、测试的时间安排、测试的工具、测试的文档等。 针对测试环境,我们要确定测试的硬件、测试的软件、测试的网络、测试的数据库等。 针对测试细节和实施步骤,我们要确定测试的准备工作、测试的过程、测试的结果、测试的报告等。 ### 回答2: 编写自动化测试实施规范需要考虑以下几个方面: 1. 目标和范围明确:明确测试的目标和范围,确定需要自动化测试的功能和模块,并规定测试的深度和广度。 2. 环境准备:配置好测试环境,包括测试工具、测试数据、测试服务器等。同时,需要制定一些预处理和清理工作,如数据库的备份和还原。 3. 测试用例设计:根据需求和功能特点,设计出详细、具体和可重复执行的测试用例。测试用例的设计要考虑功能覆盖率、边界值、异常情况等。 4. 测试脚本编写:根据测试用例,编写测试脚本以实现自动化测试的目标。脚本要保持可读性和可维护性,使用合适的命名规范和注释。 5. 自动化测试工具选择和配置:选择合适的自动化测试工具,并进行相应的配置。配置包括环境变量、路径设置、数据文件等。 6. 执行测试:按照规定的步骤和顺序执行测试脚本,记录测试结果和异常情况。对于失败的用例,需要进行分析和调试。 7. 结果评估和报告:对于每次测试的结果进行评估和分析,计算测试覆盖率和通过率。并生成详细的测试报告,包括测试结果、问题列表和建议。 8. 缺陷管理:及时记录并跟踪测试过程中发现的缺陷,并及时进行修复和验证。 9. 维护和更新:随着被测软件版本的迭代更新,需要对测试脚本进行维护和更新。同时,根据测试情况对自动化测试规范进行改进和优化。 10. 团队协作:自动化测试需要与开发、运维等团队协同工作,保持沟通和合作,及时解决问题和改进测试效率。 总结以上,编写自动化测试实施规范需要明确目标和范围,进行环境准备,设计测试用例,编写测试脚本,选择和配置测试工具,执行测试,评估结果并生成报告,进行缺陷管理,维护和更新测试脚本,以及与团队协作。通过规范化的自动化测试实施,可以提高测试效率和质量,减少人为错误和重复劳动。 ### 回答3: 编写自动化测试实施规范可以确保测试团队在进行自动化测试时能够按照统一的规范进行操作,提高测试效率和一致性。以下是一份可能的自动化测试实施规范: 1. 测试脚本编写规范: - 使用统一的脚本编写语言和框架,如Python+Selenium。 - 采用模块化和可重用的代码设计,减少重复劳动。 - 对脚本进行版本控制和文档化,方便追踪和维护。 2. 测试环境规范: - 针对不同的测试需求,搭建相应的测试环境,如虚拟机、容器等。 - 确保测试环境与生产环境的一致性,避免环境因素对测试结果的影响。 3. 测试数据管理规范: - 统一管理测试数据,包括测试数据的准备、维护、备份和恢复等方面。 - 确保测试数据的准确性和可重复性,以保证测试的稳定性。 4. 测试用例管理规范: - 使用测试用例管理工具,如TestRail,进行用例编写、执行和管理。 - 确保测试用例的可追踪性和可重复性,方便进行缺陷跟踪和回归测试。 5. 执行和结果分析规范: - 使用自动化测试执行工具,如Jenkins,对测试进行自动化执行。 - 对测试结果进行收集和分析,包括通过率、用例覆盖率等指标。 - 对执行失败的用例进行错误分析和复现,及时修复和反馈问题。 6. 报告及文档规范: - 生成测试报告,包括测试执行情况、缺陷报告和测试总结等。 - 确保报告标准化和易读性,方便项目相关人员查阅和分析。 7. 团队协作规范: - 组织定期的会议和培训,分享经验和技术,提高团队整体水平。 - 建立开放、积极的沟通氛围,促进团队成员之间的合作和协作。 8. 持续改进规范: - 定期评估自动化测试的效果和问题,进行持续改进。 - 关注新的技术和工具,及时引入和应用,提高测试效率和质量。 通过制定自动化测试实施规范,可以规范测试团队的行为,提高测试质量和效率,减少测试成本和周期。同时,也能够促进团队的合作与协作,提升团队整体水平和创新能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值