我有一个旨在在应用程序的搜索功能中查找错误的函数,该函数为generates a variable-length search string from the non-control UTF-8 possibilities.在此函数上运行pytest迭代(提交供搜索的随机UTF-8字符串),大约每500次搜索就会生成调试错误.
因为我可以抓住导致错误的每个字符串,所以我想确定真正引起错误的那些字符串中字符的最小子系列是什么.换句话说,(在pytest循环内):
def fumble_towards_ecstasy(string_that_breaks):
# iterate over both length and content of the string
nugget = # minimum series of characters that break the search
return nugget
我是否应该将字符串切成两半然后递减,然后重新提交直到失败,请从(len()-1)中选择随机字符,然后在没有错误的情况下进行备份?蛮力组合?逐步解决此问题的最佳方法是什么?
谢谢.
解决方法:
如果有两个字符序列导致失败,并且该序列恰好位于中间,则将字符串拆分为两部分将失败.每一半都成功,但是组合的字符串失败.
这是一个可以找到局部最小值的算法:
尝试依次删除每个字符.
>如果删除字符仍然会导致失败,请保留新的较短的字符串,然后对该新字符串重复算法.
>如果删除字符不再导致失败,请放回并尝试删除下一个字符.继续进行下去,直到没有其他字符可以尝试为止.当您到达字符串的末尾时,您知道删除任何一个字符都会使搜索成功.
原文地址:https://codeday.me/bug/20191127/2076502.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。