51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【周活动】 找茬--心里圈的故事 !【长期招募】博为峰网校招聘兼职讲师!横扫BAT,Python全栈测试开发技能大全
【106期】:如何树立正确使用Python做开发的习惯 【征稿】提交你的测试成绩单! 【专题】用尽一切办法只为让你学好用例 自学软件测试那点事
查看: 472|回复: 1

[转贴] 软件测试总结

[复制链接]

该用户从未签到

发表于 2019-4-11 16:45:08 | 显示全部楼层 |阅读模式
1.什么是软件测试?软件测试的意义和目的是什么?

    IEEE对软件测试的定义为使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验他是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

    软件测试是在一个可控的环境中分析或执行程序的过程,其根本目的是尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷,提高软件的质量。

2.软件测试与软件开发有何关系?

    软件开发过程是软件工程的重要内容,也是进行软件测试的基础。软件测试是贯穿软件开发的整个生命周期。测试在开发各阶段的设计中都有作用,以检查本阶段的工作成果是否接近预期的目标,尽可能早地发现并改正错误。

3.简述软件测试过程。

    软件测试是由一系列不同的测试阶段组成,即单元测试、集成测试、确认测试、系统测试、验收测试。软件测试是一个自底向上逐步集成的过程。

    单元测试是测试执行的开始阶段,即首先对每一个程序模块进行单元测试,以确保每个模块能正常工作。单元测试大多采用白盒测试方法,尽可能发现并消除模块内部在逻辑和功能上的故障及缺陷。然后,把已测试的模块组装起来,形成一个完整的软件后进行集成测试,以检测和排除与软件设计相关的程序结构问题。集成测试大多采用黑盒测试方法来设计测试用例。确认测试以规格说明书规定的需求为尺度,检验开发的软件能否满足所有的功能和性能要求。确认测试完成后,给出的应该是合格的软件产品。但为了检验开发的软件是否能与系统的其他部分协调工作,还需进行系统测试。最后进行验收测试,以解决开发的软件产品是否复合预期要求、用户是否接受等问题。

4.软件开发过程

    1)制定计划

    2)需求分析

    3)软件设计

    4)程序编写

    5)软件测试(单元测试、集成测试、确认测试、系统测试)

    6)运行和维护

5.软件测试在软件开发中的作用

项目规划阶段:负责整个测试阶段的监控
需求分析阶段:确定测试需求分析,制定系统测试计划。测试需求分析是指分析产品生存周期测试所需的资源、配置、各阶段评审通过的标准等。
概要设计和详细设计阶段:制定集成测试计划和单元测试计划。
程序编写阶段:开发相应的测试代码和测试脚本。
测试阶段:实施测试,并提交相应的测试报告。
6.软件测试环境的搭建:硬件+软件+网络+数据准备+测试工具

7.请概括静态测试和动态测试的不同点?

    静态测试是指不运行被测程序本身,仅通过分析或检查程序的语法、结构、过程、接口等来检查程序的正确性。静态分析主要集中在需求文档、设计文档以及程序结构上,可以进行类型分析、接口分析、输入输出规格说明分析等。

    动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。

8.系统测试和验收测试有何不同?

    系统测试实际上是针对系统中各个组成部分进行的综合性检验,很接近日常测试实践。目标不是要找出软件故障,而是要证明系统的性能。

    验收测试的目的是向用户表明所开发的软件系统能够像用户所预期的那样工作。验收测试解决开发的软件产品是否符合预期的各项要求,用户是否接受等问题,不只检验软件某方面的质量,还要进行全面的质量检验并决定软件是否合格。

1.缺陷模式

1)故障模式

内存泄漏模式(Memory Leak Faults,MLF) MLF有三种形式1)遗漏故障:是指申请的内存没有被释放(2)不匹配故障:是指申请函数和释放函数不匹配(3)不相等的释放错误:是指释放的空间和申请的空间大小不一样
数组越界模式(Out of Bounds Array Access Fault,OBAF)
使用未初始化变量模式(Uninitialized Variable Fault,UVF)
空指针使用故障模式(NULL Pointer Dereference Fault,NPDF)
非法计算类故障模式(Illegal Computing Fault,ILCF)
死循环结构模式(Dead Loop Fault,DLF)
资源泄漏故障模式(Resource Leak Fault,RLF)
并发故障模式
2)安全漏洞模式

缓冲区溢出模式
被感染的数据模式
竞争条件模式
风险操作模式
3)缺陷模式

4)规则模式

1.什么是集成和集成测试?

    集成(Integration)是指把多个单元组合起来形成更大的单元。

    集成测试(Integration Testing)是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。

2.简述系统测试和集成测试的区别?

(1)测试对象。集成测试的对象是由通过了单元测试的各个模块所集成起来的组件。而系统测试的测试对象,除了软件之外,还包括计算机硬件、相关的外围设备以及数据传输机构等。

(2)测试时间。集成测试介于单元测试和系统测试之间的测试。显然,在测试时间上,集成测试由于系统测试。

(3)测试方法。由于集成测试处在单元测试和系统测试的过渡阶段,为了提高软件的可靠性,通常会采用白盒测试和黑盒测试相结合的测试方法。而系统测试通常使用黑盒测试。

(4)测试内容。集成测试的主要内容是各个单元模块之间的接口,以及各个模块集成后所实现的功能。而系统测试关注的主要内容是整个系统的功能和性能。

(5)测试目的。集成测试的主要目的是发现单元之间接口的错误,以及发现集成后的软件同软件概要设计说明书不一致的地方,以确保各个单元模块组合在一起后,能够达到软件概要设计说明的要求,协调一致的工作。而系统测试的主要目的是通过与系统需求定义相比较,发现软件与系统定义不符合或矛盾的地方。

(6)测试角度。集成测试更多的是站在开发人员的角度上。系统测试更多的是站在用户的角度。

3.集成测试的原则?

    对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即:1)模块间集成测试 2)子系统内集成测试 3)子系统间集成测试

    对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为2个层次:1)类内集成测试 2)类间集成测试

4.集成测试策略?

    由模块组装成程序时有两种方法。一种方法是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式集成;另一种方法是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合起来进行测试。这种每次增加一个模块的方法称为渐增式集成。

    对两个以上模块进行集成时,需要考虑它们和周围模块的联系。为了模拟这些联系,需要设置若干辅助模块。

驱动模块(Driver):用以模拟待测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给待测模块,启动待测模块,并打印出相应的结果。
桩模块(Stub):也称为存根程序,用以模拟待测模块工作过程中所调用的模块。桩模块由待测模块调用,它们一般只进行很少的数据处理。   
非渐增式集成

    非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。

渐增式集成

    1.自顶向下集成

    (1)对主控制模块进行测试,测试时用桩模块代替所有直接附属于主控制模块的模块;

    (2)根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个桩模块(新结合进来的模块往往又需要新的桩模块)

    (3)再结合近一个模块的同时进行测试。

    (4)为了保证加入模块没有引进新的错误,可能需要进行回归测试(即全部或部分地重复以前做过的测试)。

    2.自底向上集成

    (1)把低层模块组合成实现某个特定软件子功能的族。

    (2)写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出。

    (3)对由模块组成的子功能族进行测试。

    (4)去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2019-9-15 15:55 , Processed in 0.063476 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表