做软件几年下来,感觉做软件不难,做个好软件,----难。做个高质量的好软件,---非常难。

  难在哪里呢?

  做软件不难,软件工程--难。

  每个程序员都会写程序,写出的程序质量不一而论了。

  新手程序员写的程序肯定有很多的缺陷和bug,健壮性也很差。

  1、像sql注入,脚本注入,特殊字符,等等,这些问题新手肯定不会去考虑,因为新手都不知道还有这些问题存在。-->经验+知识欠缺

  2、程序的执行状态、执行过程中的各种可能遇到的问题。比如断电,短线等等,老程序员也不可能完全把握。--->思考欠缺

  3、找不到对象,程序执行着出错了。蹦出的错误,直接把程序挂掉。一出错整个程序没法运行下去。--->系统设计欠缺

  4、新的需求加进来的,程序改起来要人命。-->也是系统设计对变更的考虑欠缺。

  这些错误都是难免的。只不过老程序员写起来会自然而然的想到以前出过的错误,可能会出现的情况,自然写一些代码对之进行屏蔽。

  目前来看,要想写出一个好的,质量高的程序,只有把所有的错误都犯一边,下次再写的时候会注意了!!-----MyGod...这需要多少长的时间啊。所以说老程序员,值钱值钱在写的程序比别人考虑的多一点。

  但是也有另外一个方法可以控制住软件的质量,那是测试,把做好的软件测试一遍。测试合格,软件不合格了吗??测试的越严密越广泛,则程序的质量越高。所以有这么一个概念叫做测试覆盖度。一个测试可以测试系统中百分之多少的功能和bug。当然好一个测试能测试完的功能和bug。

  再来分析下看,抛开测试覆盖度不讲,单讲要测试的内容有哪些吧。

  比如:

  安全方面的sql注入测试,脚本注入测试等等;

  功能方面的单个模块的测试,模块组合集成后的测试,软件操作流程测试;

  界面方面的,人机交互优化,用户心理测试;

  bug方面的测试;

  稳定性方面的测试;

  安装方面的测试;

  运行支撑环境的测试;

  硬件需求方面的测试;