• 单元测试、集成测试、系统测试、验收测试


    这是按阶段将测试分类,是一种测试策略。在测试过程中应依据每个阶段的不同特点,采用不同的测试方法和技术,指定不同的测试目标。

    一、单元测试与集成测试
    1 单元测试的目标与任务
    1.1 这些单元可能是一个对象或是一个类,也可能是是一个函数,或组件或模块。一般情况下,被测试的单元能够实现一定的功能,具有一定的独立性,同时又通过明确的接口定义与其他单元联系起来。单元测试不仅仅是测试代码的功能性,还需确保代码在结构上可靠且健壮,能够在各种条件下(包括异常条件)给予正确的响应。

    1.2 通过单元测试,需要验证下列这些内容:
    (1)数据或信息能否正确的流入和流出单元
    (2)在单元工作过程中,其内部数据能否保持其完整性
    (3)在数据处理大的边界能否正确工作
    (4)单元的运行能否做到满足特定的逻辑覆盖 (判定覆盖、条件覆盖、判定条件覆盖、条件组合、基本路径覆盖,在设计测试用例时)
    (5)单元中发生了错误,其中的出错处理措施是否有效
    细(6)指针是否被错误引用、资源是否及时被释放
    节(7)有没有安全隐患?是否使用了不恰当的字符串处理函数等。
    1.3 活动
    (1)建立单元测试的环境
    (2)测试脚本(测试代码)的开发和调试
    (3)测试执行及结果分析

    1.4 单元测试的任务
    (1)单元独立执行路径测试:对每一条独立执行路径进行测试
    (2)单元局部数据结构的测试:检查临时存储的数据在程序执行过程中是否正确、完整。
    检查是否有以下几类的错误:a.不合适或不相容的类型说明。b.变量初始化或缺省值有错。c.变量无初值。d.不正确的变量名。e.出现上溢、下溢或地址异常。
    (3)单元接口测试:数据能正确输入输出。
    (4)单元边界条件测试
    (5)单元容错性测试:针对出错进行正确的处理。
    (6)内存分析

    2 静态测试
    静态测试技术是单元测试中重要手段之一,在代码完成并无错误地通过编译或汇编后进行,采用工具扫描分析、代码评审等。

    3 动态测试
    3.1 驱动程序和桩程序
    运行被测单元,隔离被测单元,根据被测试的单元接口,开发相应的驱动程序和桩程序。
    驱动程序:模拟被测试模块的上级模块
    桩程序:模拟被测模块工作过程中的下层模块

    3.2 类测试
    面向对象的单元测试通常是对一个基类或其子类进行测试。对于类的单元测试可以看作是对类的成员函数进行测试。
    不会对每个成员及方法进行测试,但对于核心或重于的方法需要进行全面测试。

    4 分层单元测试
    很多应用程序是分层的,如数据访问层、业务逻辑层、表示层等,所以咱进行单元测试时分层进行

    4.1 Action层的单元测试
    主要接收页面传来的参数,然后调用业务逻辑层的封装方法,最后负责跳转到相应的页面。主要进行跳转测试。
    使用Mork对象,是隔离外部依赖的一个有效办法。
    4.1.1 Moak对象
    Mork就是模型,模拟测试时所需的对象及测试数据。
    StrutsTestCase是Junit TestCase的基类,提供基于Struts框架的代码测试。
    MorkStrutsTestCase,是对Junit TestCase基类的扩展
    CactusStrutsTestCase,是对Cactus ServletTestCase基类的扩展

    4.2 数据访问层的单元测试
    业务逻辑层,一般用于处理比较复杂的逻辑,也用于DAO层的数据操作。
    ( DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置)
    Junit,Mork对象,mork object,Dbunit

    4.3 Servlet的单元测试
    选择HttpUnit

    5 单元测试工具
    5.1 针对单元测试一般根据不同的编程语言和不同的开发环境
    针对C/C++的单元测试工具:Cppunit,Parasoft C++ Test等
    针对Java语言的单元测试工具:Parasoft Jtest,Junit等
    .NET:NUnit
    HTML:HtmlUnit
    JavaScript:JsUnit
    PHP:PhpUnit

    5.2 分为静态测试工具和动态测试工具
    支持Java语言检测:CheckStyle、FindBugs、PMD等
    支持C++语言:Parasoft C++Test

    5.3 按功能特点进行分类
    内存资源泄露检查工具:Numega中的BounChecker,Rational的Purity等
    代码覆盖率检查工具:Numega中的TrueCoverge,Rational的PureCoverge等
    代码复杂度检测工具:SourceMonitor

    6 系统集成的模式与方法
    集成
    测试是将已分别通过测试的单元按设计要求集成起来再进行测试,以检查这些单元之间的接口是否存在问题。

    6.1 集成测试的模式
    集成模式是软件基础测试中的策略体现,包括两种
    (1)非渐进式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合。
    (2)渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,一个一个扩展。

    6.2 自顶向下与自底向上集成方法

    6.3 混合策略

    6.4 持续集成

    二、系统测试
    测试整个软件,包括好几个部分,如功能性测试、非功能性测试、性能测试、安全性测试、容错性测试、兼容性测试等。

    1 系统级功能测试
    不仅考虑模块之间的相互作用,而且要考虑系统的应用环境,其衡量标准是实现产品规格说明书上所要求的

    1.1 功能测试要求
    主要归为界面、数据、操作、逻辑、接口等方面

    1.2 Web服务器的功能测试
    支持HTTP/1.1协议,包括HTTP认证和SSL(安全套接层)、TLS(传输层安全协议)等;
    支持虚拟主机、支持通用网关接口、具有用户会话的跟踪能力等;
    与脚本语言(PHP、Perl、Python)集成、支持Java Servlet、支持代理(Proxy)、高速缓存、URL、

    1.3 web功能测试工具
    selenium,WebTest等

    1.4 客户端测试工具
    AutoIT、QTP等

    1.5 嵌入式测试工具

    2 回归测试
    验证被修复的软件缺陷是否真正被解决,而且要保证以前所有运行正常的功能依旧正常。
    2.1 回归测试的基本过程
    (1)识别出软件中被修改的部分
    (2)从原基线测试用例库T中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例,建立一个新的基线测试用例库T0。
    (3)依据一定的策略从T0中选择测试用例测试被修改的软件
    (4)如果回归测试包不能达到所需的覆盖要求,必须补充新的软件测试用例使覆盖率达到规定的要求,生成新的测试用例集T1,用以测试T0无法测试的软件部分。
    (5)同T1执行修改后的软件

    2.2 策略
    (1)再测试所有用例
    (2)基于风险选择模式
    (3)基于操作剖面的选择
    (4)再测试修改部分

    3 性能测试
    为了发现系统性能问题或获取系统性能相关指标(如运行时间、响应时间、资源使用率等)而进行的测试。

    3.1 系统性能指标与测试类型
    3.1.1 性能指标
    (1)请求响应时间
    (2)事务响应时间
    (3)数据吞吐量
    等,针对具体的应用系统,性能指标应尽量明确。
    3.1.2 测试类型
    (1)性能验证测试
    (2)性能基准测试:在系统标准配置下获得相关的性能指标数据,作为将来性能改进的基准线。
    (3)性能规划测试:在特定的环境下,获得不同配置的系统的性能指标,从而决定在系统部署时采用什么样的软、硬件配置。
    (4)容量测试
    3.1.3 手段
    (1)渗入测试:长时间预习的负载测试(压力测试),使用固定数量的并发用户测试系统的健壮性
    (2)峰谷测试:为了更快的发现资源泄露问题,采用负载忽高忽低的方式进行测试

    3.2 系统负载及其模式
    系统负载可以看作是“并发用户并发数量+思考时间+每次请求发送的数据量+负载模式”
    负载模式就是加载的方式:一次加载、递增加载、高低突变加载、随机加载

    3.3 性能测试的基本过程
    (1)确定性能需求
    (2)根据测试需求,选择测试工具和开发相应的测试脚本
    (3)建立性能测试负载模型:确定开发虚拟用户的数量、每次请求的数据量、思考时间、加载方式、持续加载时间等。
    (4)执行性能测试
    (5)提交性能测试报告:包括性能测试方法、负载模型和实际执行的性能测试、测试结果及分析等

    3.4 性能测试结果分析

    3.5 系统性能测试工具
    JMeter:Web服务器的性能测试、数据库、FTP、LDAP服务器等
    nGrinder
    Apache提供的一个简单的命令行性能测试工具ab
    HTTP工程包含一个名为HTTPD-Test
    Siege
    OpenSTA
    DBMonster
    LoadSim
    JProfiler:服务器性能测试

    3.8 压力测试(强调测试、负载测试)
    模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。

    3.9 容量测试

    4 安全性测试
    一系列工具,待补充

    5 容错性测试
    主要检查系统的容错能力,检查软件在异常条件下自身是否具有防护性的措施或者某种
    灾难性恢复的手段。如当系统出错时,能否在指定时间间隔内修正错误并重启系统。

    6 兼容性测试
    6.1 软件兼容性测试
    6.2 数据共享兼容性测试
    6.3 硬件兼容性测试

    7 可靠性测试

    三、验收测试
    验收测试是在软件产品完成了功能测试和系统测试之后、产品发布之前所进行的软件测试活动,又叫交付测试。

    1 验收测试过程

    2 产品规格说明书的验证

    3 用户界面和可用性测试

    4 安装测试和可恢复性测试

  • 相关阅读:
    281. Zigzag Iterator
    298. Binary Tree Longest Consecutive Sequence
    482. License Key Formatting
    361. Bomb Enemy
    373. Find K Pairs with Smallest Sums
    304. Range Sum Query 2D
    308. Range Sum Query 2D
    307. Range Sum Query
    303. Range Sum Query
    247. Segment Tree Query II
  • 原文地址:https://www.cnblogs.com/lxoc/p/6859000.html
Copyright © 2020-2023  润新知