1. 首页 > 自动化测试工程师

自动化测试工程师,自动化测试基本流程

如何成为一名高级自动化测试工程师

优秀的测试人员可以做的事情可以包括如下3点:

  • 由单纯的测试变成项目质量保证工作

  • 持续集成探索和推动和自动化测试技术研究

  • 测试相关工具的开发


  • 1、我们先来讲第一点,由单纯的测试变成项目质量保证工作

  • 测试,从狭义的角度来讲,包括如下这些环节:

  • 测试计划和测试用例编写-测试执行-质量报告书写

  • 测试人员一般会在开发阶段就进行测试计划和测试用例的编写和准备工作;在测试阶段,我们一般先会做功能测试,等项目功能基本稳定,bug较少了,就开始做兼容性测试、性能测试、安全性测试。兼容性测试保证了产品在多浏览器、APP在产品在不同机型下的兼容性;性能测试保证了产品在海量用户大流量下的服务能力;安全测试能发现产品可能会被攻击的各个隐患。做完了这些测试以后,人员发布质量报告,产品上线。

  • 不过,优秀的测试人员需要向上游和下游拓展测试的领域,把自己放在“质量保障”的角色上,推动整个项目组一起保证质量,上游的工作包括:

  • 在产品刚立项、进行需求确认的时候,测试人员就会参与进去,仔细地Review需求,看需求是不是完整、有没有漏洞,这个时候还没有进入正式开发,修改需求对于项目组来说代价是最少的。在这个环节,测试人员凭借缜密的推演、发散性的思维,往往能发现很多需求的漏洞,提高了项目的整体效率。

  • 另外,测试人员在完成测试计划、测试用例以后,会邀请开发、策划一起来评审测试用例,在这个环节,由于测试人员把每个需求如何细化测试都体现在了用例里面,就相当于再次把需求分析了个透,往往还能发现很多需求的漏洞。这也是提早发现需求漏洞的有效环节。

  • 我们知道,代码的质量归根结底是由开发保证的,测试做的工作,只是发现Bug让开发修复。如果一个花瓶,一开始就是很完美的;另一花瓶经过了各种修补,看起来比较完美,大家觉得哪个花瓶比较好?当然是第一个花瓶。所以,测试人员应该站在质量保障的立场,想办法跟项目组沟通、给开发提供工具,让开发自己把质量保障工作做好。比较可行的一些方式是:提供一些手工用例让开发自测;给一些自动化的接口和UI测试代码让开发自测;部署静态代码检查工具,并推动开发分析和修改发现的问题;有一些做得好的项目已经实现了持续集成,也可以尝试。

  • 下游的工作包括:

  • 在产品完成了测试以后,就是发布的环节了,测试人员在发布的环节也能发挥作用,首先,测试人员为了部署测试环境,研究自动化部署的技术,可以把上线部署的环节也自动化,以前需要2个小时的部署环节压缩到半个小时甚至更少,而且更加准确可靠。

  • 如果有些版本修改比较多,上线的质量风险大,测试人员会跟产品一起制定灰度发布的方案并在技术上进行实现,让版本先面向一小部分用户开放,如果发现Bug了,影响的用户也比较小,Bug改掉以后,再逐渐扩大用户范围。

  • 另外,优秀的测试人员还会发动项目组的其他人一起来保证项目质量,比如推动开发进行代码Review;引入冒烟自测流程,让开发先自测以后再提交给测试做冒烟测试;通过在项目组分析Bug,让开发提高自测,降低Bug数量等;引入策划、交互、视觉在测试阶段进行走查,等等各种措施。

  • 2、持续集成探索和自动化测试技术研究

  • 业界都在说持续集成,那持续集成究竟是个什么鬼呢?

  • 持续集成原本的意思是让开发每提交一次代码就自动化测试一次,如果自动化测试发现问题了,测试用例就会失败,开发就会马上发现这个失败,并修改代码。

  • 要做到持续集成可有很多工作要做。

  • 首先就是编译环节,要把所有编译的环节都自动化起来,开发每次提交代码都能进行自动编译;

  • 编译完成后,就是静态代码检查的环节,通过静态代码检查的工具检查代码的问题,比如,数据库连接池没有释放,参数不匹配等。

  • 静态代码检查完成后,就是单元测试了,单元测试用例一般是开发人员或者测试人员编写,或者开发和测试合作编写,保证的是开发内部函数的正确性。一个健康的自动化测试方案中,单元测试用例的占比是最高的。

  • 然后就是接口测试,一般保证的是后端开发提供给前端开发的HTTP接口,接口一般也比较稳定,用例比较容易维护,所以,接口测试的自动化占比也可以做到很高。

  • 在接口测试的上层就是针对用户界面的UI测试了,就像测试人员手工执行一样,UI自动化测试能操作页面的元素,完成自动化。不过,由于用户界面常常要重构,所以我们常常会控制UI自动化测试的规模,只覆盖主干的用例。

  • 优秀的测试人员可以把自己的工作尽量自动化,并用持续集成框架串起来,提高工作效率和质量。

  • 3、测试相关工具的开发

  • 优秀的测试人员会开发其他好用、趁手的工具来提高工作效率,比如数据自动生成、报表自动生成、报bug工具等。

  • 其实归根结底就是一句话:测试人员最核心的工作就是保障项目的质量,各类测试流程、技术、工具和平台的发展让我们可以更好地保证项目的质量。

一个自动化工程师应该具备什么能力?

全国注册电气工程师(发输变电、供配电)执业资格考试(考试简介)
根据《关于贯彻执行《注册电气工程师执业资格制度暂行规定》和《注册电气工程师执业资格考试实施办法》的通知》(京人发[2003]57号)文件精神,从2003年5月1日起,国家对从事电气专业工程设计活动的专业技术人员实行执业资格注册管理制度,纳入全国专业技术人员执业资格制度统一规划。
注册电气工程师,是指取得《中华人民注册电气工程师执业资格证书》和《中华人民注册电气工程师执业资格注册证书》,从事电气专业工程设计及相关业务的专业技术人员。
北京市注册电气工程师执业资格制度,纳入北京市专业技术人员执业资格制度的统一管理。
一、组织领导
北京地区注册电气工程师执业资格考试工作,由北京市人事局和北京市规划委员会共同组织实施。北京市人事局负责考务管理和资格证书颁发工作,北京市规划委员会负责考前培训和注册管理工作。
二、适用范围
适用于从事发电、输变电、供配电、建筑电气、电气传动、电力系统等工程设计及相关业务的专业技术人员。
三、考试时间及科目设置
注册电气工程师执业资格考试实行全国统一大纲、统一命题的考试制度,原则上每年举行一次。
考试分为基础考试和专业考试。基础考试分2个半天进行,各为4小时;专业考试分专业知识和专业案例两部分内容,每部分内容均分2个半天进行,每个半天均为3小时。
基础考试为闭卷考试,考试时只允许使用统一配发的《考试手册》(考后收回),禁止携带其它参考资料;专业考试为开卷考试,考试时允许携带正规出版社出版的各种专业规范、参考书和复习手册。
四、报考条件
(一)凡中华人民公民,遵守国家法律、法规,恪守职业道德,并具备相应专业教育和职业实践条件者,均可申请参加注册电气工程师执业资格考试。
(二)考试分为基础考试和专业考试。参加基础考试合格并按规定完成职业实践年限者,方能报名参加专业考试。
(三)符合报考条件第(一)条规定的要求,并具备下列条件之一者,可申请参加基础考试:
1、取得本专业或相近专业大学本科及以上学历或学位。
2、取得本专业或相近专业大学专科学历,累计从事电气专业工程设计工作满1年。
3、取得其他工科专业大学本科及以上学历或学位,累计从事电气专业工程设计工作满1年。
(四)基础考试合格,并具备以下条件之一者,可申请参加专业考试:
1、取得本专业博士学位后,累计从事电气专业工程设计工作满2年;或取得相近专业博士学位后,累计从事电气专业工程设计工作满3年。
2、取得本专业硕士学位后,累计从事电气专业工程设计工作满3年;或取得相近专业硕士学位后,累计从事电气专业工程设计工作满4年。
3、取得含本专业在内的双学士学位或本专业研究生班毕业后,累计从事电气专业工程设计工作满4年;或取得相近专业双学士学位或研究生班毕业后,累计从事电气专业工程设计工作满5年。
4、取得通过本专业教育评估的大学本科学历或学位后,累计从事电气专业工程设计工作满4年;或取得未通过本专业教育评估的大学本科学历或学位后,累计从事电气专业工程设计工作满5年;或取得相近专业大学本科学历或学位后,累计从事电气专业工程设计工作满6年。
5、取得本专业大学专科学历后,累计从事电气专业工程设计工作满6年;或取得相近专业大学专科学历后,累计从事电气专业工程设计工作满7年。
6、取得其他工科专业大学本科及以上学历或学位后,累计从事电气专业工程设计工作满8年。
(五)截止到2002年12月31日前,符合下列条件之一者,可免基础考试,只需参加专业考试:
1、取得本专业博士学位后,累计从事电气专业工程设计工作满5年;或取得相近专业博士学位后,累计从事电气专业工程设计工作满6年。
2、取得本专业硕士学位后,累计从事电气专业工程设计工作满6年;或取得相近专业硕士学位后,累计从事电气专业工程设计工作满7年。
3、取得含本专业在内的双学士学位或本专业研究生班毕业后,累计从事电气专业工程设计工作满7年;或取得相近专业双学士学位或研究生班毕业后,累计从事电气专业工程设计工作满8年。
4、取得本专业大学本科学历或学位后,累计从事电气专业工程设计工作满8年;或取得相近专业大学本科学历或学位后,累计从事电气专业工程设计工作满9年。
5、取得本专业大学专科学历后,累计从事电气专业工程设计工作满9年;或取得相近专业大学专科学历后,累计从事电气专业程设计工作满10年。
6、取得其他工科专业大学本科及以上学历或学位后,累计从事电气专业工程设计工作满12年。
7、取得其他工科专业大学专科学历后,累计从事电气专业工程设计工作满15年。
8、取得本专业中专学历后,累计从事电气专业工程设计工作满25年;或取得相近专业中专学历后,累计从事电气专业工程设计工作满30年。
(六)上述报考条件中有关学历的要求是指国家教育行政主管部门承认的正规学历,报考条件中从事电气专业工程设计工作年限的截止日期为考试报名年度当年年底。
(七)经国务院有关部门同意,获准在中华人民境内就业的外籍人员及港、澳、台地区的专业人员,符合《注册电气工程师执业资格制度暂行规定》和《注册电气工程师执业资格考试实施办法》的规定,也可按规定程序申请参加考试。
(八)报考人员应参照规定的报考条件,结合自身情况,自行确定是否符合报考条件,并经所在单位审核通过后,方可报名。凡不符合基础考试报考条件的人员,其考试成绩无效。专业考试成绩合格后,报考人员需持符合相关报考条件的证件(原件)进行资格审查,审查合格者方可获得相应执业资格证书。
五、考试报名
符合条件的报考人员,可在规定时间内登录北京市人事考试网在线填写提交报考信息并办理缴费。(具体报名安排详见当次的报考文件。)
六、成绩管理
凡不符合基础考试报考条件的人员,其考试成绩无效。
参加专业考试的考生必须一次通过全部科目考试,方可获得合格证书。
七、合格证书
注册电气工程师执业资格考试合格者,由北京市人事局颁发人事部统一印制,人事部、建设部用印的《中华人民注册电气工程师执业资格证书》。
八、注册
注册电气工程师执业资格实行定期注册登记制度,注册有效期为2年。资格证书持有者应按有关规定到北京市规划委员会或其指定的机构办理注册登记手续。

自动化测试工程师是属于自动化专业就业方向吗?

属于,但是有点不好做到自动化测试工程师,首先我觉得如果你是刚毕业的话,还是老老实实去实习,多学一些上位机软甲,和编程软件,真正的说我可以辅助的设计一些项目了,你在考虑这个工作。另外,自动化测试是分为手动和软件的,
这个问题是写给想要做自动化测试的人,或许你以为软件测试的门槛很低,低到任何人都可以做,随便点点就可以了,这个行业太low了,所以你想做自动化测试,提升自己的逼格,我想说手工测试并不low,如果让一个什么都不懂,一点业务基础都没有的人去做测试,能测出来问题吗?不要忽略你的业务知识储备.
你的业务知识储备的积累能让你成为不可替代的行业专家,而做自动化的码农会因为一个时代的更迭被小鲜肉替代。
扯了这么多,究竟什么什么样的人能做自动化测试?
我的理解分一下几点:
a. 拥有代码能力
掌握一门开发语言,java、Python、ruby、c#
b. 熟悉被测系统
比如你是web测试,你就得懂js、css、html、xpath
你是移动端测试,你就得具备Android 开发基础和iOS开发基础,会debug app
你是 C/S测试你就要很熟悉TCP、IP协议
c. 掌握一套自动化测试框架(工具)
比如 selenium/appium
nunit/testng
robot framework/cucumber

d. 善于学习,达到知其然知其所以然
IT行业变化太快,每隔一段时间就会出现一些新兴的东西,也会出现原来很火的东西逐渐没落,谁也无法预测。
曾经诺基亚还是手机霸主,靠塞班一统天下,然而不思进取,落得个卖身求生存.
曾经qtp很火,曾经selenium也很火,现在appium也很火
软件行业从桌面软件到web端,又从web端迁移到移动端,谁也不知道下一个是什么。而我们作为软件行业的从业者,不能因为那些很火的东西不火了而让自己没落,一个人最为核 心的能力就是学习能力,如果你善于学习,你就不必担心这些变迁,因为你可以毫无压力的迁移,selenium的原理你掌握了,学习appium简直小菜一碟,因为appium使用的是 selenium WebDriver protocol .如果你能做到知其然知其所以然,你也可以造轮子,改造appium,毕竟现在很多功能需要完善。很多初学者很纠结,学qtp还是学selenium
我的建议是学selenium,开源的,免费的,你可以下载源码研究,去了解其原理,再者现在selenium的资料不要太多,随便搜搜一大堆,学起来比较轻松。
不建议学selenium IDE录制,当然你可以通过录制一些然后转换为相应的脚本去学习,等你学好了selenium, 再去学appium你会有一种天然的似曾相识。为什么不建议学QTP/UFT?因为收费/臃肿/现在做桌面软件测试的工作已经不太多了。
关于买书,不建议买书,很多书已经过时了,并且质量渣渣,你买了那些书中的code已经不能用了,如果你真的想学,就去官网找example,去相应的社区和群交流,或者直接看API/源码.
码农的日子很苦,但收入也高,有点青春饭的意思,你自己考虑吧

软件测试需要学什么?

第一步,测试基础:
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。大概就包括:测试计划编写、设计测试用例、编写测试报告、编写BUG报告单、跟踪BUG修复情况、还需要良好的沟通能力、以及各种测试阶段所使用的测试方法、单元测试、功能测试、集成测试、系统测试等。
第二步:学习脚本语言
如:python语言,当然python 是一门相对简单的计算机语言,考虑长远发展,需要了解C语言或者java。都说C语言最难,但是用得确实也多。
第三步:学习软件测试工具
学习软件测试工具并不难,只是需要我们去系统的学习。比如性能测试工具loadrunner,自动化测试工具selenium、Appium,接口测试Jmeter、Postman等。虽然说工具不是万能的但是工具能为我们提高工作效率,所以必须得会熟练的使用。最关键的一点,是要结合项目具体去操作,实践出真知,理论知识在实际项目中才能得到巩固。
第四步:计算机硬件知识
做过性能测试的都知道在性能测试过程中硬件性能也是一个非常重要的指标、CPU、内存、IO、带宽等等、如果你是做硬件测试的。那么就更不用说了。交换机、路由器、防火墙这些设备都需要有所了解。
第五步:数据库测试
MySQL数据库
MySQL简介、命令行工具以及数据管理、MySQL数据查询(条件、分组、聚合函数、排序、分页、连接查询、自关联、子查询)、内置函数、项目练习、数据分表、Python操作MySQL。
Redis数据库
Redis简介、客户端和服务器、数据类型(string、hash、list、set、zset)、各种数据类型操作、Python操作Redis、主从、集群。
第六步:项目实战
最好参与真实项目的测试工作,积累真实项目的测试经验。
成为优秀软件测试员之提升条件,如果你想成为一个更优秀的软件测试员的话,除了上面那些,你也最好能够具备开发语言即代码编写能力,虽然不会写代码也能做测试、但是如果你想做到高级测试工程师以上、那么代码编写能力就是必选项、如果不会写代码、那么你不可能成为高级测试。高级测试工程 师的一部分工作就是在写测试工具。虽然测试也需要写代码但不需要和开发一样那么精通某一门语言、可是测试却需要了解很多门开发语言(举一个简单的例子:你 现在所在的项目从C++语言、2年后你换工作了、新公司的开发语言是Java或者是VB什么的)所以在开发语言中测试需要更广的学习。
成为软件测试员之必备条件,就是你一定要有良好的心态。心要静、细心耐心、责任心。心静不下来无法对bug展开发向思维及拓展想像。任何一个测试最先面对的心理压力就是重复性的劳动。在你的测试生涯中,一定会碰见很多心理的考验,自己对于质量心里没有底、或者由于产品发布问题或者达到了测试瓶颈时候的困惑等。每个人都有自己的背景以及性格,往往对于测试来讲,就是考验心理素质的时候,这个时候就需要你自己不断地去克服这些心理

自动化测试的过程

自动化测试 与软件开发过程从本质上来讲是一样的,无非是利用自动化测试工具(相当于软件开发工具),经过对测试需求的分析(软件过程中的需求分析),设计出自动化测试用例(软件过程中的需求规格),从而搭建自动化测试的框架(软件过程中的概要设计),设计与编写自动化脚本(详细设计与编码),测试脚本的正确性,从而完成该套测试脚本(即主要功能为测试的应用软件)。
1) 自动化测试需求分析。
当测试项目满足了自动化的前提条件,并确定在该项目中需要使用自动化测试时,我们便开始进行自动化测试需求分析。此过程需要确定自动化测试的范围以及相应的测试用例、测试数据,并形成详细的文档,以便于自动化测试框架的建立。
2)自动化测试框架的搭建。
所谓自动化测试框架便是像软件架构一般,定义了在使用该套脚本时需要调用哪些文件、结构,调用的过程,以及文件结构如何划分。
而根据自动化测试用例,我们很容易能够定位出自动化测试框架的典型要素:
a. 公用的对象。
不同的测试用例会有一些相同的对象被重复使用,比如窗口、按钮、页面等。这些公用的对象可被抽取出来,在编写脚本时随时调用。当这些对象的属性因为需求的变更而改变时,只需要修改该对象属性即可,而无需修改所有相关的测试脚本。
b. 公用的环境。
各测试用例也会用到相同的测试环境,将该测试环境独立封装,在各个测试用例中灵活调用,也能增强脚本的可维护性。
c. 公用的方法。
当测试工具没有需要的方法时,而该方法又会被经常使用,我们便需要自己编写该方法,以方便脚本的调用。
d. 测试数据。
也许一个测试用例需要执行很多个测试数据,我们便可将测试数据放在一个独立的文件中,由测试脚本执行到该用例时读取数据文件,从而达到数据覆盖的目的。
在该框架中需要将这些典型要素考虑进去,在测试用例中抽取出公用的元素放入已定义的文件,设定好调用的过程。

接口自动化测试流程是什么样的?

就是使python去实现接口测试,说白了就是写一些测试逻辑。python去写,速度快,简单python也有很多自动化测试相关的工具。roboframework,是一个自动化测试框架,写自动化非常简单。