自动化脚本开发怎么样
A. 测试中如何使用自动化脚本
从毕业到现在,经历了软件开发,
软件测试,
1)QTP工具。QTP是一个快速测试专业工具。它的优点是可以快速建立企业自动化框架,但不是一个全能的工具,因为利用QTP并不能帮助用户找出更多的 BUG,只能提高执行测试用例的效率。 QTP的价格也较贵。 QTP主要应用于较稳定的测试项目的回归测试,UI的变化不明显,功能较稳定的项目。它可以节省回归测试的成本,但相对手工测试来说,QTP对测试人员的要求较高,比如要掌握VB脚本,掌握函数调用等技术;另外,建立QTP框架前期需要投入较大的人力写测试用例,加上调试的时间,是一笔不小的开销,所以企业在选用QTP测试工具时一定要三思而后行。
2)Loadrunner是一个企业级性能测试工具,应用十分广泛。对于WEB应用,Loadrunner的优势十分明显。但与QTP一样,lr的 License十分昂贵,所以很多企业都使用破解版。并且真正掌握LR精髓的人员并不多,很多人都会使用这个工具,但能用这个工具找出系统瓶颈的人并不多,所以,会使用Loadrunner和会性能测试是两码事。懂脚本语言的性能测试人员当然最好。
3)Python和Tcl/tk脚本语言。在我之前的经验中,我用到过PYTHON和TCL。他们都是脚本语言,不需要编译。两种语言的特点如下:Python开发JAVA方面的http接口比较方便;tcl/tk开发C++方面的接口更容易一些。PYTHON写的程序可读性强,TCL写的程序的可读性不好。
4)在需要产生一些大批量数据时,如一个表需要插入100万条数据,然后这100万条数据属于100个不同的类别,如果是手工输入的话,估计10个人一个月都输不完,但如果利用脚本,如PB,VB或者Tcl/tk,可以通过产生批量SQL脚本的方式,来产生SQL脚本,这样不到半小时就可以搞定全部的数据。看来脚本的威力不小!
5)另外,就是Linuxshell脚本了,我们通常说“事半功倍”,shell脚本的确可以帮助你实现这个目的。我们平时在LINUX部署一个应用会用到很多的命令如 Checkout,ps,vi,kill等等,如果能把这个操作流程写成一个SHELL脚本让机器自动执行,那该是省了多少事?另外,作为 UNIX/LINUX管理员,平时可以要监控较多的PC终端,他完全可以在UNIX/LINUX上定制各种任务(如备份,删除临时文件,检查磁盘空间等等),所以,掌握Shell脚本(如Sed,awk,grep等)对一个测试人员来讲是十分必要的!
6)另外一个就SQL脚本了,要能写存储过程(SP)和触发器(Trigger),还有游标(Cursor)的使用,掌握这些的话对于测试数据库方面的用例是相当有帮助的。SQL脚本对系统性能和功能都起着十分重要的作用。
作为一名有6年测试经验的工程师,我坚定地认为脚本测试技术是以后的发展方向,包括白盒测试,也是将来的一个发展方向,对于测试人员来讲,核心竞争力是能完整的测试开发人员的程序,尽可能找出更多的BUG。黑盒测试只能从系统的角度去完成功能测试,但作为软件本身,应该作更深层次的测试。
B. 用自动化测试工具录制脚本有什么用
AutoRunner是一款自动化测试工具。AutoRunner可以用来执行重复的手工测试。主要用于:功能测试、回归测试的自动化。它采用数据驱动和参数化的理念,通过录制用户对被测系统的操作,生成自动化脚本,然后让计算机执行自动化脚本,达到提高测试效率,降低人工测试成本。
C. 自动化测试脚本开发的主要步骤
1、通过某些方式定位到我们要执行的对象、目标( Target)
2、对这个对象进行什么操作(command)
3、通过操作对定位到的元素赋值(value)
4、添加断言操作
D. 自动化测试的适用场合
①需求稳定,不会频繁变更
自动化测试最大的挑战就是需求的变化,而自动化脚本本身就需要修改、扩展、debug,去适应新的功能,如果投入产出比太低,那么自动化测试也失去了其价值和意义;
折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分用手工测试;
②多平台运行,组合遍历型、大量的重复任务
测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值;
③软件维护周期长,有生命力
自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了;
④被测系统开发较为规范,可测试性强
主要出于这几点考虑:被测试系统的架构差异、测试技术和工具的适应性、测试人员的能力能否设计开发出适应差异的自动化测试框架;
E. 自动化测试脚本语言有哪些有什么优缺点
自动化测试脚本语言有C 语言,C++,PLC语言等。
PLC语言可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。
优缺点
优点
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
C语言的 Hello World 程序
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
6、生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。
7、可移植性好
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
8、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
缺点
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
F. 程序员6年只干了50个小时工作,被开后称是编写了自动化工作脚本
很久之前,Reddit上出现了一则匿名的自白帖子:“ 大概六年前到现在,我在公司什么活都没干 。”
这个化名为FiletOFish1066的程序员称自己供职于一家知名的 科技 公司,实际上无所事事。
他写道,谋得这份质量保证工作的八个月后,他使自己的全部工作完全自动化。“我可不是开玩笑。每周40个小时,我去上班,在办公室玩《英雄联盟》,浏览Reddit,想干啥就干啥。 在过去这六年,正儿八经的工作我可能也就干了50个小时 。”
上司意识到他在六年内所做的工作比大多数硅谷程序员在一周内所做的工作还少后,就把他开除了。
这个故事在网上的技术圈子迅速传播开来,最终促使这位主人公不仅删除了帖子,还删除了整个帐户。
我发现歪果仁也跟中国人一样爱看热闹,不嫌事大!
大概一年后,一个自称是Etherable的用户向互联网上最重要的程序员论坛之一Stack Exchange上的Workplace版块发了一个问询帖:
“我没有告诉雇主我的工作已自动化,这是否不道德?”这位内心矛盾的程序员说,他接受了一份美其名曰是“数据录入”的编程活;六个月前,他编写了使整份工作自动化的脚本。此后,“ 上一个人过去常花一个月才能完成的工作现在只要10分钟就能完成。 ”这份工作是专职性质的,带来的好处是Etherable可以在家办公。
这个程序取得了近乎完美的效果。
后来这个帖子引起了分歧,评论铺天盖地。(现在浏览量将近50万人次。)意见分成两大派,一派觉得Etherable在欺骗雇主,至少在蒙蔽雇主;另一派认为这个程序员只是找到了一种巧妙的方法来完成手头的工作。Etherable从未回应随至而来的讨论。也许是被受到的关注程度(世界各地的媒体都在竞相报道此事)吓坏了,这个用户销声匿迹,只留下了那则帖子,关于谁可以使工作自动化、在什么样的条件下这么做的讨论越来越备受关注。
可以称之为自发自动化(self-automation)或自行自动化(auto-automation)。在大规模自动化这个幽灵困扰一线员工的那一刻,自行其事的程序员表明这个威胁到了程序员的手里,如何变成天赐之物,不管雇主是不是知情。由于FiletOFish1066和Etherable都匿名发布帖子,随后很快消失,因此两人都联系不上,无法请他们发表评论。但他们的故事表明,职场自动化会有多种形式,并由高管以外的人来主导。
生性乐观的经济学家和未来学家吹嘘, 自动化的好处在于,将工作交给机器有望消除无须动脑子的重复性工作 ,让人们可以一心扑在有趣又有创造性的工作上,或者更要紧的工作上。
砖家你确定现在程序员干的都是不动脑子的工作?
你还确定,时间多出来之后,
程序员会干有创造性的工作?!
几十年来程序员们一直在编写使工作自动化的代码。编程通常需要用到在不同的层面(从代码格式化到合并至不同的代码库)添加自动化的工具,大多数人根本没有走到使工作完全自动化或几乎完全自动化这个极端。
我通过Reddit和电子邮件的私聊信息与十来个声称有类似经历的程序员聊天。这些自发自动化人士处理过库存管理、报表编制、图形渲染、数据库管理和各种各样的数据输入。
有个人还使他妻子的全部工作自动化。大多数人要求匿名,以保全工作和声誉。
一位很早是自发自动化人士的名为Gary的程序员告诉我:“一开始,我的工作每天实际上要干8个小时。”他在一家大型企业连锁酒店工作,这家连锁酒店在90年代开始实现计算机化工作流程。Gary很快意识到在花大量时间重复同样的任务,于是他开始 下班后学习编程 。他说:“大概 花了三个月的时间,我用Lotus 1-2-3(当时一款很流行的PC电子表格软件)编写了一段代码,不仅使个别的重复性任务自动化,实际上还使整份工作自动化 。”他没有一五一十地告诉上司,其职场生活的质量大大提高了。
他告诉我:“一整天很空闲感觉怪怪的,于是我趁空了解酒店的其他系统。”后来他帮助管理层消除了那些系统中的瓶颈。自行自动化消除了琐碎的工作,减轻了他的压力,并让他可以扑在真正感兴趣的事情上。他说:“实际上,我将这份岗位变成了自己喜爱的岗位,即排查故障。”在离开公司前两周,他交给老板一张软盘,里面装有这个程序和解释如何运行的说明文档。Gary说,老板对他辞职颇为不安,直到他交出了软盘,介绍程序如何运行,并告诉老板万一有问题可以打电话给他,老板才放下心来。 后来电话没来过一个。
在大多数领域,一线员工对于他们的工作是否自动化,或者如何实时、何时实施自动化很少有任何正式的意见。自发自动化人士明白,自由化由势必从中收益的一线员工、而不是由自上而下的公司命令来安排自动化会什么样。一些人欣然享受多出来的闲暇时间,另一些人利用多出来的时间来学习新技能,应对新的编程挑战。
ps:你确定不是玩手机?
不过,许多自发自动化人士害怕与办公室外面的人分享代码。即使一个程序无可挑剔地完成了工作,许多人还是觉得为牟私利而搞的自动化是错误的。人力劳动本质上是善良的(以及员工应始终最大限度地为雇主提高生产力),这比任何自动化脚本更深深地融入到美国的职场文化中。而大多数雇用合同明文规定,工作时间开发的知识产权属于雇主。因此,员工可能所做的任何效率提升或自动化改进都往往归雇主所有。
一位程序员没有把他使其工作完全自动化的真相告诉公司,因为担心公司到时声称知识产权归公司,并拒绝补偿他。另一位只肯自称是Jordan的人告诉我,他曾无意中使整个部门的工作自动化。现在他用自动化脚本每年省下“好几周”的时间。Jordan表示,他和同事们保持缄默,绝不透露自动化技术,以便控制使用自动化技术的方式:“我们通常不对外透露这些工具。”
另一位程序员竭力向老板隐瞒使其年薪5万美元的工作完全自动化的概况。管理层可能通过网络查看其电脑屏幕上的内容, 于是他运行预先录制的视频,掩盖他实际上没在工作的事实。 Etherable在寻求建议的帖子中写道:“我觉得这么做不对。”
一些程序员表示,就因为使工作自动化,自己已被公司炒鱿鱼。2011年,一个名为AcceptableLosses的用户写道:“ 公司拿去了我开发的软件,派一个白痴顶替我,并立即以“不服从”为由解雇了我 。我开发了一款每年让这家公司获利100万美元的软件,对方却仅仅为了省下每年约3万美元的工资而开除了我。我真是自掘坟墓啊。”
正因为如此,自发自动化人士担心的倒不是道德问题,而是不想被雇主开除或盘剥,正如伍德科克特别指出的那样,雇主“不仅要求我们的所有时间归他,我们开发的所有东西也归他。”他推测,谨慎的自发自动化人士“不信任我们的工作场所。上司会说‘谢谢你,干得漂亮。现在再做一次。’”
很少有员工渴望完全自我自动化,但似乎越来越多的员工对于使用脚本来处理繁忙工作感兴趣。网络上有众多这方面的博文和实用文章,比如《我如何用Node JS使我的工作实现自动化?》,也有众多播客介绍每一种想象得到的自动化:小公司、营销和智能手机。这简直就是一个蓬勃发展的家庭手工业。
照目前情况来看,自发自动化大有助益。但随着自动化技术变得更广为人知,它们可能完全成为管理层期望员工拥有或学会的另一种技能,并最终让企业受益,并以另外某种方式使这些人成为有用的员工。
《哈佛商业评论》杂志写道:“员工将越来越需要使自己的工作自动化,否则就滚蛋。放眼全球,我们会看到更多自上而下的管理层命令,要求搞自下而上的自动化项目。”而老板及员工开发的机器人软件会再次品尝胜果。
在此之前,任何使用代码的人都可能应该考虑自发自动化带来的好处。可以以此来测试自动化如何为普通员工带来更高的生活质量,尽管谈不上完美。伍德科克告诉我:“问题在于自动化要有效,自动化要民主化。不是公司企业在提供自动化,这向前迈出了一步。它仍然不是民主化过程。”自发自动化人士在单独行动,决定何时、如何把自己的工作换成代码。而理想情况下,自动化决策将在同事和同行给出意见的情况下共同做出,以便可以均匀分摊好处。
自发自动化人士表示,程序员有独特的条件,可以与雇主就员工应该保留哪些自动化带来的效益展开谈判,比如时间更短的工作周以及更灵活地从事自己感兴趣的工作。从理论上来讲,自发自动化人士可以在属于中产阶级和工薪阶级的程序员当中组织和分配自动化技术,从而打造有望实际上获得15小时工作周的一个行业。这似乎是千载难逢的机会,可以努力为把人放在首位的自动化模式创造条件。
你如何看到互联网蓬勃发展,越来越多产业自动化发展,今后人们能做什么呢?
欢迎评论
点击【右上角,关注 子瑜说IT 】持续更新IT资讯以及web前端开发教学
G. 请简单说明自动化测试和手工测试的区别自动化测试是否能替代手工测试
自动化测试不能代替手工测试,因为并不是所有的功能自动化测试都可以实现,它的效率也不高,而手工测试能通过人为的逻辑判断效验当前的步骤是否正确,同时用例的执行具有一定步骤跳跃性,能够清楚知道逻辑,细致定位问题。
两者的区别是:
1、测试效率不同
完成同等数目的测试,启动自动化速度更快,手工测试则需要消费更多的时间。但是自动化测试的脚本开发比用例开发耗时长,包括编写脚本、调试脚本、维护脚本,而手工测试虽然也要对测试用例进行撰写、评审、修订,由于用例编写更多为自然语言,时间上会少。
2、资源利用率不同
自动化测试在设备、仪表资源能够7*24小时利用,这点上手工测试没有可比性。
3、执行可靠性不同
自动化测试中可靠的按脚本执行,后续定位、复现有明确的配置路径可循,而手工测试往往会因为自己的判断导致测试出错,并且在测出来的问题上有一部分是不能复现的。但是自动化的稳定来源于其死板,而人的智慧体现在思维的跳跃,跳跃的思维也会导致后期不易定位。
4、覆盖率不同
在同等时间内,启动自动化测试能够覆盖更多的功能,而手工测试只能覆盖小部分功能。但是自动化测试适合回归测试,开发中的功能不划算。对于开发中功能,需求或者实现的更改,都会导致自动化脚本的变更,开发中的功能更适合手工测试。
参考资料来源:网络-手工测试
参考资料来源:网络-自动化测试
H. 自动化测试和性能测试,哪一个以后能更迅速发展
比较分析:
可以站在公司层面,总监角度去思考,那么就要从自动化和性能给企业带来的价值,解决的问题去分析了。
1:自动化测试技能解决企业的难题是回归测试用例,做的好的可以提升一定测试效率,就是回归能够快速。 有哪个公司自动化是为了发现缺陷的吗?自动化本身就是为了回归!所以他解决了测试部门内部的事情,能够快速回归。
2:性能测试技术主要是解决公司整个系统架构优化问题,包括应用,数据库,中间件等优化,同时还可以评估生产压力,节点配置,未来系统支撑等。解决的是公司架构层面的问题。
3:自动化测试在工作中是写一些自动化脚本,交流的对象可能是功能测试或开发,比如这业务怎么操作,接口逻辑等。而性能测试工作中交流的对象是总监,架构师,开发经理等公司高层核心人员。
4:也可以在工作中实际去发现表现的机会,公司领导有交待任务去测某接口性能,但是否有遇到说让你做某个自动化任务尼?是不是你都是自己偷偷的做自动化?但公司层面是否有认可?当然不排除真正推行者。