新闻动态

开发的第二个原则积累任何技能都需要积累测试也不例外

2019-03-11 20:05:57 作者:小麦

任何技能都需要积累,软件开发也不例外。

我有—个“疯狂”的想法:在理想的情况下,如果软件测试方面的知识积累足够丰富,自动化测试工具足够先进,如果我们可以把软件测试中积累的知识,完全应用到软件的构建过程中去,那么,我认为,很多持续型项目不一定需要进行软件测试(核弹等高危行业的软件除外)

在逻辑世界里,不会有机器故障,软件测试只是严格地重复那些足够充分的可行性测试而已。

在大自然中,狮子的攻击技能世代相传,这使它们可以长期站立于食物链的顶端。而在软件测试实践中,很多软件测试组织却缺乏软件测试技能的积累。

我经常看到这样的场景:软件开发完成之后,软件测试人员根据自己的经验,搭建测试环境、编写测试用例、反馈测试结果。这些工作总是从头开始,仅有的一些可以重用的经验,也只是存在于测试人员的大脑中。比方说,在测试用例中指定可以输入的边界值、尝试各种特殊字符等。

在理想的工作模式下,很多攻防的方案(例如,边界值和特殊字符的处理,安全漏洞的防御方法等),都应该是自动化测试的一部分根本不需要从头建立。

换句话说,对于软件来说,软件测试中的模拟攻击不应该总是新鲜事物。在软件构建的过程中,我们应该对以往软件开发的成果进行总结,并把测试成果应用到软件的构建过程中去。比方说,不是在测试阶段才考虑边界值和特殊字符,而是在构建时就有针对这些问题的解决方案。

安全和性能的问题也是如此。

仅仅在软件生产结束后才进行某些系统特性(例如,安全和性能)的测试是错误的,这种“测试驱动”(驱动缺陷修复的生产后测试)会带来高昂的返工成本。