什么是自动化测试?
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
为什么做自动化测试?
1)对个人来说
随着时代科技的进步,越来越多的工作偏向于了自动化,软件测试当然也不例外。从发展的趋势来说,只有不断的提升自己,面对各种变化,才可以追上科技的进步。手动测试虽然是基础,但是企业不会在乎你的过程。只有高效率的工作才会让企业觉得你更有价值。自动化测试是软件测试的主流,也是软件测试的高薪专场!
2)对企业来说
为什么企业做自动化测试,从现在的情况来看,互联网需求迭代非常快,人员流动性非常大,所以工作时间比较紧迫,要在规定时间内提高工作效率,所以一个需求从提出到上线时间比较紧急,同时对于其影响的范围也可能不太清楚,在上线之前必须对原有功能进行回归测试。不管是接口还是从客户端,都需要大量的测试工作,而且在大数据时代,测试用例量也是非常庞大的,如此繁复单调的工作让人工来测试的话,根本不能保证效率和质量,所以必须要借助于非人工手段来实现。
怎么才能算合格的测试工程师呢?
自动化测试工程师细分可以有UI自动化测试工程师,APP自动化测试工程师、接口自动化测试工程师等等。
首先,掌握一门编程语言,应该以Java或者python为主,虽然什么语言都可以用来做自动化测试,但毕竟这个两个是最流行的,如果想成为自动化测试工程师里,最主流的测试工程师,还是强烈推荐大家选择这两门语言。
然后,掌握主流的框架,如:selenium,appium,monkey,monkeyrunner之类的,基本上掌握了这个几个APP和UI自动化都可以玩的转了。
自动化测试工具有好多种,分享给大家这些,希望对你能有帮助!
1、SoapUI-接口测试
SoapUI是一个非常流行的用于SOAP和REST的开源API测试自动化框架。它还支持功能测试、性能测试、数据驱动测试和测试报告。
2、QTP-WebUI自动化测试
QTP是一种自动测试工具。使用 QTP 的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。
QTP针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。
3、Postman-接口测试
Postman 提供功能强大的Web API和HTTP请求的调试,它能够发送任何类型的HTTP请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和Headers。不仅如此,它还提供测试数据和环境配置数据的导入导出,付费的Post Cloud用户还能够创建自己的 Team Library用来团队协作式的测试,并能够将自己的测试收藏夹和用例数据分享给团队。
4、Monkey-稳定性测试
软件附带在sdk中,适用于android和ios,通过adb shell,生成用户或系统的伪随机事件。
压力测试结果:崩溃crash,无响应anr,基本命令:adb shell monkey 1000。
5、Jmeter-接口测试,性能测试
Apache JMeter是一个开源的Java桌面应用程序,主要用于web应用程序的负载测试。它还支持单元测试和有限的功能测试。
它有很多好的特性,比如动态报告、可移植性、强大的测试IDE等,并且支持不同类型的应用程序、协议、shell脚本、Java对象和数据库。
6、Robot Framework-WebUI自动化测试,接口测试
Robot Framework是一个开源自动化框架,它实现了用于验收测试和验收测试驱动开发(ATDD)的关键字驱动方法。Robot Framework为不同的测试自动化需求提供框架。但是,通过使用Python和Java实现其他测试库,可以进一步扩展其测试功能。Selenium WebDriver是Robot Framework中常用的外部库。
测试工程师可以利用Robot Framework作为自动化框架,不仅可以进行Web测试,还可以用于Android和iOS测试自动化。对于熟悉关键字驱动测试的测试人员,可以轻松学习Robot Framework。
7、LoadRunner-性能测试
LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。
企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
自动化测试常见问题怎么解决?
1、找不到元素,脚本报"NoSuchElementException:Unable to find element",或者"定位到了,不能操作,点击无效"
首先查看自己的"属性值"是否写正确
元素的标签不唯一,默认找到第一个
向上查看,元素是否在frame或iframe框架中
查看元素是否在新打开的页面中,需要切换到新窗口
换其它的定位方式
id/name/class name/tag name/link text/xpath/css selector
检查元素属性是否是会变动的、是否是隐藏的
添加等待时间sleep(),implicitly_wait(),WebDriverWait(driver, 10, 1).until(定位的元素, messages)
查看标签的属性是否有"style=‘display:none’->。元素不显示。属性改为block
查看标签的属性是否有’οnclick=return false’->。取消点击。属性改为false(在百度首页,登陆的属性就是这个)
针对于9和8这两种情况,我在网上搜到的结果是:执行js修改属性(这种方法我没有试过,不知道有没有效果)
js=“document.getElementById(‘title’).style.display=‘block’” driver.execute_script(js)
2、出现"object is not iterable":
首先查看脚本,测试用例出现问题
组织用例时出现错误(我开始是用for循环遍历y,加入测试集合中,返回集合,老是会出现错误,最后改成下方代码,直接返回y,解决问题)
3、出现"Indentation Error": 是语法问题,脚本代码没有正确对齐
4、使用PO设计模式封装的页面元素类,都有初始化函数"init"
5、页面元素调用Page类时候,Page函数,后面括号的"self"不用写
6、Page的初始化包含(self,driver)两个元素,在页面封装类中,初始化中调用方式为Page.init(self,driver)
7、类中定义变量,比如x=“hello”,调用使用:self.x
8、在测试用例调用自己页面封装的类时,经过实例化后po=Lzsp(driver),定义函数时候, 不需要再括号中写self
9、提示在页面封装类中没有basePage.py文件中定义好的函数问题:
新建名字为module_basePage.pth文件,内容为"basePage.py文件"存放路径
进入python的安装目录,将文件放到python3libsit-packages文件夹下
在测试用例中导入其他文件夹模块引入:import sys
sys.path.append("…") from … import …
10、页面元素封装时候,定位方式一定要写正确,否则会出错
11、进行参数化的时候,读取数据的文件里面代码:“使用绝对地址,加双斜线”
12、运行自动化脚本时候将鼠标放到屏幕中间或者下方,(有可能切换窗口时定位不到)
13、出现"parater must be str":使用参数有问题,(我的是因为二次定位写的方式有问题)
14、在window命令界面下使用:"python 文件名.py >>report/log.txt 2>&1"命令把结果写入文本中
15、在页面封装中,类的初始化使用如下样式:
def init(self,driver): Page.init(self,driver)
16、打印输出时显示"not all arguments curerted during string format"是说明前后参数不对应:%前面是一个"%s",而后面的参数是(“xy”,“xy”)两个
作者:leborjcs
原文链接:https://blog.csdn.net/leborjcs/article/details/90405308