基于Huffman编码的文件压缩——测试报告

一、项目背景

1.项目简介

 1.1基本原理:依据字符出现的概率来构建平均长度最短的码字

 1.2文件压缩步骤如下:

(1) 读取源文件文件,统计其中所有不同字符的出现次数。

(2) 构建Huffman树:利用优先队列根据字符频率构建哈夫曼树。在构建过程中,每次从堆中取出频率最小的两个节点,将它们合并为一个新节点,新节点的频率为这两个节点频率之和,新节点作为这两个节点的父节点,再将新节点放回堆中,重复此操作,直到堆中只剩下一个节点,即哈夫曼树的根节点。

(3) 获取Huffman编码:以字符中每个字符出现的总次数为权值构建Huffman树,Huffman树中左分支用0代替,右分支用1代替,所有权值节点都在叶子位置,遍历每条到叶子结点的路径获取字符的编码。

(4)文件压缩:打开被压缩文件,获取文件中每个字符出现的总次数,以每个字符出现的总次数为权值构建Huffman树,通过Huffman树获取每个字符的Huffman编码,读取源文件,对源文件中每个字符使用获取的Huffman编码进行改写,将改写结果写到压缩文件中,直到文件结束。

(5)文件解压缩:读取压缩文件和配置文件,根据配置文件中的字符频率信息重构哈夫曼树。然后逐位读取压缩文件中的编码,根据哈夫曼树进行解码,将解码后的字符依次写入解压缩文件,直到压缩文件读取完毕。

2.开发环境以及测试工具

开发环境:Visual stdio 2019

测试工具:Beyond Compare

二、测试安排

      模块               子模块提测时间排期进度
   功能测试压缩和解压缩、用不同格式的文件进行压缩和解压缩操作8.238.25测试完成
   界面测试主页面8.238.25测试完成
   性能测试程序的压缩性能8.238.25测试完成
  兼容性测试Windows运行程序、ios运行程序8.238.25测试完成
  易用性测试能否快速适用产品的使用流程8.238.25测试完成

三、测试用例

四、测试分类

1.功能测试

功能测试覆盖压缩、解压缩和退出功能

测试结果:测试用例100%通过

2.界面测试

界面测试覆盖菜单页界面

测试结果:测试用例100%通过

3.兼容性测试

覆盖了常见的操作系统,windows和ios

测试结果:测试用例100%通过

4.安全性测试

安全测试覆盖了压缩数据和解压缩数据是否会丢失

测试结果:测试用例100%通过

五、测试Bug

bug:压缩文件中加入中文字符程序崩溃

错误原因:经过查看各个变量的具体内容,可以发现是数组访问越界,汉字在内存中存储的时候占两个字节,我们用一个字节来表示一个汉字,那么这两个字节一般都是负数,很容易导致数组元素访问失败。

解决方法:在读取中文字符时会导致char类型出现负数,所以可以将暂时存储字符的数组设置为无符号类型,就不会出现负数了,即将所有的char类型改成unsigned char,程序就可以正常运行了。

六、测试结果测评

1.基于Huffman编码的文件压缩在压缩文本文件压缩率较高,而在压缩图像、视频文件甚至出现越压缩文件越大的情况。

2.Huffman的解压时间较短,适用于需要频繁解压文件的场合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值