一.单元测试
在编码阶段对一个具体的模块进行单元测试。
测试模块:将图片对象插入到数据库的操作,查找数据库中所有图片属性信息操作,查找数据库中单个图片属性信息操作,将一个图片对象从从数据库中删除操作。
首先导入第三方Junit依赖
<!--单元测试矿浆junit依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
单元测试代码
//图片服务器项目----单元测试
public class ImageDaoTest {
//在执行某一个测试方法前都会执行
@Before
public void before() {
System.out.println("=====开始测试======");
}
//在执行某次测试方法后会执行
@After
public void after() {
System.out.println("=====测试结束======");
}
//把一个 image 对象插入到数据库中
@Test
public void insert() {
ImageDao imageDao = new ImageDao();
Image image = new Image();
image.setImageName("test.png");
image.setSize(1024);
image.setUploadTime("2021-02-10 17:55:01");
image.setPath("./image/9f44c38db7342195d7d287159f79fab9");
image.setContentType("image/png");
image.setMd5("708595c05102e4dd399416717cb6304d");
boolean flag = imageDao.insert(image);
System.out.println("result:"+flag);
}
//查找数据库中所有图片的属性信息
@Test
public void selectAll() {
ImageDao imageDao = new ImageDao();
List<Image> list = imageDao.selectAll();
System.out.println(list.size());
for (Image image : list) {
System.out.println(image);
}
}
//根据 imageId 查找指定图片的属性信息
@Test
public void selectById() {
ImageDao imageDao = new ImageDao();
//id存在情况
Image image = imageDao.selectById(3);
System.out.println(image);
//id不存在情况
Image image1 = imageDao.selectById(100);
System.out.println(image1);
}
//根据 imageId 删除指定图片
@Test
public void delete() {
ImageDao imageDao = new ImageDao();
//id存在的情况
imageDao.delete(16);
//id不存在的情况
imageDao.delete(18);
}
//按照 md5 的值来查找数据库中的 “图片”(图片的 md5 值是唯一的)
@Test
public void selectByMD5() {
ImageDao imageDao = new ImageDao();
//md5值存在的情况
Image image = imageDao.selectByMD5("9f44c38db7342195d7d287159f79fab9");
System.out.println(image);
//md5值不存在的情况
Image image1 = imageDao.selectByMD5("test");
System.out.println(image1);
}
}
二.集成测试
测试模块组装功能的正确性、模块之间的数据传输、模块之间的功能冲突、全局数据结构、单模块缺陷对系统的影响等方面。
ImageServlet 类中调用的 ImageDao 类中的相关方法,来操作数据库
ImageShowServlet 类中调用的 ImageDao 类中的相关方法,来操作数据库
三.系统测试
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。
测试内容:功能、界面、兼容性、安全性
(1)功能:对整个项目的功能进行测试。
(2)界面:对 UI 界面进行测试。判断是否美观大方。
(3)兼容性:在不同版本的浏览器上进行测试。
(4)安全性:在白名单中没有存在的网址,是否可以进行图片内容的查看。
四.回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
selectByMd5() 方法是最后添加的 ,测试添加后程序是否正常。
五.验收测试
验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。
验收测试的目的是确保软件准备就绪,准备发布上线。
六.测试用例的编写
6.1:功能测试
上传功能:
1、点击选择上传按钮,可以出现电脑中资源选择的页面
2、点击选择上传按钮,可以出现电脑中资源选择的页面,选中一张图片,点击打开按钮,方框中"未选择任何页面”–>"图片名称”
3、点击上传按钮,页面会刷新,展示出刚刚上传的图片。存放图片的位置会有新的文件出现。数据库中会插入一条新的数据
4、上传图片格式为JPG,PNG格式的图片均可以上传成功
5、不选择任何文件,直接点击上传,应该有提示”请您选择一张图片”,
6、上传整个文件夹,无法上传,只会打开该文件夹,无法上传文件夹
7、不允许一次性上传多个文件(无法选中多个图片文件
8、上传文件大小大于磁盘空间剩余大小,提示"磁盘空间不足,上传 失败!
9、磁盘空间剩余0上传文件,提示”磁盘空间不足,上传 失败!
10、上传除 了图片以外的其他类型的图片,上传失败,比如doc、ppt、安装程序。
11、无法进行批量上传图片
12、上传不存在的图片
13、上传 一个图片名称和数据库中图片名称相同、内容不同
14、上传 一个图片名称和数据库中图片名称相同、内容不同图片名称相同,图片内容不同
删除功能:
1、选择某一张图片下面的删除功能,点击,会出现提示删除弹框,点击确定,图片成功从页面上移除·
2、不能进行批量删除.(有删除全部图片按钮)
3、删除某一-张图片之后,页面整体图片为会发生重新排版
4、删除图片后,在服务器存放图片的路径下,该图片是否消失
5、删除图片后数据库中存放该图片的数据也相应被删除
6、删除相同名称的其中一个图片,不会对其它名称相同的图片产生影响。
7、删除名称相同,图片内容也相同的图片中-一张图片,对和该图片相同的图片不会产生影响
异常情况:
1、数据库服务未启动,上传文件失败
2、弱网(不同网络的情况下) . 图片加载、上传和展示功能
3、加载(展示)已经损坏的文件,web前端页面不再展示,比如文件名称被篡改或者文件本身损坏
4、在上传的过程中,停止tomcat,查看是否上传成功
6.2:性能测试
从点击按钮到提交在三秒以内,符合358原则
6.3:界面测试
布局:
1、图片比较多时,每一行最多五张图片,剩下的折行展示
2、每张图篇的大小一-致,都是200px* 200px
3、每一张图片都在一个div框里面,图片左下角有图片名称,删除按钮
4、每一页最上面是logo,标题,接下来右边是图片上传按钮,最后一部分展示的是已经上传到服务器上的图片。
文字部分:
1、字体的大小、字体的粗细、是否斜体展示、展示的位置
2、字体是否成功展示、页面上图片文件的名称是否按照设置的大小,字体形式展示
图片部分:
1、图片是否完全展示,即上传的图片和展示的图片内容致
2、每一行的图片个数相等,展示风格-一致
3、点击图片本身可以放大图片
4、图片的放大.点击图片右边的放大按钮,也可以放大图片
5、可以连续查看放大图片
6、页面最多展示多少张图片
6.4:安全性测试
1、防止sql注入
2、上传带有病毒的文件
3、超过图片超过最大限值时服务器会不会崩溃
4、防盗链机制是否起作用
6.5:兼容性测试
1、各种浏览器访问均可正常操作(Google、IE、FireFox)
2、相同浏览器的不同版本
3、不同的操作系统、苹果、linux、windows7 10 xp
6.6:易用性测试
1、上传图片时,只要选中图片即可图片输入框,即可上传图片,不一定非是按钮
2、页面功能按钮设计的直观易用,一登录就可以立刻捕捉到上传和删除按钮