软件开发的生命周期主要包括以下的阶段:
1、问题定义。
2、可行性研究。
3、需求分析。
4、概要设计。
5、详细设计。
6、编码和单元测试。
7、综合测试。
8、软件维护
以上就是一个软件开发的完整生命周期,能比较明显的看出,到详细设计为止,之前的阶段很少涉及到测试的环节,从编码实现开始,测试就开始贯穿之后的阶段,编码实现中,用的最多的就是单元测试,编码人员或测试人员主要通过一些测试用例来检测编写的代码块是否实现了所需要的功能,但是单元测试中又分为黑盒测试和白盒测试,黑盒测试是不知道内部的详细实现,只是测试一个功能是显示,所以又称为功能测试,它只能验证输入和输出的关系,却不能发现设计上的存在的问题。而白盒测试,则需要读懂代码,了解内部的详细实现,然后编写测试用例,常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。无论白盒测试还是黑盒测试,都只能在一定程度上保证模块功能的正确性,而不能保证百分之百的正确,所以在后期还会有相应维护。
假设各个模块都已经测试通过,那么就进入到了下一个阶段,那就是综合测试,其中最基本的测试就是集成测试和验收测试。所谓集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。在这个测试中经常出现的情况就是:每一个模块的测试都能通过,但是一集成就会出现各种各样的问题。而验收测试则是按照规格说明的规定(通常在需求分析阶段确定),由用户(或在用户积极参与下)对目标系统进行验收。当然还包括了压力测试(尤其是大型的网站)以及性能测试。
其实交付客户使用之后,也可以看做是一个测试,不过是各个用户进行测试,发现问题后反馈到开发方,也就是软件维护。
测试在软件开发生命周期中占着极大的比重。而且对任何一个软件都具有很重要的意义,开发人员只能通过测试的结果分析软件中存在或遇到的问题,才能进行修正。所以不能轻视测试的作用。
(以上仅代表笔者意见,出错之处,请各位读者及时指出,以免误导他人)