如果你有一个苹果,我有一个苹果,我们交换以后还是一人一个苹果,但如果你有一种思想,我有一种思想,我们交换以后,每个人便拥有了两种思想。

发布新日志

  • 第3章 1节 C语言的基本元素

    2008-05-30 09:03:31

    一、符号集(字符集)

        大、小写字母azAZ        阿拉伯数字09          下划线_

        标点符号和运算符

        ,  逗号            |   竖线              (  左圆括号            )  右圆括号

    .  圆点            ~  波折号            [  左方括号            ]  右方括号    

     ;  分号           #   井号              {  左大括号            }  右大括号

     :  冒号           %  百分号            <  左尖括号            >  右尖括号

     ?  问号           &  and ()              单引号                双引号     

     !  感叹号         ^   xor(异或)          /   斜杠                \  反斜杠

    *  乘号           -   减号              =  等于号              +  加号

    二、标识符:用来标记常量、变量、函数及文件名字的字符序列。

    标识符的构成规则

    (1)       以字母(大小写均可)或下划线开头。

    (2)       随后可跟若干个(包括0)字母、数字、下划线。

    (3)       标识符的长度各个系统不同,最好不超过8个字符。

    注意:区分大、小写。

    三、关键字(保留字):C语言中具有特定含义,专门用作语言特定成分的一类标识符。

    注意:(1)所有的关键字都有固定的意义,不能用作其他。

         2)所有的关键字都必须用小写。

    3.2C的数据类型

       数据是操作的对象,数据类型是指数据的内在表现形式(代码、、存储、运算)

       数据类型(1)基本类型:整型(int)、实型(浮点型)、字符型(char

    2)构造类型:数组类型、结构体类型、共用体类型、枚举类型

    3)指针类型

    4)空类型

    3.3常量和变量

    一、常量和符号常量

         常量:在程序运行过程中,其值不能被改变的量。

         符号常量:用一个标识符代表的一个常量。

            #  define  标识符  常量

    二、变量

    1)变量:其值可以改变的量,它用标识符(变量名)来表示,在内存中占据一定的存储空间。

         变量的表示(变量名)    变量的值(存储单元)

    2)变量的定义:   类型符     标识符

    3)注意:见名知意、先定义后使用、必须使用合法的标识符作变量名、不能使用关键字作标识符

    4)习惯:符号常量名用大写,变量名用小写,以示区别。

    3.4整型数据

      一、整型常量

         1)十进制常量

         2)八进制常量

              0~7数字组成;最高位必须用0作引导符。

              如果前面有 - 号,表示对真值取反。

    3)十六进制常量

           0~9、、a~fA~F)组成,最高位必须用0x0X)作引导符。

    二、整型变量

       1)整型数据在内存中的存放形式:

            数据在内存中以二进制的补码表示(符号位 + 二进制数值)

            正数:原码、反码、补码相同,符号位为0,数值为对应的二进制数。

            负数:原码符号位为1,数值为绝对值的二进制数。

                  反码符号位为1,数值为绝对值的二进制数各位变反。      

                  补码符号位为1,数值为绝对值的二进制数各位变反加1

       2)整型变量的分类

            根据其数值的范围:

    基本整型(int2、短整型(short int2、长整型(long int4

            根据变量的表数范围

            有符号数(signed)(可省略):最高位为符号位 

    无符号(unsigned)(不可省):最高位为数据位

    4)有符号型:

      基本型:基本型的类型说明符为int,在内存中占2个字节,其取值的范围

                -215215-1,即-3276832767

      短整型:短整型的类型说明符为short intshort,所占字节和取值范围均

                与基本型相同。

      长整型:长整型的类型说明符为long intlong,在内存中占4个字节,其

                取值范围是-231231-1,即-21474836482147483647

           5)无符号型:

    1)无符号基本型:类型说明符为unsigned intunsigned,取值范围是0

                       65535

    2)无符号短整型:类型说明符为unsigned short,与无符号基本型一样

    3)无符号长整型:类型说明符为unsigned long int unsigned long,取值范

                       围为0232-1,即04294967295

           6)整型变量的定义

           7)注意:(1)整数后有后缀uU,认为是unsigned

           2)整数后有后缀lL,认为是long int型。

    3.5实型数据

    一、实型常量(实数又称浮点数)

    1)表示形式:(1)十进制数形式

                  2)指数形式(注意:e前后必须有数字,e后必须为整数)

    2)类型:缺省为double型(默认)

               后缀为fF,为float型;

               后缀为lL,为long double型。

    二、实型变量(取值范围与值的精度与机器有关)

       1)单精度型(float型):占4个字节,7位有效数字(3.4e-383.4e+38

       2)双精度型(double型):占8个字节,15~16位有效数字(1.7e-3081.7e+308

       3long double型:占10个字节15~16位有效数字,3.4e-49321.1e+4932

    三、实型数据的舍入误差

       1)在内存中,实型数据是以指数形式存放

            小数符号位     小数           指数符号位(阶符)  指数

  • Oracle导入导出方法

    2008-04-29 13:39:08

    导出表:
    exp
    scott/tiger@mycon tables=(dept,emp) file=tab1.dmp
    导出用户:
    exp
    system/manager@mycon ōwner=scott file=usr1.dmp
    导出数据库:
    1.完全导出
    exp
    system/manager@mycon full=y inctype=complete    file=full1.dmp
    2.增量导出
    exp
    system/manager@mycon full=y inctype=incremental file=inc1.dmp
    3.累积导出
    exp
    system/manager@mycon full=y inctype=cumulative file=cum1.dmp

    imp example:
    导入表:
    imp
    system/manager@mycon file=c:\tab1.dmp tables=(dept,emp) touser=scott
    导入用户:
    imp
    system/manager@mycon file=usr1.dmp fromuser=scott touser=scott
    导入数据库:
    1.全库导入
    imp
    system/manager@mycon file=full1.dmp full=y
    2.增量导入
    1)导入数据库最新信息
    imp
    system/manager@mycon inctype=system full=y file=inc7.dmp
    2)导入最近完全导出文件
    imp
    system/manager@mycon inctype=restore full=y file=full1.dmp
    3)导入所有累积导出文件
    imp
    system/manager@mycon inctype=restore full=y file=cum1.dmp
    4)导入最近一次增量导出的文件
    imp
    system/manager@mycon inctype=restore full=y file=inc1.dmp

  • C语言作业1

    2008-04-25 23:58:05

    作业1    1+2+3...+100

    mail()

    {

      int a,b;

      a=0;b=1;

      while (b<=100)

      a+=b;

      b++;  /* 或 b=b+1; */

      printf("%d\n",a);

    }

    作业2   输入两个数求最大值

    mail()

    {

     int a,b;
      printf("input two numbers:\n");
      scanf("%d%d",&a,&b);
     if(a<b)
      printf("最大值为%d\n",b);
     else
      printf("最大值为%d\n",a);

    }

  • 在北京工作随感

    2008-04-22 22:30:33

    到北京工作已经两年了,不知是自己适应能力不行还是别的原因,对我们伟大的首都北京一直都没有产生好感,相反倒是有些反感(北京人民千万别骂我)。
    首先北京的气候让我感觉非常不舒适。冬天太干燥(经常流鼻血),夏天太酷热(竟然可以和南昌比热),春天有沙尘曝(在南方是根本看不到的),可能也就秋天天气好一点。
    北京的交通更加让人受不了,上、下班时间,距离稍远点就得一两个小时,公交、地铁都济的不得了,在北京的朋友应该都深有同感吧。
    工作方面感觉压力也大,收入不算高。
    一句话,在北京生活不舒适,不容易。
    希望这只是过过度时期等充足了电,有机会还得回南方工作,最好就回老家盖个平房,买块地,种点菜,养点鸡鸭,白天工作下班后就劳动,诶多美啊。

  • 测试风险的管理

    2008-04-22 14:06:35

    测试风险是不可避免的、总是存在的,所以对测试风险的管理非常重要,必须尽力降低测试中所存在的风险,最大程度地保证质量和满足客户的需求。在测试工作中,主要的风险有:

        一、质量需求或产品的特性理解不准确,造成测试范围分析的误差,结果某些地方始终测试不到或验证的标准不对;
        二、测试用例没有得到百分之百的执行,如有些测试用例被有意或无意的遗漏;
        三、需求的临时/突然变化,导致设计的修改和代码的重写,测试时间不够;
        四、质量标准不都是很清晰的,如适用性的测试,仁者见仁、智者见智;
        五、测试用例设计不到位,忽视了一些边界条件、深层次的逻辑、用户场景等;
        六、测试环境,一般不可能和实际运行环境完全一致,造成测试结果的误差;
        七、有些缺陷出现频率不是百分之百,不容易被发现;如果代码质量差,软件缺陷很多,被漏检的缺陷可能性就大;
        八、回归测试一般不运行全部测试用例,是有选择性的执行,必然带来风险。

        前面三种风险是可以避免的,而四至七的四种风险是不能避免的,可以降到最低。最后一种回归测试风险是可以避免,但出于时间或成本的考虑,一般也是存在的。
        针对上述软件测试的风险,有一些有效的测试风险控制方法,如:

        ·测试环境不对可以通过事先列出要检查的所有条目,在测试环境设置好后,由其他人员按已列出条目逐条检查;
        ·有些测试风险可能带来的后果非常严重,能否将它转化为其他一些不会引起严重后果的低风险。如产品发布前夕,在某个不是很重要的新功能上发现一个严重的缺陷,如果修正这个缺陷,很有可能引起某个原有功能上的缺陷。这时处理这个缺陷所带来的风险就很大,对策是去掉(Diasble)那个新功能,转移这种风险;
        ·有些风险不可避免,就设法降低风险,如“程序中未发现的缺陷”这种风险总是存在,我们就要通过提高测试用例的覆盖率(如达到99.9%)来降低这种风险;

        为了避免、转移或降低风险,事先要做好风险管理计划和控制风险的策略,并对风险的处理还要制定一些应急的、有效的处理方案,如:

        ·在做资源、时间、成本等估算时,要留有余地,不要用到100%;
        ·在项目开始前,把一些环节或边界上的可能会有变化、难以控制的因素列入风险管理计划中;
        ·对每个关键性技术人员培养后备人员,作好人员流动的准备,采取一些措施确保人员一旦离开公司,    项目不会受到严重影响,仍能可以继续下去;
        ·制定文档标准,并建立一种机制,保证文档及时产生;
        ·对所有工作多进行互相审查,及时发现问题,包括对不同的测试人员在不同的测试模块上相互调换;
        ·对所有过程进行日常跟踪,及时发现风险出现的征兆,避免风险。

        要想真正回避风险,就必须彻底改变测试项目的管理方式;针对测试的各种风险,建立一种“防患于未然”或“以预防为主”的管理意识。与传统的软件测试相比,全过程测试管理方式不仅可以有效降低产品的质量风险,而且还可以提前对软件产品缺陷进行规避、缩短对缺陷的反馈周期和整个项目的测试周期。
  • 总结C语言第二章内容----数据类型、运算符与表达式

    2008-04-20 09:48:08

    周六一天把完成第二章节内容,具体如下:

    1.          程序设计概述

    2.          C语言的数据类型
    常量和变量
    整型数据
    实型数据
    字符型数据

    3.          算术运算与算术表达式

    4.          赋值运算与赋值表达式
    C
    语言特有的运算和运算符

    学完后觉得很多东西在课本中讲的很好,但是离开课本后且忘的一干二净,此时才知道课后的作业题目和今后的上机实际操作的重要性,以此提醒,继续努力学习。

  • 总结C语言第一章内容----C语言概述

    2008-04-19 02:13:17

    看到2点多把以下章节重新巩固并吃透了,呵呵,虽然看到夜里2点多但心里比较舒服,明天继续 加油!! 每天记录自己学习C语言的成长~~

    1.          C语言的发展简史和特点

    2.          C语言程序的结构与书写规则

    1.C语言程序的总体结构

    2. 函数的一般结构

    3. 源程序书写格式

    4. C语言代码的技巧

    3.          C语言的语句和关键字

       C语言的语句

          1.控制语句

            2. 函数调用语句

    3. 表达式语句

    4. 空语句

    5. 复合语句

        关键字

  • 影响测试进度的原因

    2008-04-18 17:26:45

    影响测试进度的原因有:

    1、研发进度是否正常,是否正常按计划提交研发成果.

    2、用户需求的频繁变更和变动影响范围,最根本原因是用户需求没有做好.

    3、测试的资源缺乏,如:测试时间、测试环境、人力。

    4、测试人员和开发人员的技术、沟通技能是否符合项目的要求

    5、测试人员发现有效bug的情况

    6、项目经理对整个项目的工作安排和计划是否合理,管理是否有效,是否人员流动频繁

    7、项目的难度因素

    8、用户的配合程度

    我个人认为的解决方案如下,欢迎大家一起讨论啊:

    第1种情况:按实际情况,合理调整开发进度和测试进度,这不是测试能把握住的,是需要由项目经理来把握.

    第2种情况:需求没有做好,导致后期变更频繁,这需要加强需求调研人员的能力,同时做好需求变更的管理,怎么做好需求变更的管理?这个可以做为下一个题目来讨论

    第3种情况:测试资源缺乏,时间不够,人力不够,那就只能加班,那就只能舍去不是特别重要的测试用例,确保优先级别高的功能或业务能够正常使用.测试环境没有,那就先在开发环境下跑并及时向领导汇报工作上碰到困难,汇报没有测试环境测试会出现的风险.

    第4种情况:技术不行,就培训,没钱培训,就换适合的人来做.

    第5种情况:测试发现的BUG不是有效BUG,就反省测试用例,测试负责人要加强所测试系统的业务理解,指导测试人员.测试人员要加强对BUG的理解,提高测试水平.

    第6种情况:测试只能反馈情况,这个由项目经理来控制.

    第7种情况:用最能干的人才来做,需要集体智慧和劳动才行.

    第8种情况:这需要项目负责人和用户沟通,取得用户的信任和配合,这也不是测试能把握住的.

    由上述可知:只有第3,4,5项原因是测试可控的,其它测试是不可控的;可想而知,要想把握好测试的进度是要看具体情况具体分析的了.....

  • 给项目测试经理的一点建议

    2008-04-12 08:16:24

    若你想成为优秀的测试项目管理者,你就反思如下内容是否做到:
    1) 在一个项目中多与开发和产品负责人讨论并了解变化,因为我们的规范永远不能保证测试的输入没有遗漏;
    2) 在一个项目中多参与测试方案、测试用例、测试方法、测试工具、测试过程、测试结果的评审与讨论,弥补下属或者自己考虑不周全的问题;最好可以请开发负责人参加;
    3) 在一个项目中多考虑测试效率和测试效果的问题,这样可以不断启用新的测试方法和测试流程来提高效率、保证测试效果;
    4) 在一个项目中多多进行阶段小结,这样可以弥补一些测试不足的地方,并很好地规划下一个阶段的计划;测试计划不是一成不变的,必须定期调整;
    5) 在一个项目中涉及到变更时,要再次评审测试方案、测试用例、测试方法、测试工具;若频繁变更,则更要把握好节奏;
    6) 在一个项目中要非常重视组件/模块的接口测试、集成测试,不仅表现在方案、用例上,同时也表现在测试时间的安排和人的协调管理上;
    7) 在一个项目中要非常重视下属直接参与技术讨论会议的重要性,既树立他与开发人员沟通的信心,又加深了下属对项目的了解情况,对未来的工作开展非常有利;
    8) 在一个项目中对于还没有掌握沟通技巧或者对自己没有信心的下属,请带着他一起和开发或者产品进行沟通或者鼓励他去沟通,并了解他沟通的效果并指出下次沟通的注意事项;
    9) 在一个项目中你要了解自己的知识面是否与该项目匹配,不匹配提前做好准备;
    10) 在一个项目中你也要了解你的下属能力与该项目的要求是否匹配,若不匹配,要不换人,要不请开发来培训;
    11) 在一个项目中你不要和下属争功,上级对你的考察永远是团队和项目,帮助下属成长和保证项目质量是你永远的责任;
    12) 在一个项目中你的懒惰将会对下属和项目造成极坏的影响,因为你是核心。

    若你还想往上发展,就不断地在项目中锻炼自己的同时,让自己多关注技术、管理和行业,缺哪个补哪个

  • [转] 学会感恩

    2008-04-07 10:26:10

    我的母亲是个农民,我的父亲也是个农民.然而就是这样一对普通的农民夫妇,却养了我们兄妹八个wow gold.
      "生了,是个女娃,这下好了,小子四个,女娃四个"'wow gold真是老天赐福呀"在一声声欢呼声中,我降生了,我来到了这个世上,可能是我出生时小巧玲珑模样可爱吧,这被叫做玲儿,也可能是因为我是最小的一个吧,我成了全家的宝贝,父母疼我,哥姐爱我.
        爸爸脾气不好,哥姐都怕他,可我不怕,他不打我,有时我骑在他身上嗒嗒作马骑.爸爸一点也不发火,还乐呵呵的.气得哥姐都说爸爸偏我.
      妈妈呢,更爱我.
      每次去学校,妈妈都要为我准备一大兜的好吃的,总怕我饿着.每次回来,我也拎一大兜回来,那里不装好吃的,全是脏衣服.上学时又穿上干净的衣服,拎一大兜就出发了.我常常自豪地说我有一个能干妈妈.
      实际妈妈不仅能干,也很吃苦.
      那次家里没面了.而哥姐们又都不在,就只有我和妈妈."我去磨面吧."那时我已十二岁了,可以替家里干点活了."那怎么行,你年龄还小,伤了身体怎么办"妈妈抢过我手中的麦袋,背起向磨房走去.看着妈妈远去的背影,还有那斑驳的头发,我的眼泪流了出来.
      妈妈并不算老,只有50多岁,可白发已那么多了.,我知道是我们一大家子的生活把她催老了,爸爸呢,也是一个人干两个人的活,头顶上已几乎没头发了.我知道全是生活所累,我国暗暗发誓,我要报恩.
      时光一天天地过去,我长大了,考上了学,找到了工作,总算可以报恩了.我买了好多好吃的,我还二老好多钱,但是这算不算报了恩了呢.
      那次放星期,我去看妈妈,也同样带了好多好吃的,妈爸看见我来了,高兴得合不拢嘴.他们把积赞的那些好东西全拿出来,让我和儿子吃,我知道那就是母爱,父爱.可是要上班,我不得不走了,妈妈的眼泪流了出来,爸爸也沉默了,再看看妈爸身上穿得姐姐们买得甚至自己做的衣服,我疑惑了,我给二老好吃的,给他们钱,能算报恩吗等我有时间吧,我一定陪你们,一直陪你们,陪你们逛街,陪你们买衣服,陪你们下馆子……然而他们并没有等到那一刻.
      而我写此文时,他们已是三周年已过了.
      妈爸,我是在内疚中度过三年,的,你们知道吗.这三年来,我就被痛苦折磨着.爸,妈,你们为什么不给我机会.?为什么让女儿如此痛苦.
      为什么?这都是为什么?
      我为什么这么不孝,?为什么让大好时机错过?我怎么这么无用,?谈什么报恩?我报什么了,\?
      我哭,可是我无泪,我想辨,可没理由,我想逃,可没路......
      最后我只能说,儿女不是没有孝心,都也知道报恩,可是要报得及时,不要等他们都走了,一切就成了泡影,想后悔没得地方了,
      学会报恩吧.
  • 经典→屁

    2008-04-06 16:10:26

    诚实:不管响屁还是哑屁,放屁后立即主动承认。
    顽皮:专找人多的地方放屁,然后跑开。
    倒霉:本想放屁,结果拉了一裤子屎。
    害羞:放了个哑屁脸就红了。
    狡猾:用咳嗽掩盖放屁的声音。
    自私:自己放屁不言不语,别人放屁大声指责。
    妄想:计划利用放屁环游世界。
    虚伪:放了屁却把责任推给身边的小狗。
    节约:积蓄好几个屁之后再一起放。
    粗鲁:故意使劲把屁放响,接着放声大笑。
    毅力:一个屁能憋很久不放。
    好奇:闻到屁味便立即开始调查周围的人。
    紧张:一个屁只放了一半就放不出来了。
    聪明:从屁的味道可以判断出别人吃的食物。
  • 编写测试计划需要注意事项

    2008-04-05 10:43:28

    编写测试计划时,必须考虑实施过程的几个方面:
    1 测试计划为了解决不同阶段所需的测试类型,每种测试类型目标是什么?
    2 每种测试类型中用于测试的策略。
    3 测试过程中不同角色职能是什么?
    4 测试团队中不同角色中的具体活动有哪些

    下面是一个比较完备的测试计划例子
    1 测试范围

    2 针对每种测试类型的测试环境部署(模拟真实的环境)

    3 Bug的评价、报告和跟踪

    4 版本是如何更改控制

    5 可监控的测试进度,可以分为以下几大类:
    5.1 测试环境搭建设置
    5.2 文档档评审(此部分属重重之中)
    5.3 测试方案
    5.4 测试用例
    5.5 测试执行迭代次数和时间

    6 风险和依赖关系(如测试环境需要的资源,开发计划进度调控等)

    7 测试工具
    8 里程碑
    9 需求最终交付成果

  • 测试需求分析

    2008-04-04 13:30:04

    测试需求分析的信息来源不止是业务需求,我们公司的规范做法:
    全部新业务:
    。画出业务流程
    。提取基本正向流程、分支流程及反向流程
    。提取流程穿过的业务画面,填写全部的界面参数及系统内置参数(其他画面输入)
    。填写每个画面的必输项
    。提取业务规则
    。从常用规则库提取适用规则
    。使用业务原语描述测试模板
    。计算参数表适配模板得出用例优化压缩空间
    。根据风险原则选取

    老业务回归:
    查出配置管理系统本次变更的程序模块、库表、值域选择等的变化
    计算变更影响分析
    提取需要复测的功能列表
    提取影响这些功能列表的业务流程
    提取测试用例模板
    修正模板(如果界面修改)
    修正参数(如果值域修改)
    修正规则参数(与业务规则修改相关)
    修正模板中比对部分(如果修改输出表达)
    修正模板中业务数据查询核对(如果修改数据库)
    自动提交复测
  • [转帖] 测试的自我修养

    2008-04-04 09:39:43

    前人的帖子,前人的经验。记得当初第一次看了就感觉很受用。现给大家共享。

    1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。

    2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。

    3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。

    4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。

    5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。

    6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。

    7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览群书。

    8.看再多的书是学不全脚本的,要多实践。

    9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。

    10.学习脚本最好的方法之一就是多练习。

    11.在任何时刻都不要认为自己手中的书已经足够了。

    12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。

    13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;

    14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;

    15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中。

    16.不要漏掉书中任何一个练习——请全部做完并记录下思路;

    17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。

    18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;

    19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了。

    20.记录下在和别人交流时发现的自己忽视或不理解的知识点。

    21.保存好你做过的所有的源文件----那是你最好的积累之一。

    22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!

    23.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。

    24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。

    浮躁的人容易问:我到底该学什么;----别问,学就对了;

    浮躁的人容易问:测试有钱途吗;----建议你去抢银行;

    浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!

    浮躁的人分两种:只观望而不学的人;只学而不坚持的人;
  • 应用系统安全测试方法及内容

    2008-04-03 12:45:28

    测试内容

    测试要点

    测试方法

    应用系统的用户管理、权限管理应充分利用操作系统和数据库的安全性;应用软件运行时须有完整的日志记录。

    日志记录的完整性

    检测系统运行时是否会记录完整的日志。如进行详单查询,检测系统是否会记录相应的操作员、操作时间、系统状态、操作事项、IP地址等。

    不允许以明文方式保存用户密码或系统使用的各类密码

    用户密码或系统使用的各类密码的加密存储

    检查数据库中的用户密码、操作员密码等字段是否是以加密方式保存。

    为保证安全性,口令不允许以明码的形式显示在输出设备上,应能对口令进行如下限制:最小口令长度、强制修改口令的时间间隔、口令的唯一性、口令过期失效后允许入网的宽限次数。

    1.口令不允许以明码显示在输出设备上。

    2.最小口令长度的限制。

    3.强制修改的时间间隔限制。

    4.口令的唯一性限制。

    5.口令过期失效后允许入网的宽限次数限制

    实际登录系统,输入相应的口令,检测口令是否是以加密形式显示,同时检测最小口令长度、强制修改口令的时间间隔、口令的唯一性、口令过期失效后允许入网的宽限次数。

    应用系统应支持操作失效时间的配置,当操作员在所配置的时间内没有对界面进行任何操作则该应用自动失效。

    1.支持操作失效时间的配置。

    2.支持当操作员在所配置的时间内没有对界面进行任何操作则该应用自动失效。

    检测系统是否支持操作失效时间的配置,同时达到所配置的时间内没有对界面进行任何操作时,检测系统是否会将用户自动失效,需要重新登录系统。

    应用系统应提供完善的审计功能,对系统关键数据的每一次增加、修改和删除都能记录相应的修改时间、操作人和修改前的数据记录。

    支持系统关键数据进行维护的记录功能。

    检测对系统关键数据进行增加、修改和删除时,系统是否会记录相应的修改时间、操作人员和修改前的数据记录。

    应用程序的源代码不允许放在运行主机上,应另行存放,并具有版本控制能力。

    1.应用程序的源代码不允许放在运行主机上,应另行存放。

    2.版本控制

    1.登录主机审查应用程序的源代码存放位置。

    2.查看支撑系统版本控制管理办法或相似文件,是否有相应的版本管理规章制度;软件升级、补丁植入流程管理是否合理。

    3.查看系统软件版本记录文件及软件介质与软件操作手册,是否有详细的软件版本号、软件升级与补丁植入情况的记录。

    各应用软件目录设置及其访问权限应有相应的规范,以保证系统的安全性和可维护性。

    各应用软件目录设置及其访问权限应有相应的规范。

    审查是否有各应用软件目录设置及其访问权限相应的规范文件。

    接口程序连接登录必须进行认证(根据用户名、密码认证)

    支持接口程序连接登录时的认证。

    实际运行系统,检测接口程序连接登录时,是否需要输入相应的用户名、密码进行认证。

  • 感悟得与失

    2008-03-24 17:15:04

    时常觉得上天是公平的。
    上天给你一些东西,也必定取走你另一些东西。
    得失得失,本是一体,有得就有失。
    我有了待遇好的工作,失去了开心的工作氛围。
    等我开心的工作氛围时,却有失去周六日的自由。
    付出就有所收获,因为上天拿走了我付出的,所以给了我我想要的。
    所以不要怪上天不公平,上天是公平的。
    只要坚持心中想要的,努力向着去付出,那就会有所收获。
    但不要贪心不足,不要想着不付出就有所收获。
    失去了不要气馁,一定要放宽心,一定会得到另外的东西的,
    或者是得到了更好的,也或者是得到了更差更不想要的。
    总之一切一切的努力,换来明天的希望。
  • 代码测试的基本框架和例子

    2008-03-24 17:04:43

    测试例程的例子:

    #include
    #include
    // 整理一个字符串的前导和追尾空白,
    // 返回整理后的字符串
    std::string trim_spaces( const std::string & str)
    {
    /* trim_spaces 的实现*/
    }
    void testTrimSpaces()
    {
    assert( trim_spaces( " abc") == "abc");
    assert( trim_spaces( "def ") == "def");
    assert( trim_spaces( " this is a test ") == "this is a test");
    assert( trim_spaces( "") == "");
    assert( trim_spaces( " ") == "");
    }

            怎样建立一个测试框架,和建立它每一个步骤:

            第一步:将测试代码和实际代码清楚地分隔开。要做到这一步,一个很简单的方法是把所有用来做测试的文件都放到一个特别的目录中去。每个用来做测试的文件的名字都应该以test开头,然后加上它所测试的模块/类名。例如,从testWordTokenizer.cpp文件的名字就可以看出,它是用来测试一个断词类(word tokenizer class)的。

            测试用的代码仅在执行测试时才被编译。当生成实际的应用程序时,测试代码会在预处理阶段就被移除。如果我们的每个测试文件都遵循下面的模式就可以保证这一点:

    // Test.cpp
    #ifdef TESTING
    /* testing code*/
    #endif // TESTING
    // End of file

            于是,如果定义了TESTING,我们就是在做测试;否则,我们就是在从实际的代码生成应用程序。

            第二步:所有用来测试代码片断的函数的名字都应该以Test或test开头。对于你所测试的每个模块/类,都要有一个主测试函数负责调用其他测试函数来测试模块/类的各个代码段。这样你就不需要暴露出所有函数——只要暴露出主测试函数就可以了,像下面的例子:

    // TestUrlUtility –用于测试 "Url Utility 函数族"
    #if defined( TESTING)
    #include "UrlUtility.h"
    // 这个命名空间中的函数,从这个源文件外部是不可见的
    namespace // 匿名命名空间
    {
    void TestDivideURL()
    { /* 测试代码 */ }
    void TestIsUrlValid()
    { /* 测试代码*/ }
    void TestIsHttpUrlValid()
    { /* 测试代码*/ }
    void TestParseHttpUrl()
    { /* 测试代码*/ }
    }; //匿名命名空间
    // ... 这是从这个源文件外部唯一可见的函数
    //
    // 我们希望暴露出这个函数;
    // 在任意文件中,你可以声明它的原型如下:
    // void TestUrlUtility();
    //
    // 然后就可以在你的代码中调用
    void TestUrlUtility()
    {
    TestDivideURL();
    TestIsUrlValid();
    TestIsHttpUrlValid();
    TestParseHttpUrl();
    }
    #endif // #if defined( TESTING)
    // 文件结束

            第三步:创建一个测试主文件(大概应该叫做testMain.cpp),其中包含有开始执行测试的main函数。这个“main”函数要做的就是调用各种不同的测试函数。你可以取消希望执行的测试前面的注释符号,或者把你不想执行的测试注释掉。它的代码看起来会是这个样子:

    // TestMain.cpp –用于测试整个应用程序
    #ifdef TESTING
    #include
    // 测试函数开始
    // ... 注意:这一部分包含的应该是
    // 各个主测试函数(测试整个
    // 模块或整个类的函数)
    void TestUrlUtility();
    void TestProxyManager();
    void TestHttpRequest();
    void TestHttpHeaderFields();
    // 测试函数结束
    /*
    用于测试应用程序的各个部分
    */
    int main()
    {
    std::cout << "Testing Application." << std::endl;
    // 在这里加入你要执行的测试
    // TestProxyManager();
    // TestHttpRequest();
    // TestUrlUtility();
    TestHttpHeaderFields();
    // 取消你要执行的测试前面的注释符号
    return 0;
    }
    #endif
    // 文件结束

            第四步:有些代码片断不应该在测试时被编译(如用户界面代码,真正的“main”函数等)。这些代码将像下面这样括起来:

    #ifndef TESTING
    /* 实际代码 */
    #endif // ndef( TESTING)

            第五步:为测试创建一个配置。大多数最新的集成开发环境(IDE)都允许从不同的配置中选择,并至少提供了两个缺省配置:debug和release。基于debug配置创建一个新的。然后,直接打开TESTING标志。如果用的是gcc,那么给编译参数加上一个-DTESTING标志。如果用的是VC6,在Project Settings | C++ tab | General | Preprocessor处加一个TESTING的定义
  • 如何评价测试用例的好坏?

    2008-03-23 18:32:38

    对于一个测试用例好坏的评价,无外乎两个标准:是否可以发现尚未发现的软件缺陷?是否可以覆盖全部的测试需求?但是后来发现这两个标准对于一些问题是处理不了的。例如,对于一个质量非常好的软
    件产品,存在的软件缺陷异乎寻常的少,测试用例设计人员准备了大量的测试用例,已经完
    全覆盖了测试需求,但是只有很少一部分测试用例在执行时发现了缺陷,而其他用例都顺利
    通过了。那么是否就可以认为顺利通过的那部分测试用例不好呢?
    对于这个问题,我认为不管是测试用例是否可以发现尚未发现的缺陷,还是测试用例
    对测试需求的覆盖度,都是用来评估测试用例设计人员工作能力标准,而对于如何评价测试
    用例本身的优劣,应该还有其他标准。当然,在不同的团队中可能存在不同的标准,但下面
    两条应该是适合于任何团队的。
    1.
    易用性。对于一个即熟悉测试工作,又熟悉被测应用的测试人员,应当可以花费很少
    的时间就可以理解测试用例中表达的测试思路,并可以很快的完成这个测试用例的执行;
    2.
    易维护性。当开发过程中的某些因素影响了测试需求,测试用例的作者或其他测试用
    例设计人员,应该可以花费很少的时间就完成定位和维护所有相关测试用例的工作。

  • 软件测试综述

    2008-03-22 22:49:56


    第一部分 软件测试综述

    软件测试-机械工业出版社 (美)Ron Patton著 周予滨 姚静等译
    读书笔记与心得
          说真的,这本书真的很不错,里面的一些定义很权威的,而且话不罗嗦,
    讲的都是重点,美中不足的在测试用例设计方法那块不完整。许多人在推荐
    入门看什么书的时候都提到此书,为了方便新手学习(其实我也是新手哈哈),
    我决定把我以前的读书笔记与一些心得敲出来贴在网上,写的不是太全,主要是我觉得不错的东西。在此感谢此书作者和翻译人员!


    软件测试读书笔记之软件测试背景       
    软件测试读书笔记之软件开发过程       
    软件测试读书笔记之软件测试的实质       
    软件测试读书笔记之检查产品说明书       
    软件测试读书笔记之闭着眼睛测试软件       
    软件测试读书笔记之检查代码       
    软件测试读书笔记之带上X光眼镜检查软件       
    软件测试读书笔记之配置测试       


    读书笔记与心得之软件测试背景   
                             
    一.软件缺陷的正式定义:
    符合下边5个规则的才能叫做软件缺陷。
    1.软件未达到产品说明书标明的功能。
    2.软件出现了产品说明书指明不会出现的错误。
    3.软件功能超出产品说明书指明范围。
    4.软件未达到产品说明书虽未指出但应达到的目标。
    5.软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。

    二.软件缺陷的产生原因: 
    导致软件缺陷最大的原因是产品说明书;第二大来源是设计方案;三是代码;
    四是某些软件缺陷产生的条件被错误地认定。

    三.软件缺陷的修复费用:
    随时间增长,修复软件缺陷的费用是呈几何数级增长的,随时间推移,数十倍增长。

    四.软件测试人员的目的:
    软件测试远的目标就是发现软件缺陷,尽可能早一些,并确保其得以修复。

    五.怎么成为优秀测试员:
    1.探索精神
    2.故障排除能手
    3.不懈努力
    4.创造性
    5.追求完美
    6.判断准确
    7.老练稳重
    8.说服力
    9.除了这些素质,在软件编程方面受过的教育也是重要的。
    10.软件的功能为了解决现实问题,因此,教学烹饪航空木工医疗等知识都
    将对查找该领域软件的缺陷有莫大帮助

    读书笔记与心得之软件开发过程

    一.测试文挡包括:
    1.测试计划
    2.测试案例
    3.软件缺陷报告
    4.归纳,统计和总结。

    二.软件产品由哪些部分组成(都是要测的哦,当然我国许多软件都无法
    达到这么多部分~呵呵)
    1. 最终产品(光盘/软盘/程序...)
    2.帮助文件
    3.用户手册
    4.样本和示例
    5.标签和帖子
    6.产品支持信息
    7.图标和标志
    8.错误信息
    9.广告和宣传材料
    10.安装
    11.说明文件
    这些都是要测试的,书中尤其提到了不要忘了测试错误提示信息(错误提示信息
    是软件产品最容易忽视的部分,通常是有程序员而不是训练有素的稿手来写的。这
    些信息很少照顾到修复软件缺陷的需要,还常常造成麻烦。软件测试员
    也难以找到并显示全部信息。在软件中不要加入吓人和不友好的错误提示信息。)

    三.软件开发模式
    1.大棒式:所有精力都在开发软件和编写代码上
    2.边写边改式:没有时间做好,总有时间返工哈哈!这句话经典,测试者几乎每天都
    拿到一个新版本,新版本出来的时候,旧版本还没测完!而新版本还包含新的或者经过修改的功能)
    3.流水式:创意-分析-设计-开发-测试-最终产品,只许前进不能后退!
    4.螺旋式:开始不必详细定义所有细节。从小开始,定义重要功能,努力实现,接受
    客户反馈,然后进入下一阶段。(一个螺旋包括6个步骤:1.确定目标,可选方案和限
    制条件;2.指出并解决风险;3.评估方案;4.本阶段开发和测试;5.计划下一阶段;
    6.确定进入下一阶段的方法。 )测试一直在进行,知道最后宣布成功!


    读书笔记与心得之软件测试的实质

    一.测试人员要知道的几个‘交通规则’和‘生活法则’~
    1.完全测试是不可能的。A.输入量太大;B.输出结果太多;C.软件实现途径太多;
    D.软件说明书没有客观标准。从不同角度看,软件缺陷标准不同。
    2.软件测试是有风险行为。
    3.测试无法显示潜伏的软件缺陷。
    4.找到的软件缺陷越多,就说明软件缺陷越多。
    5.老用一种药,害虫都有抵抗力,程序也如此,如在螺旋开发模式中,每一个轮回都
    会对软件进行测试,几回合后,该发现的都发现了,找不到什么错误了。这要求我们必
    须不断编写不同的新测试程序,对程序的不同部分进行测试,以找到更多的缺陷。
    6.并非所有的软件缺陷都能修复:A.没有足够的时间;B.不算真正的缺陷;
    C.修复风险太大;D.不值得修复
    7.难以说清的软件缺陷
    8.产品说明书不断变化:软件测试员必须想到产品说明书可能改变。
    9.测试员做的工作不受欢迎,因为工作就是挑错!所以我们要懂得怎么和开发的相处:
    A.早点找出缺陷;B.控制情绪;C.多交流,不要总是报告坏消息。
    10.软件测试是一项讲究条理的技术专业。

    二.软件测试的术语和定义
    这里引用下网上的术语总结,对原作者表示歉意和谢意和敬意!(不知道是谁)
    1.精确和准确:A.精确参照物是目标。与目标越接近,就越准确;B:准确参照物是
    每次实施的结果。几次结果相互之间越接近,表示越精确。但与目标可能相去甚远.
    2.验证和合法性检查:A.验证保证软件符合产品说明书的过程 B.合法性检查保证软
    件满足用户要求的过程.
    3.质量和可靠性:可靠性只是质量的一个方面。A.质量可能包含功能是否齐全,产
    品能否在各种机器上运行,软件公司有没有技术支持,甚至包装盒的色彩,可靠性
    或者软件产品是否经常毁坏数据可能也很重要,但不绝对。B.可靠性:你自己想吧,
    我没找到定义哈哈~
    4.测试和质量评判(QA):A.软件测试员的目标是找出软件缺陷,尽可能造一些,
    确保得以修复;B.软件质量评判人员的主要指责是创建和加强促进软件开发并防止
    软件缺陷的标准和方法

    第二部分 测试基础
    读书笔记与心得之四检查产品说明书

    一.开始测试
    1.A:黑盒测试:软件测试员只需知道软件要做什么,无法看到如何运作。只进行输入操作来得到输入结果。
      B:白盒测试:软件测试员可以访问程序员的代码,并通过检查代码来协助测试。
    2.A:静态测试:测试不运行的部分—只是检查和审阅。
      B:动态测试:指通常意义上的测试—运行和使用软件。
    3.测试产品说明书属于静态黑盒测试。

    二.对产品说明书进行高级审查
        测试产品说明书第一步不是去找软件缺陷,而是在一个高度上审视。审查产品说明书是为了找出根本性大问题,疏忽或遗漏之处。
    1.占在客户角度思考:设身处地的为客户着想,测试的时候把自己当成客户。
    2.研究现有的标准和规范:软件测试员的任务不是定义润件要符合何种标准和规范,而是观察,检验是否套用正确的标准,没有遗漏。
    3.审查和测试同类软件:同类软件有助于制订测试条件和测试方法,还可能暴露没想到的潜在问题。

    三.产品说明书的低级测试技术
    1.优秀产品说明书应当具有的8个属性
    A.完整。是否有遗漏和丢失?完全吗?单独使用是否包含全部内容?
    B.准确。解决方案正确吗?目标明确吗?有没有错误?
    C.精确、不含糊、清晰。描述是否一清二楚?还是自说自话? 容易看懂和理解吗?
    D.一致。产品功能描述是否自相矛盾?与其他功能有无冲突?
    E.贴切。描述功能的陈述是否必要?有没有多余信息?功能是否原来的客户要求?
    F.合理。在特定预算和进度下,以现有人力、物力和资源能否实现?
    G.代码无关。是否坚持定义产品,而不是定义其所依赖的设计、架 构和代码?
    H.可测试。特性能否测试?测试员建立验证操作的测试错误程序是否提供足够的信息?

    2.产品说明书7个用语检查清单
    A.总是、每一种、所有、没有、从不。
    看到此类绝对或肯定的切实认定的叙述,可以着手设计针锋相对的案例。
    B.当然、因此、明显、显然、必然。
    这些话意图诱使接受假定情况。不要中了圈套。
    C.某些、有时、常常、通常、经常、大多、几乎。
    这些话太过模糊。“有时”发生作用的功能无法测试
    D.等等、诸如此类、依此类推。
    以这样的词结束的功能清单无法测试。功能清单要绝对或者解释明确。
    E.良好、迅速、廉价、高效、稳定。
    这些是不确定的说法,不可测试。如果在产品说明书出现,必须要求进一步指明含义。
    F.已处理、已拒绝、已忽略、已消除。
    这些说法可能会隐藏大量需要说明的功能。
    G.如果...那么...(没有否则)。
    缺少配套的否则,想一想,“如果”没有发生会怎样呢?


    读书笔记与心得之闭着眼睛测试软件

    一.动态黑盒测试
        1.不深入代码细节的软件测试方法称为动态黑盒子测试。它是动态的,因为程序正在运行;它是黑盒子,因为测试时不知道程序如何工作。测试工作就是进行输入,接受输出,检验结果。
        2.首先要弄清楚作为测试对象的软件要输入什么得到什么,或者操作结果。这就要求有文挡或产品说明书;接下来开始定义测试案例(就是我们常说的测试用例)
        3.选择测试案例是软件测试员最重要的任务。不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。准确评估风险,把不可穷近的可能性减少到可以控制的范围是成功的诀窍。
        *4.没有产品说明书的情况下使用探索测试。(这个我觉得很重要,因为国内大部分软件都是这样的,因为国内大部分软件都是这样的,什么说明都没有,没有需求说明,没有产品说明书,没有设计书......呵呵,这就是有中国特色的软件测试吧~~,遇到这种情况不要烦躁,"把软件当成产品说明书来对待。分步骤地逐项探索软件特性。记录软件执行情况,详细描述功能。在这种情况下,无法像有产品说明书那样完整的测试软件--比如无法断定是否遗漏功能,但是可以进行系统测试。找到软件缺陷几乎是肯定的."  小雪经验总结:这种情况还要多和开发的沟通,在他们那了解软件更多的情况。他们自己写的,没有人比他们知道的多.这种测试会遇到很多你认为逻辑不合理的地方,因为没有需求说明,开发的完全照自己的意思来编写代码.有的是多人编写,每人负责一个模块,模块之间衔接和整个软件的业务逻辑多会有许多问题.

    二.通过测试和失败测试

    通过测试:确认软件至少能做什么,而不考验其能力。只运用最简单,最直观的测试案例。
    失败测试:纯粹为了破坏软件而设计和执行的测试案例。
        设计和执行测试案例时,总是首先进行通过测试。在破坏性试验之前看看软件基本功能是否实现是很重要的,否则在正常使用软件时就会奇怪为什么有那么多的软件缺陷。常见的测试案例就是设法迫使软件出现错误提示信息。

    三.等价分配
    等价分配(等价类划分):是指分步骤地把过多(无限)的测试案例减小到同样有效的小范围的过程。
        等价类别或者等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试案例。在寻找等价区间时,想办法把软件的相似输入、输出、操作分成组。这些组就是等价区间。等价分配的目标是把可能的测试案例组合缩减到仍然足以测试软件的控制范围。因为选择了不完全测试,就要冒一定的风险。如果为了减少测试案例的数量过度进行等价分配,测试的风险就会增加。另外,等价区间的划分没有一定的标准,只要足以覆盖测试对象就行了。

    (个人认为这里讲的不是很好,在笔记前我就说了,本书测试用例设计方法上做的不是很好,有关知识大家上网看吧,写的很详细,推荐一个风姿清扬整理的测试用例设计方法~。以后遇到相关测试用例设计的问题我都引用一些比较流行的通俗的知识或者直接省去了`。 我们设计用例数据的时候按照等价类划分方法:

    等价类分为有效等价类和无效等价类,有效等价类就是由那些对程序的规格说明有意义的、合理的输入数据所构成的集合;无效等价类就是那些对程序的规格说明不合理的或无意义的输入数据所构成的集合。
    划分等价类的方法:下面给出六条确定等价类的原则。
    1、在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
    2、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。
    3、在输入条件是一个布尔量的情况下,可确定一个有效等价类。
    4、在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
    5、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
    6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。)

    四.数据测试

        软件由数据和程序组成。数据包括键盘输入、鼠标单击、磁盘文件、打印输出等等;程序指可执行的流程、转换、逻辑和运算。

        对数据进行软件测试,就是在检查用户输入的信息、返回结果以及中间计算结果是否正确。主要根据下列原则来进行等价分配,以合理减少测试案例:边界条件,次边界条件,空值和无效数据。

       (个人认为书里介绍边界值这块不是很好,新手还是看下面的吧,流行的比较经典的是边界值分析法:
    上点,就是边界上的点,不管它是开区间还是闭区间,就是说,如果该点是封闭的,那上点就在域范围内,如果该点是开放的,那上点就在域范围外;
    内点,就是在域范围内的任意一个点;
    离点,就是离上点最近的一个点,如果边界是封闭的,那离点就是域范围外离上点最近的点,如果边界是开放的,那离点就是域范围内离上点最近的点。
    边界值分析方法的原则:
    1、如果输入(输出)条件规定了取值范围,则应该以该范围的边界值及边界附近的值作为测试数据;
    2、如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;
    3、如果程序规格说明书中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试数据;
    4、如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据。)

    五.状态测试。

        软件状态是指软件当前所处的情况或者模式。软件通过代码进入某一个流程分支,触发一些数据位,设置某些变量,读取某些变量,而转入一个新的状态。软件测试员必须测试软件的状态及其转换。
    1.测试软件的逻辑流程。状态测试运用等价分配技术选择状态和分支。因为选择不完全测试,所以要承担一定的风险,但是通过合理选择会减少危险。

    2.建立状态转换图。包括的内容有:
    A.软件可能进入的每一种独立状态;
    B.如果不能断定是否为独立状态,就算它是,以后发现不是,随时把它T开;
    C.从一种状态转入另一种状态所需的输入和条件。找出什么操作导致的变化;
    D.进入或退出某种状态时的设置条件及输出结果。包括显示的菜单和按钮、设置的标志位、产生的打印输出、执行的运算等等。这些是状态转换时发生的部分或全部现象。

    3.减少要测试的状态及转换的数量。
    A.每种状态至少访问一次;
    B.测试看起来最常见最普遍的状态转换;
    C.测试状态之间最不常用的分支。
    D.测试所有错误状态及其返回值;
    E.测试随机状态转换。
    4.具体测试的进行。确定要测试的状态及其转换之后,就可以定义测试案例了。测试状态及其转换包括检查所有的状态变量——与进入和退出状态相关的静态条件、信息、值、功能等等。状态变量也许不可见,但是很重要。

    (建议看因果图法写测试用例呵呵)


    六.失败状态测试

    1.竞争条件和时序错乱:在真正的多任务环境中软件设计绝对不能想当然,必须处理随时被中断的情况,能够与其他任何软件在系统中同时运行,并且共享内存、磁盘、通信设备以及其他硬件资源。这一切的的结果就可能导致竞争条件问题.这些问题的几个事件恰好挤在一起,软件未预料到的操作过程被中断,时序就会发生错乱。竞争条件测试难以设计,最好是首先仔细查看状态转换图中的每一个状态,以找出哪些外部影响会中断该状态。考虑要使用数据如果没有准备好,或者在用到时发生了变化,状态会怎样。数条弧线或者直线同时相连的情形如何。
    下是要面临竞争条件的典型情形:
    A.两个不同的程序同时保存或打开同一个文档。
    B.共享同一台打印机、通信端口或者其他外围设备。
    C.当软件处于读取或者修改状态时按键或者单击鼠标。
    D.同时关闭或者启动软件的多个实例。
    E.同时使用不同的程序方位一个共同数据库。

    2.重复、压迫和重负
    测试的目标是处理那些连程序员都没有想到的恶劣条件下产生的问题的能力。
    A.重复测试是不断执行同样的操作。最简单的是不停地启动和关闭程序,或者反复读写数据或者选择同一个操作。这种测试的主要目的是看内存是否不足。如果内存被分配进行某项操作,但操作完成时没有完全释放,就会产生一个常见的软件问题。
    B.压迫测试是使软件在不够理想的条件下运行——内存小、磁盘空间少、CPU速度慢、调制解调器速率低等等。观察软件对外部资源的要求和依赖程度。压迫测试就是将支持降到最低限度,目的在于尽可能的限制软件的必要条件。
    C.重负测试和压迫测试相反。压迫测试是尽量限制软件,而重负测试是尽量提供条件任其发挥。让软件处理尽可能大的数据文件。最大限度的发掘软件的能力,让它不堪重负。比如:软件对打印机或通信端口进行操作,就把能连的都连上;服务器可以处理几千个模拟连接,就按他说的做。
    三者应联合使用,同时进行。
    注意事项:      
    A.项目管理员和小组程序员可能不完全接受软件测试员这样打破软件的做法。但是软件测试员的任务就是确保软件在这样恶劣的条件下正常工作,否则就报告软件缺陷。如何以最佳方式报告软件缺陷,使其得到严肃对待和修复,也是一门学问。
    B.无数次重复和上千次的连接对于手工操作是不可能的。因而需要借助自动化测试工具来实现。

    七.其他黑盒测试技术
    1.像新用户那样做,随意操作.
    2.在已经找到软件缺陷的地方再找找(80%的缺陷通常集中在20%的模块)
    3.凭借经验、直觉和预感. (软件测试确实是越有经验越吃香啊!,像我们这样的只能好好学习,多多实践,多多积累,不断总结)

    呼! 这章怎么这么长啊!排版很乱,有时间再整理吧,对不起大家的眼睛了,再看看这章名字,闭着眼睛..呵呵,看的眼睛痛了就闭眼睛想一会吧,

    读书笔记与心得之检查代码

        软件测试不仅仅是检查产品说明书和闭着眼睛测试软件,还有对软

    件设计和代码进行测试。因为在测试军队,金融,工业,医药类软件或

    者在组织严格的开发模式下工作代码和产品检验是例行公事。

    一.静态白盒子测试:检查设计和代码
         静态测试是指测试非运行部分——检查和审查。白盒测试是指访

    问代码,能够查看和审查。静态白盒测试是在不执行的条件下有条理地

    仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。有时

    也称为结构分析。
         进行静态白盒子测试的首要原因就是尽早发现软件缺陷,以找出

    动态黑盒子测试难以揭示或遇到的软件缺陷;另一个好处是为接受该软

    件测试的黑盒测试员的测试案例提供思路,他们不必了解代码细节,但

    是根据审查备注,可以确定似乎有问题或者存在软件缺陷的特性范围。

    二.正式审查
        正式审查就是进行静态白盒子测试的过程。正式审查含义广泛,从

    程序员之间的交谈,到代码的严格检查均属于此过程。            

    有4个基本要素:
    1.确定问题。审查的目标是找出软件的问题,不仅是出错的项目,还包

    括遗漏的项目。全部的批评应直指代码,而不是其创建者。合作者不应

    该互相指责。个人情绪化感觉要保留。
    2.遵守规则。 审查要遵守一套固定的规则,规则可能设定要审查的代

    码量、花费多少时间、哪些内容要做备注等等。其重要性在于合作者了

    解自己的作用和目标,这有助于使审查进展的更加顺利。
    3. 准备。每个合作者需要了解自己的责任和义务,并积极参与审查。

    在审查过程中找出问题大部分的缺陷是在准备期间发现的,而不是实际

    审查期间。
    4.编写报告。审查小组必须做出总结审查结果的书面报告,并使报告便

    于开发小组使用。审查结果必须尽快告诉别人,比如发现多少问题,在

    哪发现的。

    正式审查有三种类型:
    1.同事审查:召集小组成员进行初次正式审查是最简单的方法就是同时

    审查。类似于“各抒己见”类型的讨论。常常仅在编写代码的程序员和

    充当审查者的其他一两个程序员和测试员之间进行;
    2.公开陈述:公开陈述是使同事审查正规化的下一步。编写代码的程序

    员像5人小组或其它类似的程序员或测试员正式表述。审查人员应该在

    审查之前接到软件拷贝,以便检查并编写备注和问题,在审查过程中提

    问。
    3.检验:检验是最正式的审查类型,具有高度组织化,要求每一个参与

    者都接受训练。检验与同事审查不同之处在于,表述代码的人不是原来

    的程序员。这就迫使他学习和了解要表述的材料,从而有可能在检验会

    议上提出不同的看法和解释。另外的参与者称为检验员,职责是从不同

    的角度(如用户、测试员或产品支持人员)的角度审查代码。检验会议

    后,检验员可能再次碰头讨论他们发现的不足之处,并与会议主席共同

    准备一份书面报告,明确解决问题所必须重做的工作。然后程序员进行

    修改,由会议验证修改结果,可能要要进行重新检验,以便找到其余的

    软件缺陷。

    三.编码标准和规范

    3个坚持标准和规范的重要原因:
    1.可靠性。事实证明按照按规范编写的代码更可靠,软件缺陷将更少。
    2.可读性/维护性。符合标准和规范的代码易于阅读,理解和维护。
    3.移植性。如果代码符合设备标准,迁移到另一个平台就会容易,甚至

    没有任何障碍。

    标准由4个主要部分组成:
    1.标题。描述标准包含的主题。
    2.标准(或规范)。描述标准(或规范)内容,解释哪些允许,哪些不

    允许。
    3.解释说明。给出标准背后的原因,让人理解这为什么是好的编程习惯
    4.示例。给出如何使用此种标准的简单程序示例,这不是必需的。
        但是,对软件进行正式审查时,测试和注解的对象仅限于错误和缺

    漏,而不管是否坚持标准或者规范!

    四.通用代码审查清单
    1.数据引用错误
    数据引用错误是指使用未经正确地初始化的变量、常量、数组、字符串或记录。
    A. 是否引用了未初始化的变量?
    B. 数组和字符串的下标是整数值吗?下标总是在数组和字符串大小范围之内吗?
    C.在检索操作或者应用数组下标时是否包含"丢掉一个"这样的潜在错误?
    D.是否在应该使用常量的地方使用了变量?
    E.变量是否被赋予不同类型的值?
    F.为引用的指针分配内存了吗?
    G.一个数据结构是否在多个函数或者子程序中引用,在每一个引用中明确定义结构了吗?
    2.数据声明错误
    数据声明错误是指不正确地声明或使用变量和常量。
    A.所有变量都赋予正确的长度、类型和存储类了吗?
    B. 变量是否在声明的同时进行了初始化?是否正确初始化并与其类型一致?
    C.变量有相似的名称吗?
    D.存在声明过、但从未引用或者只引用过一次的变量吗?
    E.在特定模块中所有变量都显式地声明了吗?
    3.计算错误
    计算错误是指基本的数学逻辑问题。
    A.计算中是否使用了不同数据类型的变量,如整数与浮点数相加?
    B.计算中是否使用了数据类型相同但字节长度不同的变量?
    C.计算时是否了解和考虑到编译器对类型或长度不一致的变量的转换规则?
    D.赋值的目的变量是否小于赋值表达式的值?
    E.在数值计算过程中是否可能出现溢出?
    F.除数或模是否可能为零?
    G.对于整型算术运算或某些计算,特别是除法的代码处理是否会丢失精度?
    H. 变量的值是否超过有意义的范围?
    I. 对于包含多个操作的表达式,求值次序是否混乱,运算优先级对吗?需要加括号使其清晰吗?
    4.比较错误
    小于、大于、等于、不等于、真、假、比较和判断错误很可能是边界条件问题。
    A.比较得正确吗?
    B.存在分数或者浮点数之间的比较吗?如果有,精度问题会影响比较吗?1.00000001和1.00000002极其接近,它们相等吗?
    C.每一个逻辑表达式都正确地表达了吗?逻辑计算如期进行了吗?求值次序有疑问吗?
    D.逻辑表达式的操作数是逻辑值吗?
    5.控制流程错误
    控制流程错误是指编程语言中循环等控制结构未按预期方式工作,通常由计算或者比较错误直接或间接造成。
    A.程序中的语句组是否对应?
    B.程序、模块、子程序和循环能否终止?如果不能,可以接受吗?
    C.可能存在永远不停的循环吗?
    D.循环可能从不执行吗?如果是这样,可能接受吗?
    E.对于多分支语句,索引变量能超出可能的分支数目吗?如果超出,该情况能正确处理吗?
    F.是否存在"丢掉一个"错误,导致意外进入循环?
    6.子程序参数错误
    子程序参数错误的来源是软件子程序不正确地传递数据。
    A.子程序接收的参数类型和大小与调用代码发送的匹配吗?次序正确吗?
    B.如果子程序有多个入口点,引用的参数是否与当前入口点没有关系?
    C.常量是否当作形参传递,意外在子程序中改动?
    D. 子程序是更改了仅作为输入值的参数?
    E.每一个参数的单位是否与相应的形参匹配?
    F.如果存在全局变量,在所有引用子程序中是否有相似的定义和属性?
    7.输入/输出错误
    输入/输出错误包括文件读取、接受键盘或鼠标输入以及向输出设备写入错误等。
    A.软件是否严格遵守外设读写数据的专用格式?
    C. 软件是否处理外设未连接、不可用、或者读写过程中存储空间占满等情况?
    D.软件以预期的方式处理预计的错误吗?
    E.检查错误提示信息的准确性、正确性、语法和拼写了吗?
    8.其他错误
    A.软件是否使用其他外语?是否处理扩展ASCII字符?是否需用统一编码取代ASCII?
    B. 软件是否需要移植到其他编译器?
    C.是否考虑了兼容性,以使软件能够运行于不同数量的可用内存、不同的内部硬件、不同的外设等?
    D.程序编译是否产生"警告"或者"提示"信息?这些信息通常指示语句有疑问。

    读书笔记与心得之带上X光眼镜检查软件

    一.动态白盒子测试

        用一句话来概括,动态白盒测试是指利用查看代码功能和实现方式得到的信息来确定哪些要测试,哪些不要测试,如何开展测试。动态白盒测试的另一个常用名称是结构化测试,因为软件测试员可以查看并使用代码的内部结构,从而设计和执行测试。
       动态白盒测试不仅仅是查看代码,还包括直接参数和控制软件。它包括四部分:
    1.直接测试底层功能、过程、子程序和库。即应用程序接口(API)
    2.以完整程序的方式从顶层测试软件,但是要根据对软件运行的了解调整测试案例。
    3.从软件获得读取变量和状态信息的访问权,以便确定测试与预期结果是否相符,同时,强制软件以正常测试难以实现的方式运行。
    4. 估算执行测试时“命中”的代码量和具体代码,然后调整测试,去掉多余的,补充遗漏的。


    二、动态白盒子测试和调试

        测试和调试是不同的。白盒测试的目标是寻找软件缺陷,调试的目的是修复它们。然而它们在隔离软件缺陷的位置和原因上确实存在交叉现象。测试员应该把问题缩减为能够演示软件缺陷的最简化测试案例。在白盒测试中,甚至要包含那些值得怀疑的代码行信息。进行调试的程序员从这里继续,判断到底是什么导致的软件缺陷,并设法修复。
        一定要分清软件测试员和程序员的工作。程序员编写代码,测试员寻找软件缺陷,可能还要编写一些代码来驱动测试,然后程序员修复软件缺陷。要进行这样的底层测试,就要使用与程序员相同的工具。如果程序已经编译过,就要使用同样的编辑器,但是采用不同的设置,以加强错误检测功能。

        软件测试员可能会使用代码级的调试器来单步跟踪程序,观察变量,设置断点,等等。对于要求合法性检查的独立代码模块,还有编写测试程序进行测试。


    三.分段测试

    从测试的角度看,产生高额费用有两个原因:
    A.难以甚至不可能找出导致问题的原因
    B.某些软件缺陷掩盖了其他软件缺陷。

    1.单元和集成测试
        独立代码段分别建立和测试,然后集成并重新测试。以最小模块为单位的测试叫单元测试或者模块测试。等到经过单元测试,底层的软件缺陷被找出并修复之后,就集成在一起,对模块组进行集成测试。这个不断增加的测试过程继续进行,加入的软件片段逐渐增多,直至整个产品-至少是产品的主要部分--在称为系统测试的过程中一起测试。
      
        采取这种测试策略很容易隔离软件缺陷。在单元级发现问题时,问题肯定就在那个单元中。如果多个单元集成发现软件缺陷,那么它一定与模块之间的交互有关。当然这个也有例外。

    这种递增测试有两种方法:
    A.自底向上:要编写测试驱动模块,测试驱动模块以将来真正模块同样的方式挂接,向处于测试的模块发送测试案例数据,接受返回结果,验证结果是否正确。采取这种方式,可以对整个软件进行测试,为它提供全部类型和数量的数据,甚至高层难以发送的数据。
    B.自顶向下:有点像小规模的大棒测试,先测试高层的软件,然后测试它们下一层的。

    注意:在进行白盒子测试之前,一定要根据说明书建立黑盒子测试案例。用这种方式可以看出真正测试模块的用意。如果先从模块的白盒子角度建立测试案例,检查代码,就会偏向模块工作方式建立测试案例。程序员或许错误地解释说明,于是测试案例会不对。虽然仔细测试了模块,但是可能不准确,因为没有测试预期的操作。

    四.数据覆盖

        看了下笔记,发现很乱,取精华,去糟粕,为了不继续误‘倒’大家,我把网上流行的经典白盒测试用例设计方法COPY过来~

    白盒测试的方法:总体上分为静态方法和动态方法两大类。

        静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

      动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后 , 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。
    1.语句覆盖:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。
    2.判定覆盖:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。
    3.条件覆盖:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。
    4.判定/条件覆盖:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。
    5.条件组合覆盖:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。
    6.路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径。
    (具体例子请看我写的测试试卷一答案整理的大题和白盒子测试方法举例)
         总结:白盒测试是一种被广泛使用的逻辑测试方法,是由程序内部逻辑驱动的一种单元测试方法。只有对程序内部十分了解才能进行适度有效的白盒测试。但是贯穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件。因此我们不能穷举所有的逻辑路径,即使穷举也未必会带来好运(穷举不能查出程序逻辑规则错误,不能查出数据相关错误,不能查出程序遗漏的路径)。
      那么正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。


    (原书是数据范围,代码范围,条件范围......看来作者真不是专业测试人员啊,书中有些术语翻译的不是很好,由于本人水平有限,没能都改正,建议英语好的人还是看英文版本的,不太好的用此笔记做辅助看,我相信效果会好一点。很抱歉,我还没看英文的呢,打算先把笔记写完再看英文的,先误‘倒’一下新手哈哈~ 在次希望大家指正错误,我会及时改的!谢谢~)


    读书笔记与心得之配置测试


    一.        配置综述

    如果刚准备开始从事软件测试工作,首先的一个任务是配置测试。要保证测试的软件使用尽量多样化的硬件组合。配置测试是指使用各种硬件来测试软件操作的过程。
        我们常用有如下配置:个人计算机;部件;外设;接口;可选项和内存;设备驱动程序。
        如果准备开始进行软件的配置测试,就要考虑哪些配置与程序的关系最密切。这是必不可少的,因为并不是所有的生产硬件的商家都遵照一套标准来设计硬件。

    1.分离配置缺陷
    判断缺陷是配置问题还是普通缺陷的方法:在另一台配置完全不同的机器上执行相同
    的操作。如果缺陷没产生,那就很可能是配置问题了,如果缺陷在多种配置中产生,应该是普通的缺陷(BUG)
    判断缺陷是开发程序的问题还是硬件的问题,要找出问题所在:
    (1)软件可能包含在多种配置中都会出现的缺陷。
    (2)软件可能包含只在某一个特殊配置中出现的缺陷。
    (3)硬件设备或者其设备驱动程序可能包含仅由软件揭示的缺陷。
    (4)硬件设备或者其设备驱动程序可能包含一个借助许多其它软件才能看到的缺陷- 尽管它可能对测试的软件特别明显。  
    前两种情况,由开发小组负责修复缺陷。后两种情况,责任不太清晰。但是即使是硬件的问题,都是开发小组的责任,因为客户不关缺陷是怎么产生的,他们只要求在自己的系统配置中能正常运行。

    2. 计算工作量
        配置测试工作量可能非常大,我们不可能把会出现的配置都测试。减少麻烦的答案是等价类划分。需要找出一个方法把巨大的配置可能性减少的尽可能控制的范围。由于没有完全测试,因此存在一定的风险,但这正式软件测试的特点!

    二.执行任务

    确定测试哪些设备和如何测试的决定过程是相当直观的等价类划分工作。什么重要,怎样才会成功,是决定的内容。计划配置测试时采用的一般过程如下:
    1.确定所需的硬件类型
    2.确定哪些硬件,型号和驱动程序可用
    3.确定可能的硬件特性,模式和选项
    4.将确定后的硬件配置缩减为可控制的范围
    5.明确使用硬件配置的软件唯一特性
    6.设计在每一种配置中执行的测试用例
    7.在每种配置中执行测试
    8.反复测试直到小组对结果满意为止

    三.获得硬件

    即使把要配置的硬件可能性用等价类划分到最低限度,仍然需要N多硬件的,没那么多钱怎么办?
    (1)只买可以或者将会经常使用的配置。
    (2)与硬件生产商联系,看能否租借甚至白送
    (3)问公司内部人有什么硬件,是否允许进行测试。为了完成配置测试,甚至要开车到乡下,但这仍然比买要便宜多了
    1.明确硬件标准
    大概意思就是了解硬件说明书的一些细节,有助于做出更多清晰的等价划分决定。
    2.对其他硬件进行配置测试
    根据从设备使用者,项目经理或者销售人员的输入建立硬件的等价区间,写测试用例,收集所选硬件,执行测试。

        总结:进行配置测试是软件测试新手经常被分配到的任务,因为它容易定义;是基本组织技巧和等价分配技术的敲门砖;是与其它项目小组成员合作的任务;是管理员快速验证结果的手段。

    读书笔记与心得之兼容性测试

    一.        容性测试综述
    软件兼容性测试是指检查软件之间是否正确地进行交互和共享信息。
    测试软件兼任性,要先对需求进行确定:
    1.软件设计要求什么样的平台(系统,浏览器或操作环境等)与应用软件保持兼容?如果要测试的软件是一个平,那么设计要求什么应用程序在其上运行?
    2.应该遵守何种定义软件之间交互的标准或者规范?
    3.软件使用何种数据与其他平台和软件交互和共享信息?

    二.平台和应用程序版本
       选择平台或者兼容的应用程序是程序管理或者市场定位的任务。软件设计用于某个操作系统,WEB,浏览器或者其他平台要由熟悉客户情况的人来决定,他们还要明确软件需要兼容的版本。

    1.向前兼容和向后兼容:
    向前兼容是指可以使用软件的以前版本。向后兼容是指可以使用软件的未来版本。
    并非所有的如软件都要求向前或向后兼容。

    2.测试多个版本的影响:
    测试平台和软件应用程序多个版本相互之间是否正常工作可能是一个艰巨的任务!假设测试一个新的操作系统版本,旧版操作系统上可能有上百万的程序,新操作系统的目标是与它们100%兼容,这是一个很大的任务,我们很难一个个的去试!
    只能运用以前学过的等价类分配法,划下等级类以减少工作。(在开始兼容性测试之前,要对所有的软件组合等价分配,使其成为验证软件之间正确交互的最小有效集合)
    由于不可能在系统上测试成千上万的软件,所以要决定哪些是重要的,挑重要的来测试。决定的原则如下:
    1.        流行程度。选择钱100或者前1000流行的软件
    2.        年头。选择3年以内的程序和版本,不要把老古董拿出来哈。
    3.        类型。这个其实算等价划分里的,把软件按用途分为画图,财务,数据库等等,每种类型选个代表。
    4.        生产厂商。根据软件制作的公司来选。
    这些没有标准答案的,看情况而定吧。

    三.标准和规范
    1.高级标准和规范
    产品普遍遵守的规章,例如外观和支持性等等。
    2.低级标准和规范
    本质细节,例如文件格式或网络通信协议等等。

    四.数据共享和兼容性
        
       在应用程序之间共享数据实际上是增强软件的功能。写得好的程序支持并遵守公开标准;允许用户与其他软件轻松传输数据,这样的程序是兼容性极好的产品。
       最为人熟知的数据传输方式—读写磁盘文件的例子:严格遵守磁盘和文件格式的低级标准是此类共享的前提。其他方式有时被想当然地接受,也要做兼容性测试。下面是些例子:
    5.        文件保存和文件读取。把数据存入软盘(或其他介质),然后放到不同系统的计算机上。文件的数据格式要符合标准,才能在两台计算机上都正常。
    6.        文件导出和文件导入是许多程序与自身以前版本及其他程序保持兼容的方式。为了测试文件导入特性,需要以各种兼容文件格式创建多个文档—可能要利用源程序存为该格式。这些文档需要等价分配为可能的文件和格式,用于检查导入代码是否正确转换为新格式。
    7.        剪切,复制和粘贴是程序间无需借助磁盘传输最常见的数据共享方式。在这种情况下,传输在内存中通过成为剪切板的即时程序实现。
    8.        DDE和OLE是Windows中在两个程序之间传输数据的方式。DDE表示动态数据交换,OLE表示对象潜入链接。其他平台也支持此方法。

    五.总结
       新手也可能接受到兼容性的测试任务,不要着急,按下面三步骤:
    1.        对所有可能的兼容软件进行等价分类,使其成为可以控制的范围。当然,项目经理要认可测试清单,并接受由于未完全测试而引起的风险。
    2.        研究适用于测试软件的高级/低级标准和规范。把他们当作产品说明书的补充内容。
    3.        测试软件程序之间不同的数据流动方式。其中的数据交换就是程序之间保持兼容的因素。

    读书笔记与心得之测试文档
        (这一章节内容与原书相比改动很大,加了许多我说的话)
    文挡是软件产品中的非软件部分,在很多公司中这部分的测试经常被忽略。然而文挡测试也是测试人员职责所在,软件产品中的文挡对客户来说和软件的功能是一样重要的,他们可能经常查看和使用,如果文挡出现错误很可能会误导客户,比如安装说册错误,客户按其所示就无法正常安装,操作手册有错误就会让客户操作失败,不正确的错误提示可能把客户领进死胡同,所以说测试文挡是十分必要的。好文挡可以提高软件的易用性,可靠性,更能因为文挡中的引导和解释帮助用户克服操作困难,从而降低他们请求公司支持的几率,这样就节省了开发公司的支持费用。

      在有中国特色的软件开发中,许多像操作手册,帮助文挡之类的文挡都是测试人员编写的,自己对自己写的东西有信心就不测试了是不负责任的做法,可是对自己写的东西测试又很容易被自己的思维所影响,所以最好不测试自己写的文挡,而是测试人员之间相互测试一下比较妥善。

           以前我只浅显的认为文挡只是帮助手册,安装指导,操作手册,可事实并不是我所想的那么简单, 什么是软件中的文挡部分呢?
        1.用户手册:这似乎是必须的了,即使有联机帮助也少不了一份用户的入门手册了。
        2.安装和设置指导。
        3.联机帮助。
            4.错误提示信息:恍然大悟啊,这也算文挡的部分。
            5.包装文字和图形。
            6.市场宣传材料,广告以及其它插页。
            7.授权/注册登记表。
            8.最终用户许可协议
            9.标签和封条
           10.向导,指南:相当于助手的动作,用户可以提出问题,然后软件一步步的指引完成任务。
           11.样例,示例和模版

         (其实做项目和做产品是有很多区别的,比如做项目做出来的软件就没有联机帮助,没有宣传材料,没有注册页,甚至可能没有包装盒等等,
    这里把软件产品概念广义一下,即包括项目软件也包括产品软件,每一个软件不一定非要有上面的部分,但是可能会有:)
            如何进行文挡的测试呢?其实文挡的测试也分为动态的测试和静态的测试。
            静态的文挡测试主要是看:
            一看内容(自然包括图片了)是否完善齐全合理;
            二看语言是否表达正确准确以及明确;
            三看标记等是否正确,段落标点拼写和语法等等是否正确。
            四看文档的编写是否满足文档编写的目的。
           动态的文挡测试完全实际操作,跟随每个步骤,尝试每个示例,将执行结果与文挡描述做比较,索引的搜索结果是否正确,超级链接等跳转是否到正确页面。
           希望通过此文,让更多的人了解到文挡的测试重要性,然后在工作中认真的测试文挡。让我们共同努力,把在客户眼中和程序同等重要的文挡做的越来越好。

  • 测试部负责人职责

    2008-03-22 22:22:05


    1、制定部门测试工作流程,对测试流程进行过程改进
    2、测试资源管理
    3、组织(实施)测试培训
    4、负责测试部门和其他相关部门的协调工作
    5、测试人员绩效考核
    6、如果公司没有质量管理部,测试部门还要做一部分质量管理工作(如:制定公司项目管理流程及相关项目管理制度),QA和Test是不能割裂的,相符相程
    7、对测试项目进行监控,对测试质量负责
    8、测试工作总结,汇报