导语
随着互联网行业的兴起与高科技发展,测试手段也层出不穷,对测试能力与技能的水平要求也越来越高,虽然离不开基础的黑盒测试,但现在更多新颖的测试手段都在向前走,测试的重心也从原来的大后方向前推移,掌握编码能力成为了新的方向,本文主要围绕目前互联网热门语言Python进行探讨,希望可以给大家带来一些灵感或启发。
为什么大多数都用Python做自动化
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,经过大量工程师的补充,pip库已经非常完善小到文档读写,大到大数据记忆学习,使用方便、结构简单,适合没有基础或者是基础薄弱的同学学习。
自动化可以帮助测试做哪些工作
1.冒烟测试,通过编辑成用例,翻译成脚本快速执行。
2.回归测试,通过编辑成用例,翻译成脚本快速执行。
3.制作测试工具,如性能监控、monkey控制、文档统计、压力测试等等。
4.批量制作数据,如向kafka、mysql、ch等插入数据。
5.发送、接收数据,如通过tcp、udp等方式发送接收数据。
6.模拟信号,如模拟车载旋钮信号、模拟点击屏幕信号、模拟语音数据等。
7.快速填充、读写文档,如Excel、TXT、Word、CSV等。
传统黑盒测试的优缺点
传统测试 的不足之处:
人工测试耗时长
人员投入成本高
回归测试压力大
传统测试 的优点:
对于数据的准确性测试
对于界面的美观、UI布局的合理化测试
业务能力的满足程度测试
BUG的深度挖掘测试
总结:
自动化不能完全替代手工测试,两者相辅相成,有机结合,充分利用优势。
什么样的项目/场景适合做自动化测试
持续测试,长期维护的产品,更新迭代频繁,使用自动化测试更能准确并且快速的响应。
复现BUG,测试过程中遇到手工测试很难完成或者手动没法完成的测试,使用自动化完成,例如算法测试等场景。
独立测试环境,避免人员操作产生干扰。
如何设计自动化测试结构?
我们以web自动化测试(引用selenium)为例,需进行数据交互、逻辑交互、页面交互。
规划三个阶段来完成自动化脚本的开发内容:
第一个阶段为框架搭建阶段。
第二个阶段为测试用例开发阶段。
第三个阶段运行脚本、优化完善自动化测试过程解决遇到问题。
采用Python+selenium+unittest组合方式进行。
包含:配置文件、Case、测试报告、测试数据、模块文件。
报告展示
手动与自动化测试成本对比
接下来以真实场景(web项目)来设计自动化测试,从中对比传统黑盒测试与自动化测试的差异。
通过遍历生成脚本,使用成本不高,每次在新版本发布后,可以针对对修改过的页面进行遍历,收集更新脚本,目前最大的工作量是脚本需要筛选一次,将部分动态变化的脚本去掉,运行更加稳定。每次版本更新发布,自动遍历修改过的页面,自动更新脚本,零成本脚本生成到运行出结果。
以下内容使用自动脚本进行测试,减少人工测试工时。
1、增删改查操作
2、页面超链接、跳转
3、导入、导出操作
4、提示信息验证
5、翻页功能验证
6、持续集成(通过持续集成方式,自动引入自动化测试,无需人工参与)
7、数据准确度验证(校验ES、mysq等插件数据)
8、差别邮件分发(根据发生bug所属模块发送对应开发者)
成本计算
黑盒测试:无培训成本、开发成本,需要手动测试,需要时刻留意测试结果,无法参与其他工作等。
自动化测试:有培训成本、开发成本,无需人力参与,自动执行、自动生成报告、自动转发结果邮件等。
成本对比
假设项目已经完成系统测试,准备开启迭代回归测试,按照场景设置4轮回归测试,生成以下对比数据
参与项目人数2人,0基础。
一轮回归前需要投入的人力:
培训10天每天3小时(两人总计60小时),编写测试用例15天每天8小时(240小时)
一轮回归测试执行耗时:
1.自动化测试无需人力参与,支持自动启动、手动启动,几乎0成本,当晚运行次日出结果,自动生成测试报告。
2.手动测试投入2人约4天完成功能覆盖(两人总计64小时),约4天后出测试报告。
总结
综上所述,自动化测试,前期投入较大,但后期回报率高。
四轮回归测试,自动化测试从 0 到 1总共耗时:300小时 手动测试从 0 到 1总共耗时:256小时,从上面的数据看,短期内手动测试反而比自动化测试要节约时间,但从长远的角度来看,自动化测试的成本远小于手动测试,并且测试完成时间比手动要快,留给开发修改问题的时间也变得充裕,自动化测试可以实现全用例80%的功能覆盖,一些特殊手顺还是需要手动测试,但满足基本功能的测试可以绰绰有余。
Python有哪些好的开源案例或工具
上面我们提到了在测试角度上Python能够帮助做哪些工作,由这些工作也衍生了许多非常好的开源项目、工具、框架,下方根据不同的测试方向列举一些比较好的案例。
TestComplete为Windows、.NET、Java和Web应用程序提供了一个特性全面的自动测试环境。将开发人员和QA部门人员从繁琐耗时的人工测试中解脱出来。 TestComplete测试具有系统化、自动化和结构化特性,支持。NET,Java,Visual C++, Visual Basic, Delphi, C++Builder 和web应用程序。
Selenium是一个用于 Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera 等。Selenium 是一套完整的 Web 应用程序测试系统,包含了测试的录制(Selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。
Rebootframework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。
Uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试,封装了谷歌自带的uiautomator测试框架,提供便利的python接口,用它可以很便捷的编写python脚本来实现app的自动化测试,之前编写了相关的文档,感兴趣的同学可以联系我。
BBScan是一个迷你的信息泄漏批量扫描脚本。规则字典非常小,但尽量保证准确和可利用性。
特性:小字典、可以自动扫描 Target/Mask 这样网络中所有的主机、误报率小。
pip-audit是一款功能强大的安全漏洞扫描工具,该工具主要针对Python环境,可以帮助广大研究人员扫描和测试Python包中的已知安全漏洞。pip-audit使用了PythonPackagingAdvisory数据库PyPIJSONAPI作为漏洞报告源。
1、支持对本地环境和依赖组件(requirements风格文件)进行安全审计;
2、支持多种漏洞服务(PyPI、OSV);
3、支持以CycloneDX XML或JSON格式发送SBOM;
4、提供人类和机器均可读的输出格式(columnar、JSON);