软件工程小记——编码与测试

微笑、不失礼 提交于 2019-12-06 12:27:27

第六章 编码与测试

1.程序设计语言分为两大类:
    面向机器语言:
        面向机器语言包括机器语言和汇编语言;
    高级语言:
        高级语言分为专用语言和通用语言;
        
2.程序设计语言的选择
    理想标准、实用标准、系统用户的要求、工程的规模、软件的运行环境、可以得到的软件开发工具、
    软件开发人员的知识、软件的可移植性要求。
    
3.软件测试
    软件测试是使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的
    需求或是弄清预期结果与实际结果之间的差别。
4.测试用例设计的核心:
    a.要测试的内容;
    b.输入信息和对应的预期结果;
    
5.软件测试的重要性
    a.寻找软件错误,以便进行修正;
    b.证明软件符合要求,是可用的;
    c.验证软件是否符合用户要求;
    d.指导软件的开发过程;
    e.提供软件的相关特征;
    
6.软件测试的分类
    按照是否需要查看代码分类:
        a.黑盒测试:
            黑盒测试是将被测软件看出一个黑盒子,只考虑系统的输入和输出,完全不考虑程序内部的逻辑结构和处理过程。
            黑盒测试的依据是开发各阶段的需求规格说明。
        b.白盒测试:
            白盒测试是将黑盒子打开,研究源代码和程序内部的逻辑结构;
    
    按照是否需要执行被测软件分类:
        a.静态测试:
            又称为静态分析,是不实际运行被测软件,而是直接分析软件的形式和结构,查找缺陷。
            主要包括对源代码、程序界面和各类文档及中间产品所做的测试。
        b.动态测试:
            又称为动态分析,是指需要实际运行被测软件,通过观察程序运行时所表现出来的状态、行为等发现软件缺陷。
            包括在程序运行时,通过有效的测试用例来分析被测程序的运行情况或进行跟踪对比,发现程序所表现的行为
            与设计规格或客户需求不一致的地方。
        c.按照测试阶段分类:
            a.单元测试:模块测试。
            b.集成测试:组装测试。
            c.确认测试:有效性测试。
            e.系统测试:验证系统是否达标。
            f.验收测试:接受测试。
        d.按照是否需要人工干预分类:
            手工测试:
            自动测试:
        e.其他测试
        
7.软件测试的基本原则
    a.尽早地并不断地进行软件测试
    b.程序员或程序设计机构应避免测试自己的程序
    c.测试用例中不仅要有输入数据,还要有与之对应的预期结果
    d.测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据
    e.在对程序进行修改之后要进行回归测试
    f.程序中尚未发现的错误的数量通常与该程序中已发现的错误的数量成正比
    h.妥善保留测试计划、全部测试用例、出错统计和最终分析报告,并把他们作为软件的组成部分之一,为维护提供方便。
    i.应当对每一个测试结果做全面的检查
    j.严格执行测试计划,排除测试的随意性。

8.白盒测试
    8.1 白盒测试的概念
        白盒测试,又称为结构测试或逻辑驱动测试,是一种透明的测试技术,它是以程序的内部逻辑结构为基础来设计测试用例的。
    8.2 白盒测试的原则
        a.保证程序中每一独立的路径至少执行一次;
        b.保证所有判定的每一个分支至少执行一次;
        c.保证每个判定表达式中每个条件的所有可能结果至少出现一次;
        d.保证每一循环都在边界条件和一般条件至少个执行一次;
        e.验证所有内部数据结构的有效性;
    8.3 白盒测试技术
        逻辑覆盖
            逻辑覆盖,是指设计测试用例对程序的内部分支逻辑结构进行部分或全部覆盖的技术。
            逻辑覆盖由弱到强的几种覆盖技术:
            a.语句覆盖
                语句覆盖是指设计足够多的测试用例,使程序中的每条语句至少执行一次;
            b.判定覆盖
                判定覆盖是指设计足够多的测试用例,使每个判定的每种可能结果都至少出现一次,也就是
                使每个判定的每个分支都至少自行一次。
                判定覆盖也称为分支覆盖。
            c.条件覆盖
                条件覆盖是指设计足够多的测试用例,使每个表达式中的每个条件的每种可能值都至少出现一次。
            d.判定/条件覆盖
            e.条件组合覆盖
            f.路径覆盖
        基本路径
        循环覆盖
        
    8.4 黑盒测试技术
        a.黑河测试,又称功能测试或数据驱动测试,是在已知软件产品应该具有的功能的情况下,通过测试来检验是否
        每个功能都能正常使用的测试。
        b.黑盒测试主要测试的错误类型:
            不正确或遗漏的功能;
            接口错误;
            性能错误;
            数据结构或外部数据访问错误;
            初始化或终止条件错误等。
        c.黑盒测试用例设计方法:
            等价类划分;
            边界值分析;
            因果图法;
            错误推测法;

9.软件测试阶段
    a.单元测试
        单元测试的测试对象是经过软件设计并编码的一个个程序模块。
        单元测试的主要依据是程序代码和详细设计文档;
        单元测试可以并行进行;
    b.集成测试
        集成测试是在单元测试的基础上,按照系统设计要求把通过单元测试的单元模拟逐步组装与测试,
        最后组装成一个完整的软件系统的测试过程。
        集成测试的方式:
            非增量集成方式:将经过单元测试的所有模块一次性地全部组装起来,然后进行整体测试,最后得到所要求的的软件系统。
            增量集成方式:将经过单元测试的模块逐步组装成较大的系统,一边组装,一边测试,以便发现模块间与接口有关的问题。
                自顶向下集成、自底向上集成。
    c.确认测试
        确认测试又称为有效性测试,任务是验证软件的功能和性能及其他特性是否与用户的要求一致。
    d.系统测试
        系统测试是指将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和
        人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
        系统测试的类型:
            恢复测试:
            安全性测试:
            强度测试:
            性能测试:
    
    e.验收测试
        验收测试是软件开发结束后,软件产品投入实际应用以前进行的最后一次质量检验活动,是以用户为主,软件开发人员和质量保证人员
        也参加的测试。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!