仲夏叶 | Stornado

生命就是用求知的欲望燃烧自己

自动化测试入门级用例编写建议

自动化测试

一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

进阶图谱

新手入门

任职要求

  1. 有良好的沟通和协调能力,理解能力、逻辑分析能力,有责任心和团队合作精神;
  2. 熟练掌握javascript工具;
  3. 掌握一种以上自动化测试工具;
  4. 熟悉掌握计算机语言,如:C/C++/C#,Java,JS等。

任职标准

  1. 参与日常项目测试,编写测试用例,执行测试,确保项目质量和进度;
  2. 追踪项目Bug修改情况,注意寻求解决问题方法;
  3. 编写自动化测试脚本,主动寻求任何提高测试效率的方法;
  4. 主动提供反馈和优化建议,持续改进项目质量;
  5. 参与项目性能测试和安全测试;
  6. 熟悉web端和移动端的自动化测试流程、方法;
  7. 熟练使用常用的自动化测试工具,具备独立完成并维护测试脚本的编写能力。

初级选手

任职要求

  1. 熟悉Java,Eclipse, IDEA等开发环境;
  2. 了解一种以上自动化测试框架如Selenium/Appium/Uiautomator/Uiautomation/Robotium。

任职标准

  1. 根据测试用例创建并提交测试脚本;
  2. 关注测试结果并及时更新测试脚本;
  3. 维护并更新测试框架及工具;
  4. 维护CI和测试环境。

高级专家

任职要求

  1. 移动客户端产品测试工作经验(Android,iOS);
  2. 熟悉常用各种测试工具,如:用例管理工具,bug管理工具,性能工具;
  3. 熟悉SQL语言以及MySQL数据库操作;
  4. 掌握Java编程;
  5. 有基于Selenium的自动化测试框架开发经验;
  6. 有性能测试经验,掌握Loadrunner工具;
  7. 有接口自动化脚本开发经验;
  8. 熟练使用linux,能独立完成各类搭建部署工作;
  9. 熟悉Oracle或MySQL等数据库;
  10. 善于发现、分析和总结问题,富有团队精神,责任心强,能适应高强度的工作。

任职标准

  1. 负责移动客户端应用的功能完整性测试,界面用户体验测试,兼容性测试;
  2. 参与产品分析过程,根据产品需求创建和维护测试用例,能够制定测试计划;
  3. 分析并预警项目风险,规范测试流程和相关制度;
  4. 完成测试用例的编写,用例执行,测试报告汇总等日常测试工作,确保产品发布质量。

资深达人

任职要求

  1. 熟悉WEB技术,如DOM,HTML/Css,JavaScript;
  2. 熟练使用至少一种语言,如:Java、Python、PHP、Perl、Ruby等;
  3. 熟悉Oracle/MySQL/SQL Server等至少一种数据库管理系统,能够熟练编写SQL语句;
  4. 熟悉常见的性能测试工具或自动化测试工具,并具备测试数据的分析能力;
  5. 熟悉基于 Linux 的开发环境,可以自己开发搭建自动化测试工具有效管理自动化脚本的开发和维护工作;
  6. 能根据业务特点选型合适的框架,有工具开发或框架经验。

任职标准

  1. 能够负责项目的测试工作,依据公司制定的测试工作规范,组织并保证产品质量以及测试工作的顺利进行;
  2. 参加并完成项目的测试工作,包括功能测试和自动化测试,其主要会更多职责担当应用系统的自动化测试工作;
  3. 开发自动化测试框架,提高测试用例的自动化程度;
  4. 研究和实施先进的测试框架和测试方法,提高测试效率;
  5. 制定自动化测试计划,撰写测试文档和测试报告,保证测试质量;
  6. 协调开发与运维进度,推动项目上线;
  7. 对测试工程师进行自动化测试方面的培训岗位要求。

提高ROI

想要提高ROI(Return On Investment,投资回报率),我们必须从两方面入手:

  1. 减少投入成本。
  2. 增加使用率。

针对“减少投入成本”

我们需要做到:

  • 减少工具开发的成本。尽可能的减少开发工具的时间、工具维护的时间,尽可能使用公司已有的,或是业界成熟的工具或组件。
  • 减少用例录入成本。简化测试用例录入的成本,尽可能多的提示,如果可以,开发一些批量生成测试用例的工具。
  • 减少用例维护成本。减少用例维护成本,尽量只用在页面上做简单的输入即可完成维护动作,而不是进行大量的代码操作。
  • 减少用例优化成本。当团队做用例优化时,可以通过一些统计数据,进行有针对性、有目的性的用例优化。

针对“增加使用率”

我们需要做到:

  • 手工也能用。不只是进行接口自动化测试,也可以完全用在手工测试上。
  • 人人能用。每一个需要使用测试的人,包括一些非技术人员都可以使用。
  • 当工具用。将一些接口用例当成工具使用,比如“生成订单”工具,“查找表单数据”工具。
  • 每天测试。进行每日构建测试。
  • 开发的在构建之后也能触发测试。开发将被测系统构建后,能自动触发接口自动化测试脚本,进行测试。

用例设计

通用

  • 简单、方便
    • 用例数据与脚本分离,简单、方便。
    • 免去上传脚本的动作,能避免很多不必要的错误和维护时间。
    • 便于维护。
  • 模板化
    • 抽象出通用的模板,可快速拓展。
    • 数据结构一致,便于批量操作。
    • 专人维护、减少多团队间的重复开发工作。
    • 由于使用了统一的模板,那各组之间便可交流、学习、做有效的对比分析。
    • 如果以后这个平台不再使用,或者有更好的平台,可快速迁移。
  • 可统计、可拓展
    • 可统计、可开发工具;如:用例数统计,某服务下有多少条用例等。
    • 可开发用例维护工具。
    • 可开发批量生成工具。

校验

在写自动化脚本的时候,都会想“细致”,然后“写很多”的检查点;但当“校验点”多的时候,又会因为很多原因造成执行失败。所以我们的设计,需要在保证充足的检查点的情况下,还要尽可能减少误报。

  • 充足的检查点
    • 可以检查出被测服务更多的缺陷。
  • 尽量少的误报
    • 可以减少很多的人工检查和维护的时间人力成本。
  • 还要
    • 简单、易读。
    • 最好使用一些公式就能实现自己想要的验证。
    • 通用、灵活、多样。
    • 甚至可以用在其他项目的检查上,减少学习成本。

健壮

执行测试的过程中,难免会报失败,执行失败可能的原因有很多,简单分为4类:

  • 被测系统出错,这部分其实是我们希望看到的,因为这说明我们的自动化测试真正地发现了一个Bug,用例发挥了它的价值,所以,这是我们希望看到的。
  • 测试工具出错,这部分其实是我们不希望看到的,因为很大可能我们今天的自动化相当于白跑了。
  • 测试数据错误,这是我们要避免的,既然数据容易失效,那我在设计测试平台的时候,就需要考虑如果将所有的数据跑“活”,而不是只写“死”。
  • 不可抗力,这部分是我们也很无奈的,但是这样的情况很少发生。

那针对上面的情况:

  • 参数数据失效
    • 支持实时去数据库查询。
    • 支持批量查。
  • IP进场发生变更
    • 自动更新IP。
  • 灵活、可复用
    • 支持批量维护。
    • 接口测试执行前生成一些数据。
    • 接口执行完成后销毁一些数据。
    • 支持参数使用另一条测试用例的返回结果。
    • 支持一些请求参数实时生成,如token等数据,从而减少数据失效的问题。

通过这些手段,提高测试用例的健壮性,让每一条自动化测试用例都能很好的完成测试任务,真正发挥出一条测试用例的价值。

易用

  • 简单
    • 功能强大,但要人人会用。
    • 非技术人员也要会用。
  • 减少代码操作
    • 让自动化开发人员注意力能更多的放在用例本身,而不是浪费在无关紧要的开发工作上面。
  • 还要
    • 配置能复用。
    • 通用、易学。
    • 一些数据能自动生成。

参考

  1. w3cschool自动化测试
  2. 美团接口自动化测试实践