总述:这部分简单描述了软件测试部分需要完成的活动,这些活动需要遵循一些规则。系统实现是项目管理重点关注的地方,系统测试一方面是为了检查实际情况和要求之间的差距提供纠错的基础信息,另一方面是为了最后的系统交付做准备。
1、系统实现
答:系统实现阶段是将设计的系统实施的过程。程序设计方法是软件工程方法学的主要内容之一,主要有结构化程序设计、面向对象程序设计、面向方面的程序设计、可视化程序设计。程序设计语言的具体选择需要基于系统设计的基础上进行考虑。
2、软件测试
答:软件测试是发现软件错误(缺陷)的主要手段,它是软件交付客户之前必须完成的重要步骤。
自动化测试主要实现方法包括代码的静态和动态分析、测试过程的捕获与回放、测试脚本技术、虚拟用户技术、测试管理技术等。自动化测试的优点:提高测试执行速度、提高工作效率、保证测试结果的准确性、连续运行测试脚本、可模拟现实环境下受约束的情况。自动化测试也有缺点,如测试数据变动需要重新调试、只能重复以前测试的不能对未自动化部分测试等。当前流程的自动化测试工具主要使用脚本技术来生成测试用例。脚本的基本结构有:线性脚本、结构化脚本、共享脚本、数据驱动脚本、关键字驱动脚本。常用的自动化测试工具有单元测试工具、负载和性能测试工具、GUI功能测试工具、基于Web应用的测试工具,其他方面的测试工具等。
软件调试属于技术方面的问题,对于技术人员来说,此处跳过。
3、软件测试方法
答:软件测试方法分为静态测试和动态测试,动态测试一般采用白盒测试和黑盒测试。
静态测试采用人工检测和计算机辅助静态分析的方式进行检测。静态测试包括文档的静态测试和代码的静态测试。绝对文档的静态测试主要以检查单的形式进行;对代码的静态测试一般采用桌前检查(Desk Checking)、代码审查、代码走查。静态测试可以有效发现30%-70%的逻辑设计错误和编码错误。桌前检查是由程序员自己检查自己编写的程序。代码审查是若干程序员和测试人员组成一个会审小组,通过阅读、讨论、争议,对程序进行静态分析的过程。代码走查基本与代码审查类似,却别在于代码走查是需要挑选一批代表性测试案例沿程序逻辑运行一遍,记录轨迹供分析和讨论。在静态测试中,主要对程序代码进行静态分析,包括控制流分析、数据流分析、接口分析、表达式分析。
白盒测试也称为结构测试,主要用于软件的单元测试。白盒测试主要有控制流测试、数据流测试、程序变异测试等。
黑盒测试也称为功能测试,主要用于集成测试、确认测试、系统测试阶段。黑盒测试根据SRS所规定的功能来设计测试用例,一般包括功能分解、等价类划分、边界值分析、判定表、因果图、状态图、随机测试、错误测试、正交实验法等。
4、测试的类型
答:根据国标,软件测试分为单元测试、集成测试、配置项测试、系统测试、验收测试、回归测试等。
单元测试也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或OO软件中的类,检查其是否符合设计说明中的要求。单元测试的技术依据是软件详细设计说明书。单元测试的策略主要包括自顶向下、自底向上、孤立测试、综合测试。单元测试分析一般采用静态测试分析和动态测试分析结合的方法。
集成测试是检查模块之间、模块和已集成软件之间的接口关系,并验证已集成的软件是否符合设计要求。集成测试的技术依据是软件的概要设计文档。集成测试的策略主要包括基于分级的集成策略、基于功能的集成策略、基于调用图的集成策略等。集成测试分析既包括对被测软件本身的分析,也包括对测试可行性和测试策略的分析。
系统测试的对象是完整的、集成的计算机系统,系统测试的目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。系统测试的技术依据是用户需求或开发合同。一般来说,系统测试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全测试、安装与反安装测试等,其中最重要的是功能测试和性能测试。功能测试使用的是黑盒测试。。性能测试主要包括压力测试、负载测试、并发测试、可靠性测试等。压力测试通用模型(PTGM)是关于性能测试过程的模型,主要步骤包括测试前期的准备、引入测试工具、制定测试计划、测试设计与开发、测试执行与管理、测试结果分析。性能测试分析包括性能下降曲线的分析和性能计数器分析。性能计数器分析重点观察参数,包括内存、处理器、磁盘I/O和进程等;性能下降曲线是性能指标随用户数增加的曲线,重点观察性能平坦区、性能轻微下降区、性能急剧下降区。
其他测试类型有配置项测试、确认测试、回归测试。配置项测试的对象是软件配置项,配置项测试目的是检验软件配置项与SRS的一致性。配置项测试的技术依据是SRS。确认测试主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户参与程度,确认测试有内部确认测试、阿尔法测试、贝塔测试、验收测试四种类型。回归测试的目的是测试软件变更后,变更部分的正确性和对变更的符合性,以及软件原有、正确的功能、性能和其他规定要求的不损害性。
5、面向对象系统的测试
答:OO系统的测试分为单元测试、集成测试、系统测试。从测试活动来看,OO系统的测试可以分为OOA测试、OOD测试、OOP测试。OOA直接映射问题空间,将问题空间中实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和操作表示实例的特性和行为。OOD是以OOA为基础,建立类结构或进一步构造类库,实现分析结构对问题空间的抽象。OOA和OOD测试的方式与软件分析设计模型的形式密切相关,如果分析模型是纸面的,测试就以文档审查方式进行;如果分析设计模型的整体或部分可以模拟运行,测试可以建立在模拟运行的基础上。OOP测试要完成OO系统的封装性、继承性、多态性检测。
OO系统的单元测试包括方法层次的测试、类层次的测试、类树层次的测试。OO系统的集成测试策略除了借鉴以前的测试策略,产生了大突击集成、自底向上集成和自顶向下集成、夹层式集成。大突击集成是先测试所有类,然后把所有类一次集成一起测试。大突击集成优点是提高测试效率,缺点是测试难以充分进行,增加了调试难度。夹层式集成是先从顶层和底层开始,逐渐向中层靠拢,需要开发大量的测试驱动代码和测试桩代码。协作集成是在集成测试是针对系统完成的功能,将可以相互协作完成特定系统功能的类集成到一起进行测试,优点是开销较小,缺点是协作关系比较复杂。基于使用的集成首先测试几乎不使用其他类的类并开始构造系统,在独立类测试完成之后再测试下一层使用独立类的类,优缺点参考自底向上的集成。 集成策略确定之后,还需要关注如何充分测试类之间的各种连接,包括类关系的多重性测试、受控异常测试、往返场景测试、模态机测试。
6、软件测试的组织
答:根据国标的标准来看,单元测试一般由软件开发方、供方、第三方进行;集成测试由软件供方会第三方组织实施,测试和开发应相对独立;软件配置项测试一般有供方组织,由独立于开发之外的人员实施,如果是第三方则应是国家认可的第三方;系统测试有软件的需方或软件开发方组织,独立于开发的人员进行实施,如第三方则是国家认可的第三方;验收测试由软件的需方组织,独立于开发的人员实施,如第三方则应是国家认可的第三方;回归测试参考以上测试的环节。
软件测试的过程一般包括测试策划、测试设计、测试执行、测试总结等四项活动。软件测试的管理包括过程管理、配置管理、评审工作。过程管理包括测试活动管理和测试资源管理。测试过程中的评审包括测试就绪评审和测试评审。