不同测试过程模型具有不同特征,不能一味地为使用模型而使用模型,应根据不同测试需求,综合利用不同模型的优势及价值。一个建议的策略是:以W模型为基本框架,灵活应用H模型,与软件开发同步,只要满足就绪条件就进行独立测试,并对测试工作进行迭代,直至实现测试目标。基于软件生命周期的测试过程模型如图3-14所示。
图3-14 基于软件生命周期的测试过程模型
软件测试过程中,可能难以获得真实环境,一比一地开发测试环境成本巨大,除非软件的可靠性要求高到其经济性可以忽略不计。建立全面模拟典型使用环境统计特性的仿真测试环境,无疑是最佳选择。对于嵌入式系统,按照V模型,将测试过程划分为模型测试/模型循环测试、快速原型法测试、软件循环测试、硬件循环测试、系统测试。将相应的测试映射到嵌入式系统开发的不同阶段,由此根据多V模型的结构描述其测试环境。从模拟系统到真实系统转变的测试过程如图3-15所示。
图3-15 从模拟系统到真实系统转变的测试过程
(1)同步测试:测试与开发是两个相互依存且同步的过程,测试活动始于需求分析,根据不同开发阶段开展测试活动,而不是编码结束之后才启动测试,只要条件具备,即可开始测试活动。同步测试强调尽早开始测试。
(2)全面测试:软件测试不仅仅局限于对程序的测试,程序中的数据及各开发阶段产生的文档也是测试对象。前期产品质量直接影响后期软件质量,代码质量影响系统质量。基于现代软件测试思维,软件测试不仅关注逻辑覆盖、功能覆盖,而且需要更加关注系统能力的覆盖。全面测试是指基于全方位视角对软件进行测试,有助于交付能力的保证。
(3)独立、迭代测试:在软件开发过程中,需求分析、软件设计、编码实现等可能重叠并反复进行,软件测试也是迭代和反复的。在测试的每一个阶段,应根据软件开发过程的变化,及时调整测试策略,动态修改测试过程文档,以保持与开发过程的同步更新。