1-100 以内的质数,如何编写设计用例?

要用到哪些用例设计方法?
该怎么取值?

回答·7
最热
最新
  • 有没有人可以详细讲讲,今天被问到这个,刚开始质数不知道是什么意思,后面查了一下,知道要用等价类,但是具体设计一时半会没有理清楚
  • 首先开通 vpn,买个国外虚拟号,然后把这个问题粘贴复制给 gpt
  • 基础功能验证: 1 正常输入测试: 输入范围为1100,预期输出应包括2, 3, 5, 7, 11, ..., 97这些质数。 2 边界条件测试: 输入范围包含最小值1,预期输出应该不包含1,因为1不是质数。 输入范围包含最大值100,如果100被识别为质数,则为失败用例(100可以分解为2和50的乘积,非质数)。 3 子范围测试: 测试较小的范围,例如110、1120等,以确保在更小数据集上也能正确找到质数。 4 空集测试: 如果输入范围为一个负数或者0,预期结果应该是空集合或者明确的错误提示。 5 无效输入测试: 输入非数值类型,如字符串或布尔值,预期结果应该是错误提示或异常。 深度逻辑验证: 6 偶数测试: 确保所有偶数(除了2)都不会出现在质数列表中。 7 合数测试: 验证每个合数(如4, 6, 8, 9, 10等)都不在输出结果中。 8 复合数验证: 检查每个质数的倍数是否都被正确排除,例如检查2的倍数(2除外)、3的倍数(3除外)等。 性能与效率测试: 9 大范围输入测试: 虽然题目限定在1100范围内,但可以尝试扩大范围,如11000甚至更大,来验证算法在处理大量数据时的时间复杂度和效率。
  • 判断质数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是质数,反之是质数。 这样就可以用一个循环例如 python 的: import math for i in range(100, 200): for j in range(2, round(math.sqrt(i))+1): if i%j == 0: break else: print(i)
  • 在设计测试用例时,我们需要考虑什么是质数(只有两个正因数:1和它本身的自然数),边界情况,以及可能的错误情况。 以下是一些测试用例设计的建议: 1.正常情况: 测试所有1-100以内的已知质数,确保它们都被程序正确地识别为质数。例如:2, 3, 5, 7, 11, 13, ..., 97。 2.边界情况: 测试范围的上限和下限:1和100。虽然1不是质数,但程序应该能够正确处理它(不将其视为质数)。100也不是质数,但它是范围的边界,所以也应该测试。 测试接近边界的质数和非质数,如97(质数)和98、99(非质数)。 3.特殊情况: 测试非质数的例子,如4(第一个合数)、6(第一个偶非质数)、8、9(3的平方)、10等,确保它们不被错误地识别为质数。 测试一些容易混淆的数字,如1(不是质数也不是合数)、0(不在自然数范围内,但有的程序可能需要处理)、负数(如果程序需要处理的话)。 4.错误处理: 如果程序需要用户输入,测试输入非数字的情况(如字符串、特殊字符等),看程序是否能正确处理或给出错误提示。 测试输入超出范围(如小于1或大于100)的数字,看程序是否能正确处理。 5.性能测试: 虽然这不是直接的测试用例,但你可能还想测试程序在处理大量数据时的性能,尤其是如果你打算将其用于更大的数字范围。 编写测试用例时,建议使用自动化测试工具,这样可以轻松重复测试,并在程序更改时快速运行所有测试用例。这有助于在开发过程中尽早发现错误,并确保程序在发布前尽可能少地存在缺陷。
  • 等价类可没法严证,这个只能用代码,用正反两个方向来验证。 正向:写一个代码,生成1-100质数,和给定的质数对比,看是否一致。当然,你可能和生成给定质数的人犯了同样的错误,导致你俩的质数列表是一致的,但都错了,所以还需要反向验证。 反向就是你写个循环,把给定的所有质数依依进行验证,看看是否都符合质数的定义。 正反向都没问题了,那就没问题了,跟等价类没关系。
  • 输入值为 1,期望输出为空列表,因为 1 不是质数。 输入值为 2,期望输出[2],因为 2 是质数且小于等于 100。 输入值为 3,期望输出[2, 3],因为 2 和 3 都是质数且小于等于 100。 输入值为 50,期望输出[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47],因为这些数都是小于等于 50 的质数。 输入值为 101,期望输出为空列表,因为 101 不是小于等于 100 的数。 输入值为 0,期望输出为空列表,因为 0 不是正整数。 这些测试用例涵盖了输入边界条件、正常情况和异常情况,可以检验质数判断函数的正确性。