一、对整个系统编写测试用例
功能测试
性能测试
兼容性测试
易用性测试
安全测试
二、接口测试
针对接口的功能测试,也就是检验接口是否按照接口文档输入输出
2.1 使用Postman发送HTTP请求
2.2 使用Java + TestNG 编写自动化测试用例
登录界面功能
package com.sky.test;
import org.junit.jupiter.api.Order;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import java.util.concurrent.TimeUnit;
public class LoginAndOut {
public static WebDriver driver;
@BeforeClass
@Order(1)
public void openBrowser(){
System.setProperty("webdriver.edge.driver" , "D:/EdgeDriver/msedgedriver.exe");
//打开浏览器
EdgeOptions options = new EdgeOptions();
options.addArguments("--remote-allow-origins=*");
driver = new EdgeDriver(options);
System.out.println(driver);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}
/**
* 登录,登出
* @throws InterruptedException
*/
@org.testng.annotations.Test
@Order(2)
public void Login() throws InterruptedException {
// driver = new E;
driver.get("http://www.localhost:81");
driver.manage().window().maximize();
driver.findElement(By.xpath("//input[@placeholder='账号']")).clear();
driver.findElement(By.xpath("//input[@placeholder='账号']")).sendKeys("admin");
Thread.sleep(1000);
driver.findElement(By.xpath("//input[@placeholder='密码']")).clear();
driver.findElement(By.xpath("//input[@placeholder='密码']")).sendKeys("123456");
Thread.sleep(1000);
driver.findElement(By.xpath("//span[text()='登录']")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[2]/div/div[2]")).click();
driver.findElement(By.xpath("//span[contains(text(),'管理员')]")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("//div[@class='userList']/p[@class='outLogin']")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("//span[text()='登录']")).click();
}
}
添加菜品功能
package com.sky.test;
import net.sf.jsqlparser.statement.select.KSQLWindow;
import org.junit.jupiter.api.Order;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.util.concurrent.TimeUnit;
public class homepage {
public WebDriver driver;
@BeforeClass
public void openBrowser() {
driver = LoginAndOut.driver;
}
/**
* 登录-菜品管理-添加菜品
*/
@Test
@Order(3)
public void saveDish() throws InterruptedException {
driver.findElement(By.xpath("//div/a[@href='#/dish']")).click();
driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[2]/section/div/div/div[1]/div[4]/button/span")).click();
driver.findElement(By.xpath("//input[@placeholder='请填写菜品名称']")).clear();
Thread.sleep(1000);
driver.findElement(By.xpath("//input[@placeholder='请填写菜品名称']")).sendKeys("selenium");
driver.findElement(By.xpath("//input[@placeholder='请设置菜品价格']")).clear();
Thread.sleep(1000);
driver.findElement(By.xpath("//input[@placeholder='请设置菜品价格']")).sendKeys("888");
driver.findElement(By.xpath("//input[@placeholder='请选择菜品分类']")).click();
Thread.sleep(1000);
WebElement element = driver.findElement(By.xpath("//ul[@class='el-scrollbar__view el-select-dropdown__list']"));
driver.findElement(By.xpath("//ul[@class='el-scrollbar__view el-select-dropdown__list']/li/span")).click();
driver.findElement(By.xpath("//span[@class='addBut']")).click();
driver.findElement(By.xpath("//input[@placeholder='请选择口味']")).click();
driver.findElement(By.xpath("//input[@name='file']")).sendKeys("C:\\Users\\FK\\Desktop\\HTML+CSS+JavaScript\\fengjing1.jpg");
driver.findElement(By.xpath("//textarea")).sendKeys("haochi");
driver.findElement(By.xpath("//span[contains(text(), '保存')]")).click();
}
}
生成对应类的xml文件,指定每个test(测试类)的执行顺序,顺序完成操作