JMeter 压力测试之-脚本录制方法总结

最近由于项目的测试需要,把之前只是简单学习的JMeter又重新捡起来好好学。这篇文章就把JMeter的脚本录制工具和方法做个简单的小结。 JMeter 的脚本录制相对还是很简单的,除了自带的HTTP代理服务器以外,被大家用的比较多的是Badboy, 最近我发现Chrome的BlazeJMeter 这个插件也是一个非常好用的工具,下面逐一介绍。 1.JMeter HTTP 代理服务器; 步骤: >.依次新建TestPlan, TestGroup, Critical Section Controller; >.在WorkBench->Add->Non-Test Elements->HTTP(S) Test Scripts Recorder; 配置内容介绍: 1).端口号; 2).配置保存脚本的位置; 3).配置需要录制的内容; 4).过滤掉不需要录制的内容; 5).点击Start 开始 在录制的开始的时候如果遇到路径的问题,看这里了解详情。 >.配置HTTP代理和端口(端口号与上一步的端口保持一致),Firefox 为例: >.接下来可以开始录制脚本了,录制结束以后就可以点击‘Stop’结束录制,然后可以去配置好的控制器查看录制到的内容啦。 JMeter 的HTTP代理服务器录制下来的内容会比较多,这里就需要你去结合Web 端F12->Network 去过滤掉你不需要的内容了。 2.Badboy 录制; Badboy 的录制相对就比较简单了, 不用做额外的设置。 步骤: >.打开Badboy,在地址栏输入你需要录制的url, >.点击菜单栏的开始(red button)按钮进行录制就可以了(Badboy的浏览器与你电脑的默认浏览器是一致的);录制结束以后可以看到操作都会显示在左边的Test Site下面. >.File->Export to JMeter…保存到指定的位置; >.用JMeter将.jmx 文件打开就可以了 我在实际工作中有发现Badboy 在录制的时候会报很多js的错误,这个暂时还没搞清楚是怎么回事,换成JMeter自己录制就OK, 不知道是不是跟开发用的JaguarJS 有关系,等待继续研究。 3.BlazeMeter的录制; 向大家隆重推荐Chrome 的插件BlazeMeter, 专为JMeter打造,真是超级好用!点击BlazeMeter安装 步骤: >.Chrome插件BlazeMeter装好以后,直接在Chrome 中打开; >.在url中输入你的网址,点击红色按钮开始录制; >.录制结束点击旁边的按钮结束录制; >.点击JMX 按钮导出脚本文件.jmx;(导出之前需要先登录你的账号,不登录是灰白色不能用的) >.用JMeter 将保存的脚本打开看看吧, so cool~~ BlazeMeter还有其他的功能可以创建自己的测试URL,管理聚合报告等等功能,目前正在研究中~~ 比较: 目前为止,这三个录制工具都很容易使用,Badboy 感觉大部分人都在用,但是对于的目前的项目来说,还是感觉BlazeMeter实在是太好用了,基本不用再做别的调试和改正。 新年将至,重新出发~~~ BlazeMeter参考文章

JMeter 开启录制过程报错

1.今天在利用JMeter的代理服务器录制压测用例的时候,遇到了如下的问题: 运行环境:WIN10, jdk1.8.0_66, JMeter 2.13, >.在TestPlan下新建ThreadGroup; >.在WorkBench新建 Non-Test Element->HTTP(S) Test Script Recorder. >.设置好配置: >.点击‘Start’ 开始录制,此时报错: 2.Rootcause: JMeter 2.10 uses a new method for recording HTTPS requests when running under Java 7. There have been some reports of problems starting the recorder, with errors such as the following: “ERROR – jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store java.io.IOException: Cannot run program “keytool” (in directory “C:\apache-jmeter-2.10\bin”): CreateProcess error=2, The system cannot find the file specified” This means that the “keytool” application could not be found on the PATH. Please ensure that the PATH includes the bin directory for the appropriate Java installation. If this was not correctly set when Java was installed, it may be necessary to update the script that starts JMeter. For example add the following to jmeter.bat (Windows) 3.解决方案: 需要在jmeter.bat 里配置环境变量: # set JAVA_HOME= SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0_66 SET PATH=%PATH%;%JAVA_HOME%\bin 4.重启JMeter,开启我的压测之旅吧~~. 参考文章:https://wiki.apache.org/jmeter/TestRecording210 http://www.51testing.com/html/43/489243-857877.html

匆匆那年~~2015小记~~

我希望能拥有个 明亮的落地窗 每天都能够去晒一晒太阳 把我的东西都摆在地上 再唱起从前的时光…… 不知不觉已经走到了2015年的最后30钟头,已不知是从什么时候开始,一年又一年竟过的如此无声无息。 2015,其实我也是有很多计划的,虽然大部分还没有完成; 不想就这么草草得结束今年的最后时光,给未来的自己记录一下~~ 1.关于婚姻、家庭. 2009年7月恋爱、2010年毕业开始异地3年、2013年到上海、2014年6月领证、买房、11月在老家出嫁、婚假蜜月、今年年初六在老公家举行仪式… 这一路走来,磕磕绊绊,大吵小闹无数,从少不更事、任性妄为,到渐渐也学会慢慢去经营。 7年的时间,足够我们成为彼此最亲最爱的人,足够自己去学会拥抱和珍惜这个新的小家大家。 亲爱的老公,感谢一直以来的不离不弃,包容和爱护,感谢爸妈们,兄弟姐妹们的疼爱,感谢可爱懂事的小侄女们。 愿家人一切更好~ 2.关于运动、生活. 2015年初,一度不算疯狂的爱上了跑步,参加跑团,拉上姐妹一起锻炼,健康得度过了3个多月的时光,可惜没有继续坚持下来(在此鄙视自己一下)。 从刚开始的连跑带走勉强坚持2KM,到最后不停歇跑到10KM还觉得不过瘾,中间经历的过程是痛苦也是快乐的。 那段时间的自己:腰疼没那么严重了,痘痘消了,饮食规律了,睡眠质量上来了,整个人UPUPUP的感觉真是超级棒! 好吧,明年我的第一个计划就是重新开启运动模式~~(2016新年目标之一) 不跑步了以后就开始跟着吉吉各种虚拟现实打游戏,勉强混到了业余10级的水平,还认识了一些小伙伴,但是还是有种玩物丧志的赶脚,这个从明年的计划里remove 掉(嘎嘎,吉吉别怪我,不陪你了~)。 3.关于旅行. 沈阳滑雪: 今年的元旦是丢下吉吉,在沈阳的滑雪场度过的。现在回忆里还是皑皑的白雪、一次次的摔跤、马路边的雪丽糍…嘎嘎,身为北方人第一次见识了冰天雪地也是挺够的。 老家度夏: 年中一大家子回的老家过(别人的)暑假,给婆婆过生日,带着小侄女爬山,不顾雨中下河抓鱼,钻了老公家附近的某溶洞。 短短的几天行程很珍贵也很开心,有机会还是要多陪陪家人哒~ 秋游黄山: 今年终于在9月某纪念日去了心心念念好久的黄山,不负此行!黄山确实如传说中一样的壮观、秀美,连秦岭长大的吉吉都赞不绝口,美到极致的西海大峡谷,到处都是怪石奇松,虽然云海日出没看到,不过赶早看日出的心情还是蛮激动的,改天写个黄山游记(2016新年目标之二)。 深圳-香港AGAIN: 因为某些手续要办要去深圳,正好赶在一年通行证过期前夕顺带去了HK。结果事情出奇顺利办妥了,然后就是各种逛海滩吹海风,去星光大道找古仔的手印合影~果然旅行中的心情是最HIGH的。 带老爸老妈小侄女游上海滩: 忙完了老家的拆迁。十一,老爸老妈大舅终于带着小侄女儿来上海啦~~ 十一的时间就是陪他们各种玩,年龄越大就会越珍惜跟家人一起的时光,因为各种原因,定居在外,相聚的时间总是显得那么奢侈和短暂,希望爸妈宝宝永远健康快乐~爱你们啦~~ 不在乎到哪里,只真心能和你们在一起… 4.关于各种~呃证. 户口:由于各种原因吧,也许在不久的将来一切尘埃落定,但是带着对未来的迷茫,还是一切向前看吧,未来会更好, 加油奋斗~ 高项:之前也记录过准备高项的经历,当时的结果还没有出来,现在知道自己顺利通过还是很感激的,毕竟付出的努力没有白费,这也促使自己重新定位以后的道路和态度。好多事情其实很奇妙,明明是奔着一个明确的目标去的,结果收获的往往是不一样的东西。这个就是我现在最真实的感觉,不为了所谓的GK,只为了鼓励自己,只要努力还是可以有收获的~ 5.关于新年. 上文也多多少少提到了以后的计划,关于未来,不,关于新年,给自己的目标:多多关心家人、朋友;开始一项运动并坚持住;接着考试,学习;准备新生活~~ 感谢有你,一路相伴……

Selenium_Webdriver–scrollbar操作

1.在测试过程中,需要控制页面的滚动条的时候,需要用JavaScript 来实现: #控制滚动条到页面底部,两种方法都可以; driver.execute_script(“window.scrollTo(0, 10000);”) driver.execute_script(“document.documentElement.scrollTop=10000”) #控制滚动条到页面顶部 driver.execute_script(“window.scrollTo(0, 0);”) driver.execute_script(“document.documentElement.scrollTop=0”) 2.测试过程中经常容易出现比较低级的错误,在这里记一下: >a.定义测试函数的时候,函数名一定要test开头,否则,unittest 执行不了,囧~ 最好保持良好的编程习惯,命名统一: def test_scroll(self): >b.自己敲代码的时候,总是记不住要把下面这句顶到行起始位置!! if __name__ == “__main__”: unittest.main() 参考文件,scroll还有几种比较好的实现方法: http://blog.likewise.org/2015/04/scrolling-to-an-element-with-the-python-bindings-for-selenium-webdriver/ Keep changing…

Selenium_Webdriver– 执行JavaScript

1.执行JavaScript 脚本进行元素的淡入淡出操作-fadeIn(), fadeOut() 它们的调用格式分别为: $(selector).fadeIn(speed,[callback]) $(selector).fadeOut(speed,[callback]) >a.淡出link: #此处使用id定位元素,$(“#id”).fadeOut(3000); driver.execute_script(‘$(“#tooltip”).fadeOut(3000);’) html code: hover to see tooltip%

Selenium_Webdriver–Chrome驱动测试

1.Chrome Webdriver testing. Q:在执行selenium/webdriver 的测试用例的时候,默认是驱动FireFox()浏览器进行测试的, 如果我尝试用Chrome 去驱动测试呢? A:首先下载Chrome webdriver(os-Win10 64 bit): 点击这里,下载Chrome Webdriver. 然后解压到对应的位置,在代码中替换“self.driver = webdriver.Firefox()”为: self.driver = webdriver.Chrome(executable_path= “C:/Users/JANE/Documents/Webdriver/chromedriver”) 解决啦! 2.屏幕截图. Tips:在测试的过程中,想要看到用例执行的过程实际屏幕是什么样子的,可以选用截图操作: driver = self.driver driver.save_screenshot(‘checkbox.png’) 3.上传文件操作. selenium2.x webdriver 测试的上传文件功能特别简单,不需要点击页面中的按钮,选择本地文件等操作,只要一个send_keys()! driver.find_element(by_id, by_name,etc).send_keys(“thepathoflocalfile”) eg:driver.find_element_by_name(“file”).send_keys (“D:\ABA_Selenium_Testing\ABATesting\checkbox.png”) 参考文章: https://jzchangmark.wordpress.com/2015/02/26/selenium-%E4%BD%BF%E7%94%A8-chrome-%E7%80%8F%E8%A6%BD%E5%99%A8-webdriver/ http://www.weiguda.com/blog/47/ Love python! A little change everyday…

Selenium_Webdriver–iterable(迭代) error

在用selenium 定位页面元素的时候,可以用到各种find_element_by_*操作。但是当你需要定位一组元素的时候,要用到find_elements_by_*(此处注意这个s). Q:今天在写程序,对页面中定位到的所有checkbox勾选,代码如下: def test_checkbox(self): driver = self.driver driver.get(self.base_url) inputs = driver.find_element_by_tag_name(“input”) for input in inputs: if input.get_attribute(“type”) == “checkbox”: input.click() time.sleep(3) 运行测试用例报错: Traceback (most recent call last): File “D:/ABA_Selenium_Testing/ABATesting/CheckBox.py”, line 25, in test_checkbox for input in inputs: TypeError: ‘WebElement’ object is not iterable A:iterable 迭代, 原来是用错了find_element_导致的,囧,换成find_elements_× OK 啦。 Note: 点击学习更多os.path操作 每天进步一点点…

Selenium_Python_Note–元素的定位xpath

定位元素的方法有很多种,首选肯定还是id, class, name, 但素,如果某个元素根本没有这些东西呢? 那么只好选用xpath了,但是一定要优先选用一些有意义的文字,比如我目前用到的例子: 定位一个叫username的链接: driver.find_element_by_xpath(“//span[@class=’username ng-binding’]”).click() 定位一个’Submit’ 按钮: driver.find_element_by_xpath(“//button[@type=’submit’]”).click() 定位一个’Search’ 按钮: driver.find_element_by_xpath(“//button[contains(text(), ‘Search’)]”).click() 定位一个输入框: driver.find_element_by_xpath(“//input[@type=’text’]”).send_keys(“new”) 感觉xpath 特别灵活,但是网络上对它的褒贬也是不一致的。 点击此处学习更多Xpath定位用法~ Xpath 学习

Selenium_Python_Note–xlrd 数据驱动测试,excel 中的数字操作

记录一个最近解决的很low的问题。 Q:问题来源:之前写的selenium 的数据驱动测试用例, 登录界面。实例 但是在运行测试用例的时候,因为用例中的密码是数字,所以怎么都执行不起来,中间有事情就放下了一段时间。 T:Testdata: admin/1234 A:今天回头一点点排查错误吧。 1.会不会是测试数据出的问题?首先直接输入密码“1234”, 其他数据仍然是读取excel中数据,testpass; 关键代码如下: i=1 while (i

Selenium_Python_Note-Data Driven Testing(数据驱动测试)

1.What is Data Driven Testing? Definition from WiKi: ‘Data-driven testing (DDT) is a term used in the testing of computer software to describe testing done using a table of conditions directly as test inputs and verifiable outputs as well as the process where test environment settings and control are not hard-coded. In the simplest form the tester supplies the inputs from a row in the table and expects the outputs which occur in the same row. The table typically contains values which correspond to boundary or partition input spaces. In the control methodology, test configuration is “read” from a database. 数据驱动测试(Data-driven testing)是一种软件测试的方式,数据驱动测试会配合一个有许多测试输入及对应的验证输出值的表格,而其测试环境设定及控制不会固定在程式码中。最简单的数据驱动测试会将表格的某一栏作为输入,同一列的另一栏则是预期的测试输出。表格内一般会对应输入值的边界或是输入值分组的边界。在有些测试中,会从数据库中读取测试组态。 从上面的定义可以看出数据驱动测试的好处有很多: a.数据驱动测试是从数据文件(如Excel文件、csv、XML文件或数据库等)中读取测试数据,然后通过变量传入事先编写或录制好的测试脚本中,这些变量既可传递测试输入数据也可传递测试输出的验证数据; b.测试数据只出现在数据文件中,测试脚本负责测试逻辑业务过程、测试状态以及数据文件读取,因此,测试数据和测试脚本是分开存放的; c.数据文件中的每一行表示一组测试数据,通过循环遍历数据文件中的每一行,将数据逐一注入到相同的测试流程进行反复的测试验证; d.数据驱动测试框架可减少为实现所有测试用例而需要编写的脚本数量,只需少量脚本即可产生大量测试用例,降低脚本创建和维护成本; e.测试数据单独存放于数据文件中便于修改和维护; f.数据存放结构清晰简单,有利于测试结果分析和错误跟踪。 2.Selenium_Python UI 自动化怎样实现数据驱动测试? a.首先要确保python 可以打开存放测试数据的文件类型,以excel数据文件为例, 导入xlrd包: 命令行执行’\Scripts\easy_install.exe xlrd’ b.准备测试数据文件login.xlsx c.在Pycharm下面修改测试脚本admin_login.py import xlrd def test_login_as_admin(self): driver = self.driver driver.get(self.base_url + “/”) # data driven testing using python # Read for XLSX Sheet names # Learning from http://seleniumworks.blogspot.com/2014/02/selenium-data-driven-python-xlrd-xlsx.html wb=xlrd.open_workbook(‘D:\ABA_Selenium_Testing\ABATesting\login.xlsx’) sheetname = wb.sheet_names() sh1 = wb.sheet_by_index(0) i=1 while (i