欢迎光临 - 各位同仁看完博客记得留言啊!同时请关注我的博客,http://blog.magustest.com

《软件测试》第五章 阅读心得

上一篇 / 下一篇  2007-08-13 22:49:32 / 个人分类:读书笔记

V1G4mP6phG0这章标题是:Testing the Software with Blinders On。带上眼罩去测试软件,不是让你瞎测哦。主要讲的内容就是黑盒测试技术51Testing软件测试网!w;q%~!X+J!MT Z\4p

51Testing软件测试网u+W:yW4L?t;]v

动态黑盒测试(Dynamic Black-Box Testing)

| u_KNPvbZ.R0

~1aU+r0q,Z&Y3O0也有叫行为测试(behavīoral Testing),功能测试(Functional Testing)。现在可能国内很多单位就真的是一个瞎子来测试软件,不是说那个测试人员是瞎子,是老板让他们变成了瞎子,为什么呢?因为可能大多数都缺少文档,我们需要的是软件的需求文档-Requirements Document(需求文档) or Product Specification(产品说明书)

uM/mq/|,DIC"N9B051Testing软件测试网H!gV@ K(t

测试用例(Test Case)。51Testing软件测试网.X:YX5kQ[

sP)EjJn0Test cases are the specific inputs that you'll try and the procedures that you'll follow when you test the software.我的理解,测试用例就是一组根据相应文档而设计出来的操作步骤,输入数据和输出结果,是对软件产品的进行测试的执行过程。51Testing软件测试网*j3D)U(P4G

51Testing软件测试网g,QTX1L ?}2k(Ui7FI

这章还提到了一个概念--Exploratory Testing(探索性测试)51Testing软件测试网E)Wwc`N-i1^z

51Testing软件测试网 j n3Sb;n"k6s

他的定义是:simultaneously learning the software, designing tests, and executing those tests.意思是同时进行对软件的学习,设计测试用例和执行测试用例这3种活动。说句实话我觉得这个瞎测没有什么区别。不过我以前看过这个Exploratory Testing(探索性测试)的资料,是一个讲Rapid Testing的PDF上看到的,我记得对于Exploratory Testing有一个很关键的步骤,就是把在测试活动过程中开发出来的测试用例记录下来,以便以后做回归测试。还有对测试用例进行维护。我觉得这个把测试用例写下来是很重要的,在这种瞎测的过程中,大家的思维肯定是很随机的,或许明天上班我们对同样的软件进行测试就有完全不同的方法,对于有用的正确的方法应该记录下来。

(MaC:fi0

Ke8yG/h0Test-to-Pass and Test to Fail51Testing软件测试网6R?3}\#_9m!e-LP#D+qU

V$N,~,^5Fz"lg? `0这个英文里面也叫Positive Testing and Negative Testing.正向测试和反向测试。前者是证明软件是能正常工作的,后者主要是为了证明软件在接受到一些预期不到的输入的时候能够有一个合理的相应。例如我们在计算器里面输入英文字母不会让系统死机。一般来说我们应该先执行Positive Testing然后再执行Negative Testing。不过这里在实际操作中会遇到有一个问题,这两种测试用例都是对同样的测试对象进行测试,如果先执行Positive Testing然后再执行Negative Testing的话就有可能增加了测试的时间,我估计大多数时候这两种测试都是同时进行的吧,呵呵。

;N/I2R2Nv9[e(j051Testing软件测试网)Y N'z7?DFro

Equivalence Partitioning51Testing软件测试网,bM/htG:|Dk4w!a

51Testing软件测试网$C s8@!kL:U

等价类划分,也叫Equivalence Classing。等价类划分可以在测试质量得到保证的同时大大减少测试用例的数量。等价类的定义是:An equivalence class or equivalence partition is a set of test cases that tests the same thing or reveals the same bug.例如可以把输入分为有效输入和无效输入,在有无效输入里面也可以有好几种细分。总之我觉得想等价类划分是一个不断细化的过程,并不是粗略地分为有效无效就万事大吉了。书中最后说到一个有趣的事情。A final point about equivalence partitioning is that it can be subjective.It's science but it's also art.如果说一样东西即时科学又是艺术,就证明他不是科学的,呵呵……跟个人能力有很大关系啊。51Testing软件测试网fq(i8G.w!P

51Testing软件测试网 f4u\m p(Ue

Data Testing

5J"pz3r hx1A^R]0

2O!`&b/YF"`8n,R:P YM0这个我以前真的没听说过,而且网上的资料也比较少,直接翻译应该是数据测试。一种对软件的简单看法就是:软件由两部分组成:The data and the program。Data(数据)的定义。数据可以是键盘的输入,鼠标的点击,磁盘文件,打印输出等等~程序:就是可执行的流,事务,逻辑和计算。

%YcO,jx Z5C ^"X X"X+|051Testing软件测试网c#O.?ct9RZ)xK$l"};K

Boundary conditions51Testing软件测试网e1b U N9IlV{uS

F S"Hg$VK[d0边界条件。原文是这样说的:If software can operate on the edge of its capabilities, it will almost certainly operate well under normal conditions.如果我们在悬崖边走过而边缘上的岩石没有塌掉的话,那么我们就可以认为在远离悬崖边的地方走路是很安全的~~边界条件通常会跟等价类划分一起使用。

_wH)i jr@c0

'{;zlL h;v"Q _(t0以下是有可能涉及到边界条件的类型:51Testing软件测试网r d#n#Un"d

51Testing软件测试网"o D/U)}l

数字,字符,位置,数量,速度,区域,大小51Testing软件测试网zxX&mJ-t5y&H-a&f's p

6Nu ~0Q+\%d0我们可以想一下一下的情况:51Testing软件测试网(\7M\7h8N[%F

J8[1[z7y`[n%{0第一个/最后一个;最大/最小;开始/结束;之上/之下;空的/满的;最慢的/最快的;最大的/最小的;最短的/最长的;最先的/最后的;最高的/最低的。51Testing软件测试网O7k&N;vE T?9p:Z/X

U6Xw-M4p2i)Pk&a k0这里有一个TIPS就是。当我们考虑边界条件的时候,需要考虑以下三种情况。51Testing软件测试网J V!P&t$f ^1]7{,d1Fj
第一:合法数据范围里面的其中一个取值。51Testing软件测试网R1v*MZ-uji
第二:最后一个合法数据(刚好在合法数据集合的边界上的值)取值。
V%L#X }-]0第三:邻近与最后一个合法数据的非法数据数值。举例~~如果一个Text Box允许输入最大的字符数是20个,那么就可以选19,20,21,刚好符合以上条件。(这个举例只针对最大值20哦)

+qTg%{j051Testing软件测试网l@oI6IO

次边界条件(sub-boundary conditions)

n-nV"X(H6?\EzL0

1CPT vz%z Ve0或者叫内部边界条件(internal boundary conditions)。这部分内容要求测试人员要对计算机和软件怎么运行,有一个基本的了解。这些次边界通常会来自于:ASCII码所引起的问题,因为ASCII码并不是一个连续的编码,大家可以发现大写字母和小写字母在ASCII码里面并不是连续的,这里面有可能出现问题,再有就是一些单位,例如Byte,word等等。51Testing软件测试网c'w{C7Rk,y

y:l w]eq~&QJ;K[0状态测试(State Testing)

t?(J6p\r051Testing软件测试网.o$L3k4` gWW(gZH

一个软件的状态的定义是:软件在某一时刻所处于的一种状态或者模式。作为一个测试员,我们必须对程序的状态和事务的转换进行测试。测试一个软件的逻辑流程应该首先画出一个状态转换图。这个状态转换图应该包括三个方面。
2U#kc)o$H:O:nP01.软件的每一个可能的状态。51Testing软件测试网\D[RG-Xa
2.触发软件的状态转换的输入和条件。51Testing软件测试网;Vl zoX
3.进入和退出某种状态的条件设置及其产生的输出。

N'\(aP-q}0由于状态的转换路径也是一个不可能全部测试的集合,所以需要对这个集合进行瘦身。有5种方法可以做到。51Testing软件测试网b,Q stZ0s7v:V"|9b*NI
1.每个状态至少访问一次51Testing软件测试网J%l-] Ks(FY
2.测试那些看起来是很普遍或者是很常用的状态转换51Testing软件测试网2m!` Ib.YJ.A6sG!T
3.对那些最不常用的状态切换进行测试
Iqi]TWF _l Y_04.测试所有的错误状态和从错误状态切换回来的状态51Testing软件测试网 GK5` u T,C"u@ s
5.测试随机的事务
51Testing软件测试网D$Hh:^m)t1p

v$^ }v8V t0Testing States to Fail51Testing软件测试网Hd3k"__9`;b+H5`.jV H

51Testing软件测试网4|$~?ma$Z!C

反向状态测试。竞争条件(Race conditions)是需要包括的。这个很多地方都讲了,我省一点字,呵呵。
gTa.K-m2u+V0G0Repetition Testing(重复测试)就是不断执行同样的操作。最简单的是不停地启动、关闭程序。这个测试有可能可以发现内存泄露,不过像这样子的测试当然最好是留给自动化工具去完成啦~呵呵。51Testing软件测试网&Oi!hN ?!A
Stress Testing(压力测试)书上的定义是把软件置于比理想状态要差的条件中运行。也有点像是边界条件,这里的边界就是软件的运行平台条件。
"BRmPJ Fd0Load Testing(负载测试)跟压力测试相反,我们需要做的是让软件满负荷地运作

%jo/ySfe0

i(p etF#u2nwV0这里关于压力测试和负载测试的定义我自己也不太确定书上说的是不是真的完全正确,因为类似的定义在网上论坛也不是一个很明确的定义,以后查资料补上吧:)

*z7c$qBY)E0

.l4y{Es] pd$?0其他黑盒测试技术51Testing软件测试网@"] k7i$or`

J9i4m&f v G2r J0其中有一条是:像一个傻瓜一样去使用软件。的确,软件到了用户的手里以后,没有人可以预计用户会如何使用这些软件~还有就是在已经发现BUG的模块上继续努力~呵呵,物以类聚嘛:)再有就是像一个黑客那样思考,这个对测试员的要求比较高哦,最后一条就是!哈哈~根据自己的经验,直觉,感觉……大家跟着感觉走囖。

1f+yx5RHrp051Testing软件测试网7|)|$c*\&Y l@ wt

终于写完了,我觉得这个我越写就越教科书……唉 :(

H:@,F1fn-j'M0I0
相关阅读:

TAG: 软件测试 读书心得 笔记 黑盒测试 读书笔记

引用 删除 key69   /   2007-12-23 22:37:43
写得挺好,很有帮助。谢谢!
yuyang316的个人空间 引用 删除 yuyang316   /   2007-11-28 15:31:48
5
楼主写得不错,支持,继续写下去
jaunty -- Make It Crash and TATFT 引用 删除 jaunty   /   2007-08-14 13:59:56
说到最后就是认准一个道理然后跟着感觉走了~`haha
 

评分:0

我来说两句

maguschen

maguschen

男,测试工程师,白盒和自动化都做,兼职性能

日历

« 2024-04-12  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 28448
  • 日志数: 20
  • 图片数: 3
  • 建立时间: 2006-12-07
  • 更新时间: 2009-09-16

RSS订阅

Open Toolbar