引言
引言:今天参加了一次由湖南软测有限公司在我们学校计算机专业组织的一次selenium自动化,jmeter性能实习,目的是体验一波软件测试的乐趣,感觉还不错,学了不少东西,这里做一下笔记
测试所需资源
自动化测试
1》 搭建selenium自动化测试环境
- 安装最新的谷歌浏览器
- 把chromedriver_win32.zip解压后的chromedriver.exe文件放入到java安装目录下的bin目录
Tip: win+r打开cmd输入where java可以帮你快速地位java所在目录
- 打开eclipse – 新建一个Java工程,右键项目点击选择Build Path --》Configure Build Path…,选择Libraries ,点击Add External JARs…,把解压的lib文件中的jar包导入,如下图:
2》编写第一个自动化demo
在步骤一项目下建包,并编写一个java文件,如下图所示,能正常打开浏览器操作即部署成功:
3》浏览器操作
Selenium(浏览器自动化测试框架),它究竟能干些啥呢?我做了点笔记
好像主流的浏览器它都玩得转,但今天由于时间的原因我们只用它玩了一下Chrome浏览器
它支持的浏览器操作:
//加载驱动
WebDriver driver=new ChromeDriver();
//打开百度
driver.get("https://www.baidu.com/");
//窗口最大化
driver.manage().window().maximize();
//获取当前URL
driver.getCurrentUrl();
//获取当前页面标题
driver.getTitle();
//前进
driver.navigate().forward();
//后退
driver.navigate().back();
//刷新
driver.navigate().refresh();
//退出
driver.quit();
4》元素识别操作
selenium能自动填表单,点击元素,但这都必须建立在它能准确无误的识别各个元素,不然的它就会给你一堆让你懵逼的报错信息
//定位元素的方式
driver.findElement(By.id(id));
driver.findElement(By.name(name));
driver.findElement(By.className(className));
driver.findElement(By.linkText(linkText));
driver.findElement(By.cssSelector(cssSelector));
driver.findElement(By.partialLinkText(partialLinkText));
driver.findElement(By.tagName(tagName));
driver.findElement(By.xpath(xpathExpression));
//后续操作
driver.findElement(By.id(id)).click(); //点击
driver.findElement(By.id(id)).sendKeys(); //输入
5》等待时间
- 强制等待:
Thread.sleep(5000);
- 隐式等待:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
7》切框架
有的页面会出现iframe嵌套,如果你想对iframe里的元素进行操作,切框架是必须的
WebElement ele=driver.findElement(By.xpath("//*[@id=\"mainForm\"]/div/nav/nav/div/div[3]/div[1]/div/div/div[2]/iframe"));
//切入ele元素
driver.switchTo().frame(ele); //若frame有id或name可取代这里的ele元素对象
driver.findElement(By.xpath("/html/body")).sendKeys(content+"[s:臭美]");
//切出
driver.switchTo().defaultContent();
8》自动化实验
解压PHPWind-Wamp-5.0.rar,安装phpwind项目,进行自动化发帖测试
public static void sendPost(String username,String key,String content) throws Exception{
WebDriver driver=new ChromeDriver();
driver.get("http://47.107.178.45/phpwind/");
//Thread.sleep(3000);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.id("J_username")).sendKeys(username);
driver.findElement(By.id("J_password")).sendKeys(key);
driver.findElement(By.id("J_sidebar_login")).click();
Thread.sleep(5000);
driver.findElement(By.linkText("版块")).click();
driver.findElement(By.linkText("中医药大学实习二班")).click();
Thread.sleep(5000);
driver.findElement(By.xpath("/html/body/div/div[2]/div[2]/div[2]/div/div[3]/a")).click();
driver.findElement(By.id("J_atc_title")).sendKeys("自动化测试");
WebElement ele=driver.findElement(By.xpath("//*[@id=\"mainForm\"]/div/nav/nav/div/div[3]/div[1]/div/div/div[2]/iframe"));
driver.switchTo().frame(ele);
driver.findElement(By.xpath("/html/body")).sendKeys(content+"[s:臭美]");
driver.switchTo().defaultContent();
driver.findElement(By.id("J_post_sub")).click();
Thread.sleep(3000);
//driver.quit();
}
性能测试
1》性能测试的基本概念
2》http协议的简单说明
1.http报文
- 请求行:说明请求类型,要访问的资源以及所使用的HTTP版本
- 请求头:键值对(Host:主机名,Connection:keep-alive,User-Agent:请求发出者……)
- 空行
- 请求头:可以承载请求参数
2.Http状态码
编码 | 含义 |
---|---|
1xx | 提示信息——表示请求已接收,继续处理 |
2xx | 提示信息——表示请求已被成功接收,理解,接受 |
3xx | 重定向——要完成请求必须更进一步操作 |
4xx | 客户端错误——表示请求有语法错误或请求无法完成 |
5xx | 服务器错误 |
3》抓包工具fiddler的安装和使用及过滤设置
- 双击FiddlerSetup.exe进行傻瓜式安装,安装好打开后会看到如下界面:
左侧是抓到的包,左下Capturing停止/开始抓包
- 这里其实我们主要看包的headers和webform
- 点击filters设置包过滤
4》jmeter的安装配置以及其下的接口测试
- 安装配置:
1.在盘符的根目录解压apache-jmeter-4.0.zip(注意:选择解压到当前目录)如 c:\ apache-jmeter-4.0
2.右击计算机→属性→高级系统设置→高级→环境变量,在系统变量中更新如下:
a.新增变量: JMETER_HOME 变量值:jmeter解压路径(如c:\ apache-jmeter-4.0)
b.修改部署java时的CLASSPATH 变量,变量值:在最后加上 ;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar; (备注:开头英文分号不能少)
c.修改PATH变量,变量值:在最后加上 %JMETER_HOME%\bin
- win +R , 在弹出的输入框输入cmd 进入dos命令窗口,输入jmeter 回车,能正常打开jmeter界面即可
- 接口测试:
1.测试架构(4个接口):
2.提取token
3.配置登录接口参数
4.设置http信息头
5.提取statue
6.配置跳转接口
7.配置回帖接口
9.回复内容采用随机函数生成
资源传送门,密码:12go