自动化在生活中处处可见,即自动的代替人的行为完成操作,例如自动洒水机,自动洗手液,超市自动闸门等。生活中的自动化案例有效地减少了人力的消耗,同时也提高了生活的质量。软件中的自动化测试也是如此,通过自动化测试有效地减少了人力的消耗的同时也提高了测试的质量和效率(人工测试结果是不可控的,机器测试是可控的)。
自动化测试主要由测试人员编写自动化测试脚本
增加新的功能:测试人员需要同步增加对应的自动化脚本
自动化测试报错:测试人员需要维护并解决自动化脚本问题
自动化测试的特点是“一次付出,终生回报”,自动化的主要目的就是用来进行回归测试
回归测试:
当开发一个具备丰富功能的新产品时,需要进行产品的整体回归测试。
当已有产品,对原产品增加了额外的新功能时,为了避免新增功能影响到历史的功能需要进行功能的回归
常见的面试题:
1、自动化测试能够取代人工测试吗?
回答:自动化测试不一定比人工测试更能保障系统的可靠性,自动化测试是测试人员手工编写,后续如果有功能的变更自动化也需要进行不定期的维护和更新。同时,手工测试仍然占主导地位。
2、自动化测试可以大幅度降低工作量?
回答:错误,自动化测试只是测试工作中的一小部分测试行为。
在面试题目中出现“一定程度上”和“大幅度”的表达方式需要注意,测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项。
然而自动化测试只是一个统称,自动化测试也分很多种,包括接口自动化,UI自动化等,其中UI自动化也分为客户端界面和web界面。例如发送请求就是接口层面的,涉及后端代码;客户端界面属于界面,涉及客户端代码;浏览器界面属于web界面,涉及前端代码;还有包括小程序界面等。客户端指的是PC端也就是电脑,而移动端指的是手机。
自动化测试金字塔
由图可见,越往上走,将投入更多的时间和精力,越往下走,获得的回报越大。其中,单元测试投入的精力很少,回报非常高;API/集成/组件测试 投入的精力较少,回报较高;UI自动化测试投入的精力较多,回报较少;手动/探索性测试投入更多的时间和精力,但回报最小。因此在企业中,越来越多人开始重视单元测试,编写大量的单元测试脚本。单元测试主要由开发人员来执行,也存在较少的公司会招聘专业的单元测试人员。一般服务器出现问题较多,而前端出现问题较少,因为一般前端出现的问题在手工测试的阶段就可以发现
实际在企业中,往往是“冰激凌蛋筒反模式”
实际在工作中,手工测试阶段才能发现更多的问题,投入的精力也更大。其次是前端自动化,可以发现的问题相较于接口自动化来说要多一些,因为很多后端问题都会体现在前端界面上。接口自动化关注的是根据请求检查相应结果(响应数据类型、数据)。单元测试是程序员自己写代码自己测,会导致测试不专业,不完整,开发人员的重心不在测试,即使执行了单元测试,也只是走个形式。
接下来我们来尝试一下自动化测试,来个简单示例:百度搜索关键词“迪丽热巴”并展开相关词条
可见web自动化测试和手工测试的步骤是一样的,因为web自动化测试就是模拟人的行为执行一系列的操作。那么我们一步步开始进行。首先,如何打开浏览器?手工测试是找到浏览器软件,鼠标点击启动(即手工驱动),而自动化测试则是靠驱动打开浏览器。程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver以本地化方式驱动浏览器。不同的浏览器需要不同的驱动才能够打开对应的浏览器,而不同版本的浏览器也需要不同版本的驱动。
因此我们需要下载相应的驱动,但通过下载官方驱动的方式可能会引发一系列的问题,比如每次浏览器更新都需要重新下载驱动,如果没有重新下载更新后的浏览器的驱动则会导致自动化运行时候报错。
那么是否有办法解决这些问题呢?我们可以通过使用驱动管理程序来解决问题。安装了驱动管理工具Webdriver-manager以后,不需要手动下载驱动程序,只需要在程序中下载对应的依赖,驱动管理程序就会自动下载正确的驱动。下载驱动程序之后,编写的自动化脚本可以借助驱动程序来打开对应的浏览器。
有了正确的驱动以后,那么接下来就是使用selenium来编写web自动化测试脚本,实现自动化测试了。