测试技术常见问题-1

上一篇 / 下一篇  2011-12-20 14:57:15

1、单元测试主要内容是什么?

gqn @[x0

单元测试大多数由开发人员来完成,测试人员技术背景较好或者开发系统软件时可能会安排测试人员进行单元测试,大多数进行的单元测试都是开发人员调试程序或者开发组系统联合调试的过程。讨论这个问题主要是扩充一下读者的视野。51Testing软件测试网q+D DVn;^ A

单元测试一般包括五个方面的测试:

!{.v8@4qE B$W-W0

1)模块接口测试:模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。模块接口测试也是集成测试的重点,这里进行的测试主要是为后面打好基础。测试接口正确与否应该考虑下列因素:51Testing软件测试网Q1? B't5c'}4u7e

l        输入的实际参数与形式参数的个数是否相同;51Testing软件测试网,yn3n b+p;G2ks

l        输入的实际参数与形式参数的属性是否匹配;

$b3I%J;TbAHJw0

l        输入的实际参数与形式参数的量纲是否一致;51Testing软件测试网&fwER |p|/}%l@u

l        调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;

~(wL(a'n3s6u~c6wT0

l        调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;51Testing软件测试网j4v~q5M9N9?,e

l        调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;51Testing软件测试网 NMOj+]4n(H p

l        调用预定义函数时所用参数的个数、属性和次序是否正确;51Testing软件测试网-DYAmq1v^6U

l        是否存在与当前入口点无关的参数引用;51Testing软件测试网hz$N)TLB!nK?AS

l        是否修改了只读型参数;51Testing软件测试网7u-Q!q#L?`

l        对全程变量的定义各模块是否一致;

L |rL(R%vg0Zw0

l        是否把某些约束作为参数传递。51Testing软件测试网o'a%O8l]_

如果模块功能包括外部输入输出,还应该考虑下列因素:

Nh"k#jU(Rq Q0

l        文件属性是否正确;

6_i#Ph'EM:T0

l        OPEN/CLOSE语句是否正确;51Testing软件测试网P6tX@y1\K

l        格式说明与输入输出语句是否匹配;

G9O'w(i W{;g-f0

l        缓冲区大小与记录长度是否匹配;

e$oM&FuU!\2f[E0

l        文件使用前是否已经打开;

/Dy@:b Lf"Q4c3jI0

l        是否处理了文件尾;

_8n9~xP&b6_3QF0

l        是否处理了输入/输出错误;51Testing软件测试网-d6e7@9w9Y9w!?6{XEF

l        输出信息中是否有文字性错误。

4Ha#it%?6K~y'z0

l        局部数据结构测试;

Fw @8S,p5R)j0

l        边界条件测试;

l0E6XtEy#YB l0

l        模块中所有独立执行通路测试;51Testing软件测试网*OI| c1M'd8L

2)局部数据结构测试:检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确,局部功能是整个功能运行的基础。重点是一些函数是否正确执行,内部是否运行正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:51Testing软件测试网L7A5a,S ~6J

l        不合适或不相容的类型说明;51Testing软件测试网-F!V.? w Q `4k'i

l        变量无初值;51Testing软件测试网F2zw6i2Vd@

l        变量初始化或省缺值有错;51Testing软件测试网0X5WL(bV U$Za3BY&[U

l        不正确的变量名(拼错或不正确地截断);

Ci0l&v sl0

l        出现上溢、下溢和地址异常。51Testing软件测试网 iC0~3o|,L2Dt Z

3)边界条件测试:边界条件测试是单元测试中最重要的一项任务。众所周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试执行的较好,可以大大提高程序健壮性。51Testing软件测试网 DnpuD-co8E#} [

4)模块中所有独立路径测试:在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。测试目的主要是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。具体做法就是程序员逐条调试语句。常见的错误包括:51Testing软件测试网Xa[:@!E@t ERC/qm

l        误解或用错了算符优先级;

c)}3tk M~F3Ge0

l        混合类型运算;51Testing软件测试网jo$ox@W"e%V a/`P

l        变量初值错;

"[#Qvz*|T3G0

l        精度不够;51Testing软件测试网XWoW!TAcu

l        表达式符号错。

GR6FbWS2?0

比较判断与控制流常常紧密相关,测试时注意下列错误:51Testing软件测试网]zfoER5p] f

l        不同数据类型的对象之间进行比较;

'B)Z8W(Z{/B)K7JNI1^0

l        错误地使用逻辑运算符或优先级;

Rdq!un'~#qz0

l        因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;

b-h{#b+jG-_0

l        比较运算或变量出错;

ELX,gjU0a,UU0

l        循环终止条件或不可能出现;

4K.s Y%Y[*z0

l        迭代发散时不能退出;51Testing软件测试网Rb r4KW j6I

l        错误地修改了循环变量。51Testing软件测试网!v[sC9vg,K:`b

模块的各条错误处理通路测试:程序在遇到异常情况时不应该退出,好的程序应能预见各种出错条件,并预设各种出错处理通路。如果用户不按照正常操作,程序就退出或者停止工作,实际上也是一种缺陷,因此单元测试要测试各种错误处理路径。一般这种测试着重检查下列问题:51Testing软件测试网E)Jk(m ^8u)c n$M.Q

l        输出的出错信息难以理解;

.n8~a9Z9bN;A ^Qb-J0

l        记录的错误与实际遇到的错误不相符;51Testing软件测试网7Gm%tJQh#z

l        在程序自定义的出错处理段运行之前,系统已介入;

Jb MMc:GZ0

l        异常处理不当;51Testing软件测试网$H~W gS QbP

l        错误陈述中未能提供足够的定位出错信息。51Testing软件测试网xf1^0j;q

2、如何理解强度测试?51Testing软件测试网uJ6Ju)g"S"q~u%^

强度测试是为了确定系统在最差工作环境的工作能力,也可能是用于验证在标准工作压力下的各种资源的最下限指标。51Testing软件测试网T@z,}.L!t.]+p

它和压力测试的目标是不同的,压力测试是在标准工作环境下,不断增加系统负荷,最终测试出该系统能力达到的最大负荷(稳定和峰值),而强度测试则是在非标准工作环境下,甚至不断人为降低系统工作环境所需要的资源,如网络带宽,系统内存,数据锁等等,以测试系统在资源不足的情况下的工作状态,通过强度测试,可以确定本系统正常工作的最差环境.51Testing软件测试网uIqz6B0K ?

强度测试和压力测试的测试指标相近,大多都是与时间相关的指标,如并发量(吞吐量),延迟(最大/最小/平均)以及顺序指标等51Testing软件测试网w&~)iEs4Xw

强度测试需要对系统的结构熟悉,针对系统的特征设计强度测试的方法

,_G"f4c#X3^0

3、如何理解压力、负载、性能测试测试?51Testing软件测试网(QFxYo |)B+t

性能测试是一个较大的范围,实际上性能测试本身包含了性能、强度、压力、负载等多方面的测试内容51Testing软件测试网+x2ariC2V1gw ~2v

压力测试是对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试。增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。而负载测试是压力相对较大的测试,主要是测试系统在一种或者集中极限条件下的相应能力,是性能测试的重要部分。100个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个小时就可以认为负载测试,1000个用户连续访问系统1个小时也可以看作是负载测试。51Testing软件测试网Qg$K-f u(`)v/q$B+c

实际上压力测试和负载测试没有明显的区分。测试人员应该站在关注整体性能的高度上来对系统进行测试。性能测试的相关内容,读者可以参考10.2.2节。

YL;S%Y)^N1Xe0

4、什么是系统瓶颈?51Testing软件测试网9r(Dy+UR3f.C u

瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。51Testing软件测试网 ^tvm"Z`.[+q ee3?

严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。51Testing软件测试网i6P1~A.?D&lv2DSG

因此我们测试系统瓶颈主要是实现下面两个目的:

f%M A$TQG-{p0

l        发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。51Testing软件测试网A-OW_0[GU

l        发现潜在的瓶颈并解决,保证系统的长期稳定性。主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。

:R3xFVl v(I%{;P0

5、文档测试主要包含什么内容?

+L\,_8f5B'w1IE0

在国内软件开发管理中,文档管理几乎是最弱的一项,因而在测试工作中特别容易忽略文档测试也就不足为奇了。要想给用户提供完整的产品,文档测试是必不可少的。文档测试一般注重下面几个方面:

7axQmp*Gx5Ds7|0

文档的完整性:主要是测试文档内容的全面性与完整性,从总体上把握文档的质量。例如用户手册应该包括软件的所有功能模块。51Testing软件测试网-r%~;PtcFKJ

描述与软件实际情况的一致性:主要测试软件文档与软件实际的一致程度。例如用户手册基本完整后,我们还要注意用户手册与实际功能描述是否一致。因为文档往往跟不上软件版本的更新速度。

+P2Z%XC"To0

易理解性:主要是检查文档对关键、重要的操作有无图文说明,文字、图表是否易于理解。对于关键、重要的操作仅仅只有文字说明肯定是不够的,应该附有图表使说明更为直观和明了。

3aE u#t8S5?1I9cqK0

文档中提供操作的实例:这项检查内容主要针对用户手册。对主要功能和关键操作提供的应用实例是否丰富,提供的实例描述是否详细。只有简单的图文说明,而无实例的用户手册看起来就像是软件界面的简单拷贝,对于用户来说,实际上没有什么帮助。

&rc ? D0[0

印刷与包装质量:主要是检查软件文档的商品化程度。有些用户手册是简单打印、装订而成,过于粗糙,不易于用户保存。优秀的文档例如用户手册和技术白皮书,应提供商品化包装,并且印刷精美。51Testing软件测试网6@2N-NW i(M~!n

6、功能测试用例需要详细到什么程度才是合格的?51Testing软件测试网 k[ Oa r G

这个问题也是测试工程师经常问的问题。有人主张测试用例详细到每个步骤执行什么都要写出来,目的是即使一个不了解系统的新手都可以按照测试用例来执行工作。主张这类写法的人还可以举出例子:欧美、日本等软件外包文档都是这样做的。51Testing软件测试网3@4g8M9r(z+mJ2\

另外一种观点就是主张写的粗些,类似于编写测试大纲。主张这种观点的人是因为软件开发需求管理不规范,变动十分频繁,因而不能按照欧美的高标准来编写测试用例。这样的测试用例容易维护,可以让测试执行人员有更大的发挥空间。51Testing软件测试网%sGNZm

实际上,软件测试用例的详细程度首先要以覆盖到测试点为基本要求。举个例子:“用户登陆系统”的测试用例可以不写出具体的执行数据,但是至少要写出五种以上情况(),如果只用一句话覆盖了这个功能是不合格的测试用例。覆盖功能点不是指列出功能点,而是要写出功能点的各个方面(如果组合情况较多时可以采用等价划分)。51Testing软件测试网[(L[.Kn x-?`4fsh

另一个影响测试用例的就是组织的开发能力和测试对象特点。如果开发力量比较落后,编写较详细的测试用例是不现实的,因为根本没有那么大的资源投入,当然这种情况很随着团队的发展而逐渐有所改善。测试对象特点重点是指测试对象在进度、成本等方面的要求,如果进度较紧张的情况下,是根本没有时间写出高质量的测试用例的,甚至有些时候测试工作只是一种辅助工作,因而不编写测试用例。51Testing软件测试网 e e`.LQe+b

因此,测试用例的编写要根据测试对象特点、团队的执行能力等各个方面综合起来决定编写策略。最后要注意的是测试人员一定不能抱怨,力争在不断提高测试用例编写水平的同时,不断地提高自身能力。51Testing软件测试网$x7g4d[ _"t GC-k'U

7、配置和兼容性测试的区别是什么?

P+NZGLN p0

配置测试的目的是保证软件在其相关的硬件上能够正常运行,而兼容性测试主要是测试软件能否与不同的软件正确协作。

%Q6c8M a(Le0

配置测试的核心内容就是使用各种硬件来测试软件的运行情况,一般包括:

y6~WG5K8E:C3N]#G0

(1)      软件在不同的主机上的运行情况,例如DellApple51Testing软件测试网2c(Em8{/m4U+L5N.S$y K

(2)      软件在不同的组件上的运行情况,例如开发的拨号程序要测试在不同厂商生产的Modem上的运行情况;

2i1{;Q ^ffOEH&c.]0

(3)      不同的外设;51Testing软件测试网+snI6];c:l-F

(4)      不同的接口;51Testing软件测试网+rby)w%\

(5)      不同的可选项,例如不同的内存大小;51Testing软件测试网6eP*b q9@,]1Yx2i(y

兼容性测试的核心内容:

\'BNce0

(1)      测试软件是否能在不同的操作系统平台上兼容;

5L4Y[u&M0

(2)      测试软件是否能在同一操作系统平台的不同版本上兼容;

5PG#xVsz#mg0

(3)      软件本身能否向前或者向后兼容;51Testing软件测试网)gt;EC8CHn

(4)      测试软件能否与其它相关的软件兼容;

FYM$c3I vw+_0

(5)      数据兼容性测试,主要是指数据能否共享;

v9sj9bot0

配置和兼容性测试通称对开发系统类软件比较重要,例如驱动程序、操作系统、数据库管理系统等。具体进行时仍然按照测试用例来执行。51Testing软件测试网M(J q];` |

8、软件文档测试主要包含什么?

iuE#]Z?,?%]I}l0

随着软件文档系统日益庞大,文档测试已经成为软件测试的重要内容。文档测试对象主要如下:

B6i*Bv|6h%U9b+{:MvT0

l        包装文字和图形;

4k ^'hD;|;\{#g0

l        市场宣传材料、广告以及其它插页;

YL!D;G.]jhj?0

l        授权、注册登记表;

y Xh7m Q.c }/@&Bl0

TAG:

 

评分:0

我来说两句

Open Toolbar