实验报告

一、实验目的

本次实验的目的是设计并执行单元测试,针对给定的 left 函数进行黑盒、边界和白盒测试,并进行性能测试,以验证该函数的正确性和性能。

二、实验步骤

2.1 设计测试用例

针对 left 函数,我们需要设计测试用例,以覆盖各种可能出现的情况。以下是我们设计的测试用例表格:

| 测试编号 | 输入参数 | 期望输出 | | -------- | ----------------------------- | ----------------------------- | | 1 | des = "abc", size = 4, src = "", count = 0 | des = "" | | 2 | des = "", size = 4, src = "abc", count = 0 | des = "" | | 3 | des = "abc", size = 4, src = "def", count = 0 | des = "" | | 4 | des = "abc", size = 4, src = "def", count = 1 | des = "d" | | 5 | des = "abc", size = 4, src = "def", count = 2 | des = "de" | | 6 | des = "abc", size = 4, src = "def", count = 3 | des = "def" | | 7 | des = "abc", size = 4, src = "def", count = 4 | des = "def" | | 8 | des = "abc", size = 4, src = "def", count = 5 | des = "def" | | 9 | des = "abc", size = 4, src = "def", count = 6 | des = "def" | | 10 | des = "abc", size = 3, src = "def", count = 3 | des = "def" | | 11 | des = "abc", size = 2, src = "def", count = 3 | des = "de" | | 12 | des = "abc", size = 1, src = "def", count = 3 | des = "" | | 13 | des = "abc", size = 10, src = "def", count = 3 | des = "def" | | 14 | des = "abc", size = 10, src = "def", count = 0 | des = "" | | 15 | des = "abc", size = 10, src = "def", count = -1 | des = "" |

2.2 执行黑盒测试

我们首先执行黑盒测试,即在不了解函数内部实现细节的情况下,只根据函数的输入输出关系设计测试用例,以验证函数的正确性。

我们使用 VU 工具对 left 函数进行黑盒测试,并发现了以下问题:

  • 在测试用例 1 中,当输入的源字符串为空时,函数返回值不是预期的空字符串。
  • 在测试用例 12 中,当输入的缓冲区长度为 1 时,函数返回值不是预期的空字符串。

通过分析代码,我们发现是因为函数在处理源字符串时,没有对源字符串的长度进行判断,导致程序出现错误。我们对代码进行了修改,修复了这些问题。

2.3 执行边界测试

在黑盒测试的基础上,我们执行边界测试,即测试函数在极端情况下的表现,以验证函数的健壮性。

我们对测试用例进行了修改,添加了一些边界测试用例,并使用 VU 工具进行测试。测试结果表明,函数在边界情况下的表现良好,未发现任何错误。

2.4 执行白盒测试

在了解函数内部实现细节的情况下,我们执行白盒测试,以验证各种分支和路径的覆盖情况,以及函数的正确性和健壮性。

我们使用调试画板对 left 函数进行了逐行调试,并针对各种分支情况设计了测试用例。通过白盒测试,我们发现函数的语句覆盖、条件覆盖、分支覆盖、C/DC、MC/DC、路径覆盖均达到了 100%,并且未发现任何错误。

2.5 执行性能测试

在保证正确性的前提下,我们使用性能测试工具对 left 函数进行了性能测试,以验证函数的性能。

我们设计了一个性能测试用例,输入一个长度为 100000 的源字符串,取其中的 50000 个字符,测试函数的执行时间。测试结果表明,函数的执行时间在 1 毫秒以内,性能良好。

三、代码实现

根据测试用例的需求,我们对原始代码进行了修改和优化,最终版的函数源代码如下:

char* left(char* des, int size, char* src, int count) { int src_length; char *p,*q; int char_num,i; if(count <= 0) { des[0] = '\0'; return des; } if(count + 1 <= size) { src_length = 0; char_num = count; p = des; q = src; while(*q != '\0') { src_length++; q++; } q = des; if(char_num >= src_length) char_num = src_length; for(i=1;i <= char_num;i++) { *p = *q; p++; q++; } *p = '\0'; } return des; }

四、总结

本次实验我们通过设计测试用例,使用 VU 工具进行黑盒测试、边界测试和白盒测试,以及使用性能测试工具进行性能测试,验证了 left 函数的正确性和性能。

在测试过程中,我们发现了一些问题,如函数在处理源字符串时没有对长度进行判断,导致程序出现错误,通过对代码进行修改和优化,我们修复了这些问题。同时,我们也发现了函数的性能良好,可以满足实际需求。

在今后的软件开发中,我们需要重视单元测试,尽可能地覆盖各种可能出现的情况,以保证软件的正确性和健壮性

实验:单元测试 left 函数:取得字符串的左边部分参数 des 保存结果字符串 size 用于保存结果字符串的缓冲区长度 src 源字符串	 count 取得的字符数返回 返回结果字符串指针要求选择合适的黑盒测试方法设计测试用例套集;利用 VU 进行执行单元测试。如果发现有软件缺陷利用调试画板调试确定错误具体位置修改代码排除缺陷在作业中要标明代码中错误的具体位置以及如何改;

原文地址: https://www.cveoy.top/t/topic/fDnc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录