从软件测试的角度,怎样专业的对机器学习中的各种算法进行测试,保证算法结果的正确性
先点个赞!说实话这个东西已现有的软件测技能来说是个无解的答案.在此之前我自己给这个的定义叫算法测试!至于说从现有的软件测试来说这个东西是真心的无解,如果你真要测试的话,我可以给你几个参考意见:仅供参考!仅供参考!仅供参考!1.象征性测试,ps:这个测不测对真正的测试来说和没测没啥差别!那一些所谓的可以验证这个这个算法的数据验证一下,只要没问题就算通过!2.验证性测试,ps:这个测试手段仅仅比第一个严谨那么一点点,还是可以忽略不计.这个测试就是最开始做的时候你的业务数据模型做测试只要合格就算测试通过!上述所说的测试手段仅仅是绝大多数国内开发眼中的测试,对于我这种专业玩测试的人来说可以算是业余吧,没有鄙视人的意思,单纯就事论事!下面来点干货!算法测试:本人所能设计出来的测试手段分下述手段和步骤,主要以白盒测试和黑盒测试思想相结合的测试逻辑.1.在算法被设计之前,主要考虑业务场景.如:数据是否规范,假设存在错误数据集中存在正确数据怎么办?反之怎么办?2.数据效率:你设计的这个算法数据处理效率的高低,快还是慢?不要和我说这算法用了很久你说的问题不存在!3.白盒测试和集成测试这个是算法测试的重点,白盒测试简单说一下,循环嵌套的测试,if和else的逻辑路径走查等,你可以找下白盒测试相关的东西;还有就是你的模块在运行时A模块输出的东西是b模块要的数据,那么B模块里运行A模块的数据是否被正确运行,这些都需要测试.有了这三点再结合语言的特点在进行详尽的代码白盒测试,比如说数组计数了等等,我不是开发所以也不知道你面临的算法和语言结合的坑.就写着么多吧,毕竟如果你真要详细测试一个算法保守估计每个一两年估计是够呛.但是测试算法本身就需要你对数学要有很强的基本功,不说你能完全理解你哥德巴赫猜想的证明逻辑,你也要这个东西拿出来你也要能百分百看懂,这样你才能把一个算法测试完整.想想原山东大学王晓云教授证明md5和sha1算法有缺陷你就能对这个问题的专业性就有个完整的理解了!
■网友
首先,机器学习的算法与普通的软件的结果是不同的,一般来说无法对整个测试集保证其正确或者错误(对于分类问题),回归问题就更无法下这个定义了。所以一般机器学习的测试集是用来测试根据训练集得到的模型是否在测试集上运行良好,既符合期望。主要的衡量标准有更多,比如泛化程度(既从一个小的训练集学习到的模型是否能符合更大的数据),特殊程度,真正例率,假正例率等。对于机器学习,没有一个固定的对错,只有一个更适合于某个问题(数据集)的模型,所以用软件测试的方法考虑机器学习是不恰当的,应该用统计理论去分析一个机器学习算法是否足够好,而这个足够好也是给予具体问题和具体样本,去跟另外一个算法进行比较,甚至还要具体到你所偏高的结果等等。最终答案,机器学习的算法的输出没有对错之分,分析算法好不好,要从正确率,时间空间复杂度,数据集大小对算法效率的影响等几点去比较不同的算法,所以不存在你说的问题…白盒测还有点意义,黑盒测试在没有对比的情况下没有什么意义。因为无法假设一个正确的输出。如果你想做机器学习的算法测试,数学学习,统计学是最基本的,所有的算法原理必须掌握。个人觉得问这个问题没什么意义,因为一旦机器学习的算法你都懂了,你就去写代码了…
■网友
首先我不知你是从事黑盒还是白盒测试从黑盒测试角度讲:首先按照需求文档整理出各种算法的测试需求,然后根据测试需求设计测试用例,让测试用例覆盖到所有测试需求点,设计测试用例时可以设计每个功能点每种测试方法的预期结果,这样在执行测试时按照测试用例逐条测试就能最大保证测试有准确性和完整性。黑盒常用的测试用例方法有:等价类、边界值、错误推断法、因果图法、判定表驱动法、功能图法、场景法。从白盒测试角度讲,机器算法比较复杂,对代码能力要求较高,但从软件测试的角度来讲,原则是不变的。白盒测试可在单元测试阶段由开发人员或专业的白盒测试人员执行。要验证各种算法的正确性,就需要采用白盒测试的方法先设计白盒测试用例。常见的有逻辑覆盖法,逻辑覆盖又包括以下这些不同标准:语句覆盖(SC)、判定覆盖(DC)、条件覆盖(CC)、条件判定组合覆盖(CDC)、多条件覆盖(MCC)和修正判定条件覆盖(MCDC)。以上是针对比较简单的程序段,如果路径很复杂最好采用基本路径测试法。在程序控制流程图的基础上,通过分析控制流图的环路复杂性,导出基本可执行路径的集合,然后再根据此设计测试用例。设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次。具体情况具体结合项目去分析,采用不同的测试策略,无论采用哪种策略,最好都要按正规的测试流程去执行,这样可避免漏测、重复测试和盲目无效测试。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 大学再有三个月就结束了,没学到知识,参加一个软件测试培训机构好吗
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
