自动编程体系设想
编程的演化
编程语言的发展
随着语言的发展,编写的代码将越来越精简,而且领域化(不同领域用不同的编程语言,以达到开发效率和程序性能的最优化)。
自动编程的需求
在各种设计框架、基础库日益完善的情况下,上层应用中的编程基本上就是找API,构建一个调用逻辑,然后反复的开发自测试。下层框架/函数库开发一般都基于开源代码不断优化,同样反复地自测试。
在软件开发中,编程这一环节事实上越来越成为简单重复的劳动。有重复就有自动化的欲望,也因此有了自动编程的思想。
自动编程思想
自动编程,指的是根据测试用例自动生成符合测试用例的程序。简而言之,将数据变成程序。
与代码生成器(模板驱动开发)相比,自动编程强调由预期结果生成程序逻辑,而不仅仅是由逻辑生成程序代码。
如此框架下,在一般的软件开发中,不需要资深程序员/架构师的参与,他们从事平台性的工作,开发与测试不分,有测试用例就会生成代码。
开发就是测试
有了测试用例自动转化成程序的机制,开发人员的主要工作就是搭建自动编程环境,基于对需求的理解编写测试用例,并且对自动生成的代码进行测试。这个工作事实上就是现在测试人员的工作。原来软件开发流程中的测试环节已经没有存在价值。
没有测试环节并不意味着产品质量得不到保障,事实上,测试环节是完全被开发覆盖了,由于程序自动化生成,避免了人写代码出低级错误的可能,产品质量更有保障。
数据就是程序
在能够根据用例表生成代码的情况下,完善的测试用例数据即等同于程序。所有的需求变更反映到用例数据的更新。
一个程序好不好用,一方面在于其需求设计是否合理,测试用例是否设计完备;另一方面,在于构建程序的环境是否有足够丰富的代码源(早期来源于程序员的编写,后期主要是自动生成的有效代码段),是否有足够的计算能力。
总而言之,程序来源于数据,好坏取决于数据量和数据处理能力。
用户也是开发
程序开发者可以把测试用例数据的编写规范开放,使用户在使用的过程中自行输入新的测试用例数据,传到开发者的服务端或直接本地生成更加优秀的程序。