测试项目简介:该项目为线上图片服务器测试,图片服务器主要实现的功能为图片的上传、删除、放大和进行列表展示。
一、待测项目功能展示
(根据与开发人员共同完成项目的需求分析实现)
1.主页(图片列表页)
2.从本机上传图片
?3.点击图片列表的任一图片,放大
4.点击右侧按钮或左侧按钮,切换图片
5. 删除图片,跳出弹框提示
?6.删除成功后自动刷新列表
?
?二、根据需求编写测试用例
(这里我使用了 Xmind 使用版进行测试用例的编写,较为直观,也方便后期汇总为文档)
?
三、测试
按照开发阶段化划分
项目测试顺序:
单元测试——功能测试——自动化测试,性能测试
1.单元测试
框架:Junit 框架
测试方法:白盒测试,主要对代码的路径覆盖、错误处理等进行测试。
(这里只对imageDAO层进行了单元测试)
代码如下:
package dao;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.*;
public class ImageDaoTest {
@Before
public void before(){
System.out.println("----------before--------------");
}
@After
public void after(){
System.out.println("----------after--------------");
}
@Ignore
@Test
public void insert() {
//准备测试数据
ImageDao imageDao = new ImageDao();
Image image = new Image();
image.setImageName("test.png");
image.setUploadTime("20200629");
image.setPath("./image/fbab242a577efdf0c530a27a92e0c255");
image.setMd5("fbab242a577efdf0c530a27a92e0c255");
image.setContentType("image/png");
image.setSize(45197);
//测试,在数据库中可查看是否插入成功
imageDao.insert(image);
}
@Test
public void selectAll() {
ImageDao imageDao = new ImageDao();
List<Image> lists = imageDao.selectAll();
System.out.println(lists.size());
System.out.println();
for (Image image:lists) {
System.out.println("imageId = " + image.getImageId()+" "+"imageName = "+image.getImageName());
}
}
@Test
public void selectOne() {
ImageDao imageDao = new ImageDao();
try {
Image image = imageDao.selectOne(2);
System.out.println(image.getImageName());
System.out.println(image.getImageId());
System.out.println(image.getSize());
System.out.println(image.getMd5());
}catch (Exception e){
System.out.println("查询失败,imageId 不存在!!!");
}
}
@Test
public void delete() {
ImageDao imageDao = new ImageDao();
List<Image> lists1 = imageDao.selectAll();
System.out.println("删除前图片容量" + lists1.size());
imageDao.delete(54);
List<Image> lists2 = imageDao.selectAll();
System.out.println("删除后图片容量" + lists2.size());
if(lists1.size()>lists2.size()) {
System.out.println("删除成功");
}else {
System.out.println("删除失败,imageId 不存在!!!");
}
}
@Test
public void selectByMd5() {
ImageDao imageDao = new ImageDao();
try {
Image image = imageDao.selectByMd5("fbab242a577efdf0c530a27a92e0c255");
System.out.println(image.getImageId());
System.out.println(image.getImageName());
System.out.println(image.getPath());
} catch (Exception e) {
System.out.println("查询失败,Md5 不存在!!!");
}
}
}
2.功能测试
测试方法:黑盒测试
(这里按照上面写的测试用例进行了手工测试)
3.自动化测试
测试工具:selenium
脚本语言:Python
(这里简单测了一下上传、删除和查看)
import HTMLTestRunner
from selenium import webdriver
import time
import unittest
import os
import sys
from selenium.common.exceptions import NoAlertPresentException
from ddt import ddt, file_data, unpack, data
@ddt
class testCase1(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.url = "http://这里是服务器ip地址/DrawingBed_war/"
self.driver.get(self.url)
self.driver.maximize_window()
time.sleep(3)
def tearDown(self):
self.driver.quit()
#删除
def test_delete(self):
driver = self.driver
driver.get(self.url)
time.sleep(3)
driver.find_element_by_xpath("//*[@id='container']/div[1]/button").click()
time.sleep(3)
driver.switch_to.alert.accept()
time.sleep(3)
driver.switch_to.alert.accept()
#上传
def test_upload(self):
driver = self.driver
driver.get(self.url)
time.sleep(3)
driver.find_element_by_xpath("//*[@id='blog-collapse']/form/div[1]/input").send_keys(r"C:\Users\PC\Desktop\666.jpeg")
time.sleep(3)
driver.find_element_by_xpath("//*[@id='blog-collapse']/form/div[2]/input").click()
time.sleep(3)
#查看
def test_select(self):
driver = self.driver
driver.get(self.url)
time.sleep(3)
driver.find_element_by_xpath("//*[@id='container']/div[1]/img").click()
time.sleep(3)
if __name__ == '__main__':
unittest.main(verbosity=0)
四、bug汇总
1.删除图片后刷新页面图片依旧存在 原因:删除图片未删除干净(上传时本地还有一份图片数据,删除时未删除)
2.上传已删除过的图片显示写失败,再次刷新页面才会显图片 原因:删除图片未删除干净(上传时本地还有一份图片数据,删除时未删除)
3.上传非图片的文件上传成功 建议:上传时进行判断
4.上传空文件上传成功 建议:上传时进行判断
5.全部图片在同一个页面,图片过多时,对服务器压力过大 原因:未分页处理,服务器性能差
6.图片名称过长时未折行展示,影响美观 建议:折行展示或只显示前面部分长度,使用“展开”,显示全部名称
|