51Testing软件测试论坛

标题: 一点点测试基础的总结 [打印本页]

作者: 涙の雾雨    时间: 2010-4-23 19:02
标题: 一点点测试基础的总结
呵呵,我把别人教我的测试知识,总结了一点点的测试基础,对刚刚学测试的人应该有一点点帮助吧。
若是有不合理的就告诉我哦,呵呵,谢谢啦
----------------------------------------------------------------------------------
全文内容:

1  什么叫软件测试
软件测试是:为寻找软件缺陷而执行软件的过程((测试无处不在))(引自rom patton 《软件测试》)

2  软件开发的开发模型有哪些
1 瀑布模型(waterfallmodel)
2 渐增模型/演化/迭代(incrementalmodel)
3 原型模型(prototypemodel)
4 螺旋模型(spiralmodel)
5 喷泉模型(fountainmodel)
6 智能模型(intelligentmodel)
7 混合模型(hybridmodel)

3  一个软件的开发需要哪些过程
1 问题定义
2 可行性研究
3 需求分析
4 总体设计
5 详细设计
6 编码
7 测试
插曲:
我回答说:看需求,分析需求,计划要怎么写(就是先分析计划软件的一个大概),按计划编程,再测试。
老师解释:(看需求,分析需求)就是需求分析,需求分析由需求专业人员进行,多由项目经理或者市场人员收集。
概要设计,概要设计多由架构师或者技术经理编写。
详细设计,详细设计多由程序员自己写。
编码,程序员编写。
测试,测试人员。
后期还有 实施(实施工程师安装软件并培训客户使用该软件)交付(市场人员)维护(专门的维护人员,或者开发兼职)

4  测试的依据是什么
软件需求规格说明书
插曲:
我回答说:跟用户、时间、需求有关。
老师解释:跟用户和需求有关,但跟时间没关。用户和需求的关系是相对的,需求是写在纸上的,是经过双方的评审的。而用户是单方面的。

5  什么是bug
1  bug的定义
Bug就是程序缺陷,电脑系统或者程序中存在的任何一种破坏正常运转能力的问题或者缺陷,都可以叫做bug;有时也被泛指因软件内部的缺陷引起的软件产品最终运行时和预期属性的偏离。
附加:
缺陷(Defect):指静态存在于软件工作产品(文档、代码)中的错误,也指软件运行时由于这些错误被激发引起的和软件产品预期属性的偏离现象。
错误(Error):指编写错误的代码,一种是语法错误(syntax error),另一种是逻辑错误(logical error)。
故障(Fault):软件运行中出现的状态,可以引起意外情况,若不处理,可产生失效,是一个动态行为。
失效(Failure):软件运行时产生的外部异常行为结果,表现与用户需求不一致,功能能力终止,用户无法完成所需要的应用。
2  Bug的类型划分
功能类
A、重复的功能
B、多余的功能
C、功能实现与设计要求不相符
D、功能实用性、方便性、易用性不够
界面类
A、界面不美观
B、控件排列、格式不统一
C、焦点控制不合理或不全面
数据处理类
A、数据有效性检测不合理
B、数据来源不正确
C、数据处理过程不正确
D、数据处理结果不正确
流程类
A、流程控制不符合要求
B、流程实现不完整
提示信息类
A、提示信息重复或出现时机不合理
B、提示信息格式不符合要求
C、提示框返回后焦点停留位置不合理
建议类
A、功能性建议
B、操作建议
C、校验建议
D、说明建议
性能类
A、并发量
B、数据量
C、压缩率
D、响应时间
常识类
A、违背正常习俗习惯的,比如日期/节日等
特殊类
A、不符合OEM版本或DEMO版本特殊要求的
补充
老师的介绍: bug跟需求是对应的
1 需求说了,结果做错了(做错了  错)
2 需求说了,但是没做(做少了  错)
3 需求没说,你偏偏做了(做多了  错)
4 需求没说,但隐含意思是要做,结果没做(虽然没说但要做,你没做  错)
比如:需求中没对界面做出要求,但是你却没按界面的两套标准做。
5 需求说了,你也做了,还做正确了,但没做好(做对了,但没做好  错)
  比如:一个网站,要半个小时才能打开。

6  软件测试分为哪些阶段呢?
根据V模型了解软件测试的阶段
开发阶段的静态测试:
需求分析:这个阶段对应的动态测试是验收测试,测试人员要阅读、审查需求分析的结果,了解用户的真正需求,确定测试目标,准备验收测试的测试用例。
概要设计:这个阶段对应的动态测试是系统测试,测试人员要了解软件是如何形成的,了解软件运行的环境,准备软件的测试环境。
详细设计:这个阶段对应的动态测试是集成测试,测试人员要对设计进行评审,找出设计的缺陷,同时设计集成测试的测试用例,完善测试计划。
编写代码:这个阶段对应的动态测试是单元测试,测试人员要了解各个代码块的作用。检查代码。
单元测试 (主要注重逻辑的覆盖)
集成测试 (主要注重接口的覆盖)
系统测试 (主要注重需求的覆盖)
验收测试 (主要是客户验证产品是否实现了他们提出的需求)
插曲:
老师:软件测试是从什么时候开始?
学生:接到项目开始。
老师:接到项目是软件开发的什么阶段?接到项目的时候做哪方面的测试?
学生:需求分析阶段,不知道做什么测试。不是要从编码后测试的不?
老师:编码完成了,怎么测试呢?
学生:看代码,找缺陷。
老师:那就是代码级的测试,编代码的过程中也可以测试,编完了也可以测试。编码过程中的测试叫单元测试。单元测试有两种,一种是检查代码,一种是运行那个单元模块看是不是有冗余的代码。单元测试后进行什么测试?
学生:系统?
老师:单元要按顺序拼装才能成为系统,这个拼装的过程就是集成测试。集成测试就是把单元模块按照一定的方式拼装起来而进行的一种测试,主要测试但愿模块之间的接口是否连接正确,集成测试做完了。模块组装完了后,就成了一个系统了,就可以进行系统测试了。系统测试通过后,就交给用户,这时用户还不知道好不好,所以用户也需要进行一轮测试,如果用户觉得行了。就可以正式使用了,而用户进行的测试就是验收测试。
学生:单元测试里有个模块接口测试,是不是就是集成测试?
老师:不是,比如一个杯子,接口就是杯口,单元测试就是测试杯口不是不圆的。集成测试可以看成,杯口和你的口是不是连接正常。会不会把你口划伤。
比如:A、B两模块都有接口,在单元测试的时候都会进行接口测试。要是A模块接口有3个参数,B模块有4个参数,AB模块还是一样不能集成成功的。而这是在单元测试中测试不出来的。
老师:先说了,测试是在一接到项目就开始了,而刚刚说的都是在编码开始后的测试。了解V模型,就能了解为什么说测试是从接到项目开始就开始了。

7  单元测试
一个完整的单元测试说明应该包含正面测试(Positive Testing)和负面测试(Negative Testing)。正面测试验证程序应该执行的工作,负面测试验证程序不应该执行的工作。
(老师说:单元测试有两种,一种是检查代码,一种是运行那个单元模块看是不是有冗余的代码)
单元测试的对象是软件设计的最小单位——模块。
单元测试的依据是详细设计。
单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。
单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。
附加:
单元测试中用的覆盖方法有:语句覆盖
判定覆盖
条件覆盖
判定条件覆盖
条件组合覆盖
路径覆盖

8  集成测试
集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并测试它们的接口。
集成测试的依据是概要设计规格说明。
自顶向下集成
自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。
附加:
深度优先:深度优先策略首先是把主控制路径上的模块集成在一起,然后考虑其他路径。
广度优先:广度优先策略是沿控制层次结构水平地向下移动。
自顶向下集成的优点:在于能尽快地对程序的主要控制和决策机制进行检验,因此能较早的发现错误。
自顶向下集成的缺点:在测试较高层模块时,低层处理采用桩模块代替,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。

自底向上集成
自底向上测试是从原子模块(即软件结构最低层的模块)开始组装测试,因测试到较高模块时,所需的下层模块功能均已具备,所以不再需要桩模块。
自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但是缺点是最后一个模块加入时才具有整体形象。它与自顶向综合测试方法优缺点正好相反。

核心系统先行集成
核心系统先行集成测试法的思想是先对核心软件部件进行集成测试,在测试通过的基础上再按各外围软件部件的重要程度逐个集成到核心系统中。
核心系统先行集成方法对于快速软件开发很有效果,适合较复杂系统的集成测试,能保证一些重要的功能和服务的实现。
缺点是采用此法的系统一般应能明确区分核心软件部件和外围软件部件,核心软件部件应具有较高的耦合度,外围软件部件内部也应具有较高的耦合度,但个外围软件部件之间应具有较低的耦合度。
在这个方法中,需要进行冒烟测试和自动化测试。
冒烟测试的对象是每个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的测试工作。
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常在设计了测试用例并通过评审之后,有测试人员根据测试用例中的描述的规程一步步执行测试,得到实际结果与期望结果的比较。
自动化测试的前提条件:
1)        软件需求变动不频繁
2)        项目周期足够长。
3)        自动化测试脚本可重复使用

附加:
桩模块和驱动模块有什么共同点和不同点?
桩模块用来替代所测子模块
驱动模块用来替代主模块,用它来调用子模块
桩模块和驱动模块都是替代品。
在集成测试过程中,只测试最核心的部分,保证最核心的部分没有问题就可以了。通过只测试主要模块的方法来减少工作量,这就是冒烟测试的解释。
集成测试里,核心部分要先集成好,这部分不会发生改变。从而这部分的测试用例就可以重复利用,也可以考虑那些重复的工作让计算机去做,就可以考虑自动化测试了。自动化测试不分阶段,只要用例相同并且用例要执行多次,就可以考虑自动化测试。另外,自动化测试的最佳阶段是冒烟测试和回归测试。

[ 本帖最后由 千里 于 2010-4-26 10:35 编辑 ]
作者: msnshow    时间: 2010-4-23 19:59
不错,支持楼主的分享精神
作者: 涙の雾雨    时间: 2010-4-25 00:43
呵呵,但愿以后会有比我还新的人用的到吧。。。呵呵
作者: shengxiaohui    时间: 2010-4-25 11:46
感谢楼主分享
作者: wljava523    时间: 2010-4-25 14:20
非常的感谢
作者: 千里    时间: 2010-4-26 10:39
先把老师的讲解总结成读书笔记,然后再找书中的标准解释,最后还将其合并。
足见对学习的认真,对于楼主的努力我很是敬佩。
我想如果学习过程中能有如此的努力,何愁不能学好软件测试呢。
作者: 涙の雾雨    时间: 2010-4-26 10:49
标题: 回复 6# 的帖子
呵呵,多谢教导。。。
我会更努力的。。。
呵呵。。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2