发布新日志

  • 史上最全的测试用例设计方法总结(边界值分析)

    千里 发布于 2008-05-08 15:27:44

    边界值分析方法:

    .方法简介
    1.定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。 

    2.与等价划分的区别
      1)
    边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
      2)
    边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

    3.边界值分析方法的考虑:
     
    长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
     
    使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

    4.常见的边界值
      1)
    16-bit 的整数而言 32767 -32768 是边界
      2)
    屏幕上光标在最左上、最右下位置
      3)
    报表的第一行和最后一行
      4)
    数组元素的第一个和最后一个
      5)
    循环的第 0 次、第 1 次和倒数第 2 次、最后一次

    5.边界值分析
      1)
    边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。
       
    例:测试计算平方根的函数
            --
    输入:实数
            --
    输出:实数
            --
    规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息"平方根非法-输入值小于0"并返回0;库函数Print-Line可以用来输出错误信息。
           
      2)
    等价类划分:
        I.
    可以考虑作出如下划分:
          a
    、输入 (i)<0 (ii)>=0
          b
    、输出 (a)>=0 (b) Error
        II.
    测试用例有两个:
          a
    、输入4,输出2。对应于 (ii) (a)
          b
    、输入-10,输出0和错误提示。对应于 (i) (b)

      3)边界值分析:
       
    划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:
        a
    、输入 {最小负实数}
        b
    、输入 {绝对值很小的负数}
        c
    、输入 0
        d
    、输入 {绝对值很小的正数}
        e
    、输入 {最大正实数}
       
      4)
    通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。
      5)
    相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、  最短/最长、 /满等情况下。
      6)
    利用边界值作为测试数据

    边界值

    测试用例的设计思路

    字符

    起始-1个字符/结束+1个字符

    假设一个文本输入区域允许输入1个到255 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。

    数值

    最小值-1/最大值+1

    假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。

    空间

    小于空余空间一点/大于满空间一点

    例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。

    7)内部边界值分析:
       
    在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。
       
    内部边界值条件主要有下面几种:
        a)
    数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。

    范围或值

    位(bit

    0或者1

    字节(byte

    0——225

    字(word

    0~65535(单字)或 0~4294967295(双字)

    千(K

    1024

    兆(M

    1048576

    吉(G

    1073741824

    b)字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCIIUnicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。

    字符

    ASCII码值

    字符

    ASCII码值

    (null)

    0

    A

    65

    空格 (space)

    32

    a

    97

    斜杠 ( / )

    47

    Z

    90

    0

    48

    z

    122

    冒号 ( : )

    58

    单引号 ( ‘ )

    96

    @

    64

     

     

    c)其它边界值检验
       
    6.
    基于边界值分析方法选择测试用例的原则
      1)
    如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
       
    例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……"。作为测试用例,我们应取1050,还应取10.01,49.99,9.9950.01等。
      2)
    如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
       
    比如,一个输入文件应包括1~255个记录,则测试用例可取1255,还应取0256等。
      3)
    将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。
       
    例如,某程序的规格说明要求计算出"每月保险金扣除额为01165.25",其测试用例可取0.001165.24、还可取一0.01116526等。
       
    再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括14,还应包括05等。
      4)
    如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
      5)
    如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
      6)
    分析规格说明,找出其它可能的边界条件。

    .实战演习
    1.现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

    标题:这一组只有一个记录,其内容为输出成绩报告的名字。
     
    试卷各题标准答案记录:每个记录均在第80个字符处标以数字"2"。该组的第一个记录的第1至第3个字符为题目编号(取值为1999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3……个记录相应为第51至第100,第101至第150题的答案。
     
    每个学生的答卷描述:该组中每个记录的第80个字符均为数字"3"。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3……纪录分别给出他的第51至第100,第101至第150……题的解答。然后是学生乙的答卷记录。
     
    学生人数不超过200,试题数不超过999
     
    程序的输出有4个报告:
        a)
    按学号排列的成绩单,列出每个学生的成绩、名次。
        b)
    按学生成绩排序的成绩单。
        c)
    平均分数及标准偏差的报告。
        d)
    试题分析报告。按试题号排序,列出各题学生答对的百分比。
     
    解答:分别考虑输入条件和输出条件,以及边界条件。给出下表所示的输入条件及相应的测试用例。

     
     
    输出条件及相应的测试用例表。

     
     
    2.
    三角形问题的边界值分析测试用例
    在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1, 100]

    3.NextDate函数的边界值分析测试用例
    NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤121≤day≤31,并设定变量year的取值范围为1912≤year≤2050

    (本文节选自开拖拉机上班《史上最全的测试用例设计方法总结》)

  • 笔试面试必备

    charmer 发布于 2008-06-14 16:54:08

    笔试面试必备(摘自网络)
     

    虽然还是不够全面,但是还是可以用来对付一些基本笔试面试的。

    一.基本数据类型(WINDOWS32位机下)

    Char 1个字节
    Short 2
    Int   4
    Long 4
    Float 4
    Double 8
    Long double 10
    指针: 32位机. 4个字节.
    浮点数双精度的比较;
       Float f;
       判断F是否为0
          If( f>=-0.00001&&f<=0.00001){ =0} else {!=0};
    ------------------------------------------------------------------------------
    -----------------------------------
    二.修饰保留字.
    Const:
    Const char*p//p 指向的内容不能被修改
    Char const *p; // p指针不能修改
    Const type fun(); // 返回值类型为一个const type类型,不能修改
    Fun( const char *p); fun( const A &a) //保护指针,引用传递的值不被修改.
    类成员函数:中 fun() const; //表明FUN不能修改成员变量,不调用非const 成员函数.


    Volatile:

    修饰变量时,确保变修改后保存在内存中,每次取数从内存中取.

    Static:

    静态变量: 保存于数据段中., 只初始化一次.
    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就
    是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同
    。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文
    件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作
    用域, 即只在定义该
    变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作
    用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中
    引起错误。
      从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了
    它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

      static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该
    说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文
    件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文
    件。

    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其
    他文件单元中被引用;作用域限于本文件!

      static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一
    次调用函数时依据上一次结果值进行改变;
    如: fun()
    {
    Static int m=0;
    M++;
    Cout<<m<<endl;
    }
         调用:
    Fun();
    Fun();
    输出: 1
           2

      static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个
    被调用中维持一份拷贝。作用域限于本文件

    ------------------------------------------------------------------------------
    ---------------------------------------
    三.内存使用:

    程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 即数据段)中,动态申请数
    据存在于( 堆)中。
       分配方式有三种,请记住:
    -1- 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局
    变量、常量,静态变量.
    -2- 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。
    -3- 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的
    内存。

    --------动态申请内存:---------------

    Malloc/free 与 new/delete 的区别;

    前者: 是C的库函数. 在C++中创建对像时,不会调用构造函数,FREE时也不会调用析构函数
    .
    后者: 是C++中运算符, 创建析构对象都会调用构造函数,与析构函数.

    注意:
          Free(p)或delete p后, P成为野指针, 并非为空, (P所指地址不变,只是所指内存已
    释放)
          两次释放P会出错.
          最好,释放后加个P=NULL. 空指针多次释放不会出错.
    ------------------------------------------------------------------------------
    ---------------------------------------
    四.运算符:
    ++,--操作:
          A++ :   A加一后, 表达式返回A加一前的附本,(非左值)
          ++A:    A加一后,表达式返回加一后的A.(左值)

    位运算.
         使用异或交换数据: 交换A与B的值
                           A^=B;        即: A=A^B;
                           B^=A;           B=B^A;
                           A^=B;           A=A^B;
    ------------------------------------------------------------------------------
    ---------------------------------------
    五.语句:
           For(A;B;C)   C语句是在每次循环后才执行.
           如: y=10;
    for( i=0;i<10;y=++i)
    {
       Cout<<y<<endl;// 第一次输出是10.
    }
         循环语句设计:

                 尽量小循环放外面,大循环放里面.-----原因减少循环之间的切换.

    ------------------------------------------------------------------------------
    ---------------------------------------
    六.函数设计:
    参数传递选择--------
       作为输入参数的,应该用CONST作保护 如:strcpy(char*str1,const char*str2)
          要修改函数外面的变量时可用 :
                  1, 指针传递: 即把变量地址传入函数; 如: FUN( int**m);
                      调用时: int m=0;
                               FUN(&m);
                  2. 引用传递: FUN(int &m),调用时:int m=0; fun(m);
                  3. 如果只要修改一个外面的变量,也可以用返回值解决,但是多个的话就要
    用上面两种方法中的一种.
    内部变量:
           Static 变量;(注意);
            FUN()
             {
                Static int m=0;
                   ……..
             }
         其中M 只初始化一次. 每次调用FUN()后,都会在前一次调用的基础上进行修改M 值

    函数指针:
         如: void (*pFun)(int); 则pFun 为一个函数指,函数参数必须为一个INT参数.


                         调用:
                                pFun=FUN;
                                pFun(b); 或 (*pFun)(b); //一定要加个括号;
                  (主要用于回调函数设计)

                  另一种定义:
                     Typedef void (*pFun)(int a);
                     则pFun成为一个函数参数为一个INT的函数指针类型.
                     定义: pFun p=FUN;
       函数返回:
               不要返回栈内存指针;
                如: char* fun()
                      {
                           Char a[]=”kdkdk”;///栈中的一块内存
                           Return a;///返回栈中内存地址。
                      }
    (面向对象的函数设在后面);
    ------------------------------------------------------------------------------
    ----------------------------------------
    七.指针与数组;
         指针++,--;
                Int *p;
                 如果p++后,则P的值应该是增加4
                 指针的累加与它自己的类型有关.
         Char str[]=”akakak”;
    Strlen(str) 是求串的长度, 所以一定要小心那个’\0’结束符;
    Strcpy(str1,str2);, ///一定要小心’\0’

    ------------------------------------------------------------------------------
    ----------------------------------------
                         面向对象:
    一. 类
    默认四个函数: 无参数构造函数, 拷贝构造函数(浅拷贝), 赋值函数(浅), 析构函数.

    重写赋值函数时,注意要避免自赋值.(参考高质量C++,string类的编写)
    --------------------------------------------------------------------------
    函数重载: 同一区域内,函数名相同,参数列表不同.(略)---实现编译时多态

    函数覆盖: 在子类与父类之间. 由虚函数产生.--------------运行时多态
                Class A
                {
                   Virtual void fun(){}
                 };
                 Class B: public A
                 {
                      Void fun(){}
                 }
              则子类中的fun()覆盖了父类中的fun();

    函数隐藏: 在子类与父类之间, 不是虚函数,但是函数名相同,参数列表不一定相同.
               子类函数会隐藏父类的同名函数.
              Class A
              {
                   Void Fun 1();
                   Void Fun2();
               }
               Class b : pubic A
               {
                   Void Fun1();
                   Void Fun2(int);
               }
               则fun1,fun2都隐藏了父类的同名函数.

    基类指针与子类指针的使用:
           假设A为父类,B为子类;
    定义: B b;
           A*pA=&b;/// pA只能调用A类中的函数,和B中继承了A中的虚函数.
                    /// 但是不能调用,A中被覆盖的函数与B类中的其它函数.


           B*pB=&b;//// pB只能调用B类中的所有可访问函数,和A中继承下来的所有
    /////// 公有函数. 但是不能调用A中被B隐藏或覆盖的函数.
    --------------------------------------------------------
    带virtual 的析构函数:
          Class A
          {
               Virtual ~A(){   cout<<”in A”<<endl; }
          }
          Class B: public A
          {
               Virtual ~B(){ cout<<”in B”<<endl;}
          }
    定义:
         A*Pa=new B;
         Delete pa;
       输出:in A
             In B
    但是如果,A中的析构函数没有virtual, 则结果只是:in A
    原因: 不明!

    类中回调函数设计:
            使用友元函数,或 static 函数。
            原因:两者不存在this指针。
            如果要修改对象成员,则可以把对象指针或引用传入函数。
            如: static void fun(A*Pa),,,or   static void fun(A&a);
    面向对象函数设计:
          Void fun(A a) -----------------//出现临时对象
           {
               -----------其它代码;
               A aa;
               Return (aa);--------------//出现临时对象;
           }
    优化后:
          Void fun(A&a)
          {
               ---------其它代码
               RETURN (A());
          }

    类大小计算:
    空类,大小不为0;
    static成员变量,当sizeof()求类对象大小时,static变量不会计入其中。
    其它参考sizeof()专题
    解决头文件重复包含:
    1.#pragma once.
    2. ifndef/define/endif

    ------------------------------------------------------------------------------
    ----------------------------------------
    二.运算符重载。
           赋值: A& ōperator=(A&other) //返回引用。
                  {
                      避免自赋值;
                       ---------其它代码---------
                      Return *this;
                   }
            前++:A& operator++()///////自加后返回本身。返回值为引用。
                  {
                     This->value+=1;
                     Return *this;
                   }
             后++:A operator++(int)/////int 用于区另前加加,还是后加加。//值返回

                   {
                      A temp(*this);          /////自加后,返回一个自加前的附本。

                      *this->value+=1;
                      Return temp;
                    }
    非类成员函数++,定义(友元)
           A& operator++(A&a)//前加加
           A operator++(A&a,int)//后加加。
           函数实现同上。
    (其中减减的与++类似)

    多继承有待补充;?/???????


    模板


    ------------------------------------------------------------------------------
    ----------------------------------------
                                     数据结构与算法
    (最好这里能做到于老师的标准:看到题目就能写出算法)
    ---------------------------------------------------------------------
    链表操作:(不带头结点,书上的都是带头结点的)
    主要是不带头结点的操作,记住可能要修改头指针,所以注意函数参数与返回值设计。(
    细心);(华为面试)
    静态链表
    栈队列的使用:
              二叉树遍历,图遍历,非递归实现。(华为,三G门户面试);
    串操作:
              KMP算法(模式匹配) (深信服笔试);
    二叉树:
              三种遍历—递归与非递归。(华为面试);
              计算叶子数,计算结点数。(华为笔试,迅雷笔试);
              哈夫曼树--------(不知什么公司的面试题了);
    图:
           十字链表结构
           两种遍历---深度(非递归与递归),广度-----队列。
    查找:
           二分查找-----递归与非递归。(普信笔试)
            二叉排序树
           红黑树(了解,深信服面试)set ,map内部使用。
           B-,B+树,了解。
           键树-----用二叉对表示,键的匹配。
           哈希表------哈希函数编写,解决冲突的方法4个(深信服面试);
    内部排序:
            插入排序
            快排
            堆排序,堆操作。
            归并排序------------各种形式的归并(QQ笔试);
            基数排序。
            (记住各种排序的复杂度,最好会自己计算.)


    其它算法:
           Strcpy, strcmp, strcat, memcpy, string类的编写。

    最大公约数,最小公倍数,素数,PI计算。

           链表环判断,链表交点判断。找链表中间结点,链表反序。(华为面试)
           八皇后------深信服笔试,(一个朋友的QQ面试)

    STL:
          Vertor List set map, 使用与内部实现。
    ------------------------------------------------------------------------------
    ----------------------------------------

    --------------------系统编程(windows or unix)------------------------------

    (可以在windows 与UNIX中选择一个,如果两个都行就更好)

    多进程
    多线程
    进程/线程间同步与通信.-------这个也很重要.
           CriticalSection, mutex, event, semaphore.区别与使用
           Unix下不懂.
    网络编程-------select()与setsockopt(),多播,广播.问得最多.
             最好能写出所有常的SOCKET函数,和基本流程.

    TCP/IP协议, TCP, IP ,UDP 头的组成.各个控制位的作用.
    地址分类,子网,子网掩码,多播地址,广播地址,网络号,主机号.
    MFC下的 SendMessage()与PostMessage()区别.
    -----------------------------------------------------------------
    数据库:
            多个关系表设计,
            基本SQL语句的编写,嵌套查询,多表查询
    操作系统:
            P---V操作。生产者与消费者。用代码实现。(华为面试);
             (A一天生产3个饼,B一天生产4个饼,C一天吃10个,现有100个饼,用PV操作

                 编程,问多少天可以吃完)

        ------------------------项目----------------------------

    如果你没有项目,那你就把自己的课程设计也搬出来,不要怕别人笑你.千万不要说大话,什
    么东西我很牛B,面试官几句话可以试出你来.自己有料的地方一定要突出给他看.

    项目分析:
    系统功能-》整体架构-》自己负责的模块-》遇到的困难-》有待改进的地方-》存在的瓶颈
    ,与解决方案。
         (个人认为按上面的顺序分析项目,面试前一定要先自己对自己介绍下项目)


    ------------------------------面试细节-----------------------------------
    1---面试进门后,一定要向面试官问好,等面试官示意坐下时才坐下. 面试完后, 要道谢,
    如果对方和你握手,一定要站起来
       握手要有力,表达自己的诚意.(可以说:希望我有机会为公司效力…等等之类的话);

    2---当问及工资问题时,(书面形式写期望工资) 一定要说按公司薪水制度.
        原因: 刚从学校出对公司没有贡献,工资应该和贡献成正比,按公司的薪水制度比较合
    理.

    3-----描术自己的强项??弱点???职业目标??,性格??自我介绍??为什么要选择做这个职位
    /公司?? 用英语描术学校,家乡(华为面试)
       (最好中英文都会表达,一定要作好这些准备)
    4---你有什么问题要问吗????不要关涉工资和培训.,要表明自己加入公司的决心.
    (中大一学生的回答:是否进入公司就可以接手项目,个人觉得不错)

    6---越简单的题目越是考你的细心.所以要注意细节,小心再小心.

    7---说话要表现自我,千万不能说自己什么很了不起….绝不可说大话,错了就是错了,要承认.
       不会的,也要直接说不会(也可请教),会的就直接说出来.,不要吞吞吐吐,不要不懂装懂
    .
       如果面试官说自己错了,但自己发现不了,可以请教下面试官(能不能指点下我哪里错了
    ,我真看不出来),虑心学习,并改正.即使BS了,也要抵住压力,不要就起身走人,要请教面试
    官,错在哪,应该怎么做.??要顺着面试官的意思,不要与其争执.一定要抗压力,抵住.
    8—成绩问题:
           主要是针对和我一样成绩很差的同学。当面试官问到怎么你的成绩那么差。你一定
    要想到好的解围方法。他不是看不起你而是给你施加压力,看你在压力面前怎么样解决问
    题,能不能抵住压力。
    9---自信,一定要自信,但不是自认清高。
       

  • 李开复对年轻一代的勉励

    夏日冰凌 发布于 2009-09-07 17:39:57

    当我们自信不足时,内心的声音就会微弱,怕别人不接受、不认同自己,只好被别人的眼光、言语左右。首先,你必须培养自信。除了自信之外,如果想让自己做个更有魄力,更有想法的人,你可以试着用以下方法训练自己:
        1. 学习自我肯定——把别人的说三道四摆一旁,肯定自己是独一无二的,也拥有独一无二的生命经验和眼光。
        2. 争取机会表达自己的想法——要培养自己的见解、想法,做到有勇气将自己的思想大声地表达出来,需要一定的时间不断练习。用举手或其他肢体语言让他人知道你想发言。如果别人都在说话,你感觉插不进嘴,那就等别人呼吸时把握时机插进去。试着从“我有些另外的想法……”开始,不要让他人打断你,不要让他人不理会你的意见。如果你被打断,你可以理直气壮地说“请让我说完”;如果你说了这句话还没有被理会,重复这句话。
        3. 不要自动接受别人的看法——理解自己的原则,知道什么是不可放弃的。绝对不要同意不符合自己原则的事。你可以提出有建设性的、表示反对的意见,在尊重他人的前提下挑战他们的意见,从而表达你的看法;当然你也要倾听他人的意见,当别人正确的时候,诚恳地接受他人的意见。要知道:对于任何一件事,每一个人的观点和想法都可能不一样。
        4. 培养表达的技巧——多练习和对方目光接触,这会让你慢慢不那么胆怯,在别人眼里显得更有自信。讲话时少用那些拖泥带水的词,例如:也许、可能、会不会、如果、听说等等;多用那些有魄力的词,例如:我认为、我希望、我要求等等。
  • 职场秘籍: 上司希望你明白的24件事

    杯中水 发布于 2009-09-04 09:29:19

    在情商加油站看到的文章,感觉不错,在这里转一下给人力资源版块的网友分享,

    http://bbs.vsharing.com/Article.aspx?aid=854178

    职场秘籍: 上司希望你明白的24件事(中英文)

     

    职场秘籍:上司希望你明白的24件事
    1. Forget about excuses 不要寻找借口
      Forget rare exceptions no boss cares why an assignment wasn't done. It's your job to get it done and on time。
      上司都会关心为什么分配的工作没有完成,这很少有例外。因此及时完成工作是你的职责。
      2. Don't aim for perfection 不要苛求"完美"
      Getting it done well and on time is much more important than doing it "Perfectly"
      及时把工作做好比做得"完美"重要得多。
      3. Carrying your share is not enough 只做份内事是不够的
      Bosses value people who do their job and look around for, create or ask for more real work。
      上司看重那些不仅做份内事而且主动寻找、创造或要求更多实际工作的员工。
      4. Follow Through 自始至终完成工作
      Tie up the loose ends of your assignments. Don't wait to be reminded, particularly by a Supervisor。
      对分配给你的工作做到有始有终,不要等到别人特别是你的主管来提醒你。
      5. Anticipate Problems 预见到问题
      When your responsibilities depend on input from others, check their plans and their understanding of what you're requesting。
      当你的工作有赖于他人的参与时,要核对他们的计划并确认他们理解你的要求。
      6. Be Resilient About Problems 坚韧乐观地面对难题
      Part of carrying your responsibilities is understanding that unforeseeable failures by others are a routine part of work life. When problems occur, no one is picking on you and you can't excuse it as bad luck。
      发生别人无法预料到的失误是工作生涯中常见的事情。理解这一点就是你工作职责的一部分。当问题发生时, 没有人怪罪于你,你也不能以运气不好作为借口。
      7. Don't Take Problems to your boss 别把问题留给你的上司
      If you lack the authority, come prepared with solutions when you broach the problem. Even though your boss may not use your solutions, you've made an impression as a problem solver - not as a problem collector。
      如果你权力有限,在去见上司以前要准备好解决问题的方案。即使你的上司可能不采纳你的解决方案,也已经给他留下了这样的印象:你是解决问题而不是收集问题的人。
      8. Attendance counts 出满勤
      People quickly become aware of who makes an effort to be there and who uses any excuse to miss a day。
      从出勤情况可以很快看出,谁在努力工作,谁在寻找理由混日子。
      9. Don't be a squeaking wheel 不要难字当头,喋喋不休
      Don't be seen as " Here comes a problem"。
      不要让人见到你就觉得"又来了一个问题"。
      10.Don't carry grudges 不要嫉妒怀恨他人
      You cannot win them all. So don't squander your energy, the goodwill of your allies, and the patience of your boss by turning every issue into a crusade。
      你不可能胜过所有的人,因此不要把每个问题都变成争斗,这样就会浪费你的精力,丧失你同事的善意和你上司的耐心。
      11.Choose your battles carefully 慎重选择是否"开战"
      Ask yourself: how much difference the problem really makes. Is it worth making an enemy? Do I have a realistic chance of winning
      扪心自问:这个问题到底有多大的重要性?是否值得你为此树敌?我有切实的获胜机会吗?
      12.Deal directly with the person who makes the decision直接与决策者打交道
      Dealing with people with less authority may be easier on your nerves, but you'll be wasting time and effort。
      可能与职权较小的人打交道不会使你那么紧张,但这会浪费你的时间和精力。
      13. Keep control of problems 保持对问题的掌控
      Let's say you need some special work done. Don't stop with getting approval. If the other person doesn't follow through, you're left looking inept。
      比如说你需要完成某些特殊工作,不要因为还未得到批准而停下来不做。因为如果这样,尽管是别人不配合,你却已给人留下无能的印象。
      14. Learn to translate boss language 学会"翻译"上司的话语
      "If it's not too much trouble" means, "Do it, and the sooner the better"。
      "如果这不是太麻烦的话"的意思是"做吧,而且越快越好"。
      15. Learn what other people in the company are doing 了解公司的其他人在做什么
      What were last year's big triumphs and failures?
      去年公司主要的成功和不足是什么?
      How does your job' intertwine with all this?
      你在这中间起到什么样的作用?
      Then you'll understand when, how and where to press for your goals。
      然后你将明白何时、何地及如何去追求你的目标。
      16.Get along with your co-workers 与你的同事和睦相处
      Internal battles mean less production. To your boss, if you're involved, you're automatically wrong。
      内斗意味着减产。对你的上司来说,如果你卷入内斗就已经错了。
      17.Protect the company's reputation 保护公司的名誉
      Never discuss company business and people where strangers can overhear。 Even in private, be reticent。
      不要在有陌生人能够无意中听到的场合谈论公司的事务和人员,即使在私下也不应当说。
      18.Let others win sometimes 有时候要让别人胜出
      "Sounds like a good idea. We'll do it that way". If you don't, people will resent you。
      "这主意听起来不错。我们就这么做吧。"否则人们会讨厌你。
      19.Learn Timing 学会选择时机
      Develop the patience to wait for an appropriate occasion。
      培养你的耐心,等待一个适当时机的到来。
      20.Don't Lie 不要撒谎
      Lying will make problems worse. If you're caught in a lie, you lose your credibility。
      谎言会使问题变得更糟。如果你的谎言被拆穿,你将失去你的诚信。
      21.Read your industry's publications 阅读本行业的书刊
      Indicating you haven't the time or money to read will shock your bosses. To them, your lack of interest indicates no real career goals. Or worse, they may think that you are ignorant of important professional news。
      假如你声称没有时间或没钱阅读本行业的书刊,会让你的上司感到震惊。对他们来说,你缺乏兴趣表明你没有真正的职业目标。或更糟的是,他们可能会认为你对重要的专业新信息一无所知。
      22.Get to know your peers 了解你的同行
      Be active in one or more professional/trade organizations. The contacts you make and information you glean aid you on a personal level whenever you change jobs, while improving your current status。
      积极参与一个或更多的专业/行业团体。不管你什么时候为改善你现有状况而跳槽,你建立的联系和收集的信息都会有助于你提高自身水平。
      23.Never assume other people are operating from your standards
      永远不要假设别人在按你的标准做事
      When you find yourself thinking"I never would have expected such behaviour from her", you know you've made the mistake of projecting your outlook on to others' behaviour。
      当你发现你自己在想"我决不会料到她会有这种行为"时,你要知道,你己经犯了一个错误, 就是把自己的想法套在了别人的行为上。
      24.Use Commonsense运用常识和判断力
     
     
    摘自:nqk的个人空间
  • WEB测试资料

    kevin_swpi 发布于 2007-01-16 11:25:16

    关于web测试
    1页面部分
    (1) 页面清单是否完整(是否已经将所需要的页面全部都列出来了)
    (2) 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是是否显示)
    (3) 页面在窗口中的显示是否正确、美观(在调整浏览器窗口大小时,屏幕刷新是否正确)
    (4) 页面特殊效果(如特殊字体效果、动画效果)是否显示
    (5) 页面特殊效果显示是否正确

    2 页面元素部分
    (1)页面元素清单(为实现功能,是否将所需要的元素全部都列出来了,如按钮、单选框、复选框、列表框、超连接、输入框等等)
    (2)素是否显示(元素是否存在)
    (3)页面元素是否显示正确(主要针对文字、图形、签章)
    (4)页面元素的外形、摆放位置(如按钮、列表框、核选框、输入框、超连接等)
    (5) 页面元素基本功能是否实现(如文字特效、动画特效、按钮、超连接)
    (6) 页面元素的容错性列表(如输入框、时间列表或日历)
    (7) 页面元素的容错性是否存在
    (8) 页面元素的容错性是否正确

    3 功能部分
    (1) 数据初始化是否执行
    (2) 数据初始化是否正确
    (3) 数据处理功能是否执行
    (4) 数据处理功能是否正确
    (5) 数据保存是否执行
    (6) 数据保存是否正确
    (7) 是否对其他功能有影响
    (8) 如果影响其他功能,系统能否作出正确的反应
    (9) 其他错误
    (10) 对模块的具体功能进行测试时可以列出功能模块的所有功能,进行排列组合,测试所有情况
    如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试
    单项功能测试(增加、修改、查询、删除)
    增加——>增加——>增加 (连续增加测试)
    增加——>删除
    增加——>删除——>增加 (新增加的内容与删除内容一致)
    增加——>修改——>删除
    修改——>修改——>修改 (连续修改测试)
    修改——>增加 (新增加的内容与修改前内容一致)
    修改——>删除
    修改——>删除——>增加 (新增加的内容与删除内容一致)
    删除——>删除——>删除 (连续删除测试)
    (11)查询功能分为两种情况,验证操作结果。
    一、打开页面时自动显示结果,则不特别强调;
    二、需要手工操作进行查询,则每次在其他功能完成后进行。
    4 提示信息
    (1) 成功、失败提示
    (2) 操作结果提示
    (3) 确认提示
    (4) 危险操作、重要操作提示
    (5) 返回页面 提示后显示的页面
    5 容错性
    注意以下几种情况
    (1) 为空、非空
    (2) 唯一性
    (3 )字长、格式
    (4) 数字、邮政编码、金额、电话、电子邮件、ID号、密码
    (5) 日期、时间
    (6) 特殊字符 (对数据库)英文单、双引号,&符号
    6 权限部分
    功能权限: 指定用户可以使用那些功能,不能使用那些功能
    数据权限: 指定用户可以处理那些数据,不可以处理那些数据。可
    以合并到功能测试
    操作权限: 在逻辑关系上,操作前后顺序、数据处理情况。可以合
    并到功能测试
    权限变化: 可以合并到功能测试

    (1) 功能权限是否存在
    (2 )功能权限是否正确
    (3) 数据权限是否存在
    (4) 数据权限是否正确
    (5)操作权限是否存在
    (6) 操作权限是否正确
    (7) 引起权限变化的功能列表
    (8) 功能权限变化还是数据权限变化,或两者兼有
    (9) 权限变化是否正确

    7 键盘操作
    (1) Tab键的使用
    (2) 上下方向键的使用
    (3) Enter键的使用
    (4) 系统设定快捷键的使用(如果设置有快捷键)

    8 测试中还应注意的其他事项
    (6) 完整性:是否是一个整体,没有功能缺损
    (7) 易用性:使用是否方便
    (8) 一致性:类似的问题用类似的方法处理
    (9) 提示信息:提示信息是否完整、正确、详细
    (10) 帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细
    (11) 兼容性:包括操作系统兼容和应用软件兼容,可能还包括硬件兼容
    (12) 可扩展性:是否由升级的余地,是否保留了接口
    (13) 稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护
    (14) 运行速度:运行的快慢,带宽占用情况

    有几点:
    1.功能点测试:是否满足需求所要求的功能
    2.字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.
    3.字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.
    4.标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.
    5.中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.
    6.信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.
    7.界面测试:界面的正确性、一致性、友好性、易用性。

    用户界面测试是从最终的使用者用户的角度来看软件,软件难以理解,不易使用就是软件缺陷。可以从以下几个方面重点来检查用户界面:
    1.易用性检查:确保软件易于理解,方便使用。
    2.一致性检查:
    a.注意系统页面的风格是否一致,如字的大小、颜色、字体要相同。
    b.提示信息的表达方式是否一致。
    c.按钮排列顺序是否一致。
    d.back, cancel等按钮跳转页面处理是否一致。
    e.各字段的名称,位置、长度、类型是否和设计文档要求一致,如Employee No和LoginName不一致。
    3.正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。
    4.友好性检查:
    a.提示信息是否友好.
    b.系统应该在用户执行错误的操作之前提出警告,提示信息.
    c.页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。
    5.合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。
    6.检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。
    7.页面最大化检查:测试最大化/最小化/还原时页面是否做了对应的处理。
     
    ---PS----今天写test design ,test case ,test report全用英文写,就找来了一篇文章,然后对照一下,开始动工了,呵呵,真的还是有点恼火哦,都不晓得那些词用起比较专业点得...put on steam
  • 转载:公司招聘中不能说的秘密

    pulingwang 发布于 2009-08-03 10:49:26

    你是否试过狂轰乱炸地在网上发简历,而回应者却寥寥无几?难道真的是人才饱和了吗?或者是你不够优秀,企业在第一时间就把你给枪毙了呢?这里,会告诉你一些企业人才招聘环节中一些不为外人知道的秘密,了解了这些秘密,应该可以让你以后的应聘变得更加有成效!

     

    现在中国所有招聘网站都是以人事经理为中心,因为他们是给钱的一方,较少从求职者角度考虑,如果我们从求职者立场或者中立立场来看中国招聘网站的生意模式及运作流程,将这个求职者并不知晓的事情公布出来,你就会更好清醒认识招聘网站,也更好的实际的利用人才网站求职:

    

    一、人才网站与企业人事经理的生意模式对求职者影响:

    人才网站的行规是企业人事经理支付600元,可以在一个月内发布一定的职位让求职者投递简历,可以搜索查看人才网站简历库的简历,还可以下载一定数量的简历主动与求职者联系。而大企业及知名公司一般都是购买1年的招聘服务。问题就出来了:如果这个职位12周企业招到人了,但他购买的是1个月的服务,所以企业的职位还是挂在网上,而且人才网站竞争激烈,一般都会赠送1个月服务。所以一般职位至少1个月挂在人才网站是无效的,是浪费求职者查看与投递简历时间的。

    

    大公司最不可靠,他们利用网络、报纸、现场等多种方式,而1年的大大banner永远挂在人才网站上,他们并不需要人,只是为了广告宣传。

    

    所以人才网站50%以上的职位都是过期的、无效的、不招人或招满人的,所有求职者抱怨我投了那么多简历为什么反馈率那么低,反馈率低是非常正常的。

    

    另外51job网站的反馈率是最低的,这也是行业秘密:因为51Job的资源80%是以报纸招聘为主,报纸招聘效率高,但网站上的职位都是在报纸上刊登过后作为免费与补充服务,所以很多HR只会看报纸上来的简历,网站来的简历基本不看,在加上51job简历投递量实在太大,那些懒惰的HR才懒得一封一封的看,只会用搜索关键字来看,如本科+3工作经验+主管等,其他不符合条件的看都不看一眼。所以你知道为什么一直没有公司找你面试,不是你不行,而是HR都不看你发的简历。下面第二部分告诉你如何被他们搜索到。

    

    现在你知道网络招聘的反馈率为什么那么低了吧。不信你用自动回复邮件形式发送中国3大招聘网站职位HR的邮箱,看看有多少HR看了你的简历,一个工作论坛的网友说,他试着发了100HR邮箱简历,可以通过自动回复的反馈率统计,可以看到50HR不看简历就直接删除,30%根本就不打开邮件,只有20%打开邮箱,还有10%可能已经找到人的。他的分析说即使是中国前3名招聘网站以严格标准来看也只有10%职位是真正要急迫招人的。

    

    二、既然知道一些潜规则,那我们也迎合一些这些规则,告诉你一些网络求职的小秘密

    

    (1)采用行业招聘网站求职。

        因为行业招聘网站是按行业发布职位信息的,所以专业和工作经历比较对口。比如你要找物业管理类的工作,你到万行工作网www.114job.com.cn的物业管理招聘频道上去注册简历就比较好,因为那里全部都是物业管理类的企业在招聘;如果你要找外贸的工作,你就可以万行工作网的外贸招聘频道去找,肯定有大量的外贸工作机会。其它的就不在列举。在目前的情况下,几乎每个行业的人才在万行工作网上都能找到自己的频道。

    

    2)简历要与大公司沾边

    当人事经理搜索招聘网站简历库简历时,一般会以关键字“知名企业名称+职位名称”,比如消费品行业可能喜欢可口可乐及宝洁的人,人事经理会这样搜索,例如:“可口可乐+销售经理”,系统会搜索到简历中出现以上关键字的求职者,如果你的简历里出现知名企业名称的字样,就可以被搜索到,例如:“我在xx矿泉水公司工作,成功地令竞争对手——可口可乐旗下的天与地矿泉水在当地的市场份额减少……”:“我在可口可乐的广州白云区经销商工作”等。又提高了人事经理浏览简历的机会!

    

    (3经常刷新简历

    当人事经理搜索简历库的简历时,符合条件的简历是按刷新的时间顺序排列,而一般只会看前面一两页。很多求职者其实并不知道刷新简历可以获得更多求职机会。因此每次登陆,最好都刷新简历,刷新以后,就能排在前面,更容易被人事经理找到!4不要只应聘最近三天的职位

    一般求职者认为刚刚发布的最新的招聘信息肯定是成功率最大的,其实不然。因为很多企业人事经理没有及时的登陆刷新刊登的职位,所以求职者在搜索职位时刚刷新的职位会排在前面,这些职位应聘的人多,竞争大,相反,一些职位已经是半个月甚至两个月的,应聘的人少,成功率反而高。

    

    5让你的邮件永远在最前面

    你要知道每天人事经理看求职者邮箱,他们其实是很懒的,100多页简历邮件他们最多只看前5页!你现在应该知道为什么你的求职简历永远没有回应!

    

      所以发邮件到企业指定的邮箱时,怎样才能让你的邮件永远排在最前面,让人事经理每次打开邮箱都首先看到你的邮件?只要在发邮件前,把电脑系统的日期改为一个将来的日期,如2008年,因为大多邮箱都是默认把邮件按日期排序,所以你的邮件起码要到2008年以后才会被排在后面!(如果你求职成功,要向我请客耶!)

    

    (6新颖的邮件标题

    人事经理每天收到大量的求职电子邮件,求职者一般会按企业要求把邮件题目写成:应聘xx职位,怎样才能吸引人事经理的眼球,让他先打开自己的邮件?可以在邮件题目上做文章。一天人事经理收到几百封邮件,只有标题新颖的才有机会被打开。

    

      例子:我的一个女性朋友发了100多封邮件求职都没有任何反应,因为应聘做文员的太多了,而我这个朋友做过空姐,我将她的邮件标题改为“空姐来广州找工作”,引起绝大部分男人事经理想入非非,结果三天之内有30多个男人事经理通知面试,3个月找不到工作的她而变成3天找到上十份工作。你现在知道邮件标题的重要性了吧。

    

    (7简历最好放靓照

    对于人事经理来说,每天需要浏览大量简历,如果同等的条件,一般会先通知有照片的求职者来面试,因为通过照片,人事经理对应聘者又多了几分了解。如果是美女,被通知的可能性就更大。我作为人事经理,曾经招聘一个人事主管,收到300多封简历,我找出前30份有相片的前5份,通知了最漂亮相片的2个女孩,就定下了其中的一个。对于一般职位如文职人员之类,中国人的传统还是以貌取人,你即使不漂亮,也照一个艺术照,就增多了面试机会(与其等死,还不如放手一搏),毕竟很现实的是,简历的目的就是有面试的机会,其他就要靠实力与运气了。

     

    (8)求职信“骂”对方公司往往会带来意想不到的效果

    一般人认为在求职信中称赞对方公司会引起好感,其实不然。如果先指出这家公司的缺点,往往会引起关注,语不惊人死不休呢,我作为人事经理,我只会对指出我们缺点的求职者有好感,对恭维我们公司的求职者一般会放在一边。即使你不知道对方公司缺点,你随便写一些永远不会错的:“我认为贵司创新不够,市场表现过于常规化;我以消费者心态观察贵司,发现贵司客户服务还有许多待改进的地方;我发现贵司品牌形象还有可能做的更好……”如闻其详,可面谈。可勾引相关公司面试。只要有面试机会,其他再说。(简历有机会面试目的是一切,手段是无所谓的)。

    

    (9)自己要学会让简历与职位匹配

    2个观念都是有效的:一是不要太在乎对方职位要求的描述,很多职位描述只是写写,连经理都不知道要招什么样的人,如果你看到对方职位要求本科,你是专科就不敢投递简历,那就失去机会了。如果你看到对方要求有5年经验,你只有3年经验,你也不敢投,那完全没有必要。因为人事经理们对职位的描述只是例行公事随便谢谢而已,你千万不要当真!

    

    另外一个匹配观念就是他的职位如何描述,你就改变你的简历换一个说法匹配,如他说要求领导能力强,你的简历也说具有领导才能,他要沟通能力一流,你的简历也说我最擅长沟通。你的简历表面匹配度最高,也可以多增加机会。你可将简历改成为他职位描述完全量身定做的简历。

    其实求职者有更多的面试机会,不但可以增加成功求职机会,还可以增加自己的信心,工资越叫越高还可以积累面试经验。很多优秀的求职者网上发了很多简历没有回应,以为自己不行没有竞争力,只好自动降价,实为可惜!特别是中国最大的招聘网站51job的简历投递反馈率是同行业最低的,因为它主要资源80%投入报纸,报纸招聘完甚至录取完毕后将职位入库,只是将职位作为一个摆设放到网站。

    要知道现在网络求职的成功率一般2个月是发1000份简历,有8份面试,2份成功,一个是你不想去的,另一个可能是你相对满意的。所以网络求职的朋友千万不要对自己失去信心。

  • [ZT]测试人员容易遗漏一些隐藏的缺陷

    morpar82 发布于 2008-07-23 11:15:30

    通常软件测试会暴露软件中的缺陷,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,软件测试不可能发现所有的缺陷,而软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是测试中容易忽略的,也就是说,通过测试方法和用例可以充分暴露这些缺陷,遗憾的是,它们往往被忽略或者某种原因忘记测试了,这就给软件留下了隐患或者危机。这些容易被忽略的缺陷包括:

      1、安装缺陷

      通常项目组完成代码后,发布时候安装打包是最后一个环节,而软件测试人员通常在测试的时候,没有仔细的测试这一部分,而把用例集中在其他功能上。安装时候的缺陷通常通过拷贝而不是运行安装程序方式给测试人员安装软件,结果正式安装时候出现问题,引起例如控件没有注册,注册表没有导入等。删除时候没有注意安装文件夹是否存在用户文件,造成数据丢失;使用绝对路径;安装顺序没有说明书。

      2、配置文件

      有些文件在ini等配置文件中写出了管理员口令密码等信息,而且是明文的!这是一个安全隐患。另外,有些安装文件的 XML 文件,为了方便在数据库和中间层连接文件中写入了Admin 口令和密码。作为一个合格的软件测试人员,必须检查这些可以用记事本打开的文件。因为,一个稍有常识而且喜欢探索的用户,可能从中获取信息而成为不自觉的黑客。所以,配置文件可能成为软件安全方面的一个缺陷。

      3、网页安全缺陷

      现在网站开发已经注意到:登陆网站进入其内部网页后,直接拷贝网址,然后粘贴到另一IE 窗口输入,可以绕过登陆直接访问。也许商业网站很关注这个问题,但是很多行业软件却很容易忽略。

      网页安全缺陷还可能存在于 IE 弹出的子窗口。有些设计不严格的软件,在主页面关闭的时候子页面还可以运行,这是一个明显的漏洞,而且还大大增加了错误发生的几率。

      4、判断顺序/逻辑缺陷

      对界面进行多个输入判断的时候,非常容易出现这种问题。例如判断年月顺序,判断长度,判断非空等。假如操作员仅仅满足单个条件,保存不能成功;而按界面从上之下顺序一一满足条件之后,保存是没有问题的。但是,改变一下输入的次序,校验失效。例如,一一满足条件之后,不保存,倒过来将上面的输入改成非法输入,然后保存,结果居然也能成功,这是因为原先的判断由于发生过,或者根据语句顺序只检查最后一个判断,所以没有报错。这种错误尤其在 Java scrīpt 脚本的页面中要注意。能够保存不能保证数据正确,有可能引起系统崩溃或者后续数据错误。所以,在测试的时候,不要按照正常的顺序输入,而是要打乱步骤,看看代码是否强健,是否在判断逻辑上没有错误。良好的代码应该经得起折腾,至少保存时会再此全部进行判断,而不只是简简单单走到判断的最后一行。

      5、调试语句和冗余信息

      维护项目和升级改造的推广系统最容易潜伏这类缺陷。典型表现在没有删除或者屏蔽调试语句。弹出一个界面不友好的提示信息,会使不明真相的用户产生误以为系统发生了严重故障,从而引起对软件的不信任感。页面中某个角落存在当前客户不需要的冗余按钮和功能也是一种缺陷。多余的功能会使用户以为是额外附加部分而去使用,其结果可想而知;而多余的按钮会误导好奇心强的用户操作,产生不必要的错误。

      同样值得关注的还有参数设置,由于没有实际数据,开发人员在调试或者单元测试的时候,习惯性的进行自我设定而忘了删除,软件测试人员可能会忽略掉了这部分测试,也可能导致在客户现场发生错误而影响系统发布和验收。

      6、不可重现的故障

      新参加软件测试的人员或者新来的开发人员总是要问,不可重现的缺陷是否需要记录,有必要吗?回答是肯定的。测试必须如实的记录发生的问题,也许不能重现,或者使非软件系统本身问题,但是,可能这些偶然性背后是有规律的,不记录这些,就不可能发现这些规律。

      7、多节点的逆向流转缺陷

      当前软件不少喜欢使用工作流来驱动。工作流的问题,就是可能出现多个流向分支。测试容易忽略的部分,就是工作流多节点的逆向流转。例如,通过不通过涉及两个分支,但是流程逆转的时候,有可能不是回到上一节点而是平级的另一个节点去了。软件测试要格外注意这类用例的设计。另外,有些时候默认分支在向前的时候是有默认值的,例如默认通过,那么保存的时候要提示用户是否通过,否则可能由于操作疲劳而走错了节点,引起回退。

      8、输入框缺陷

      试过往输入框粘贴数据而不是直接输入吗?可能这里会出现问题。按 Ctrl+V 的时候,输入框会根据长度大小自动截断输入长度。但是用鼠标,截断可能会失效。有一次测试人员就是用这种方法把一篇 Word 文档输入进去了,保存的时候,数据库崩溃。有些网站登陆的口令****可以拷贝下来的,只要放在剪贴板里面马上明文显示。

      输入框可以说是问题最多的部分,能够引起的麻烦也很多。日期、数字、文本等等,都需要耐心的测试一下。

      9、界面布局缺陷

      曾经有一次,项目经理回来向测试部反映一个问题,客户对界面不满意。原因很简单,因为界面上删除按钮和保存按钮挨得很近。结果有些操作不熟练的业务人员,很容易误按。这个问题是测试人员没有意料到的,因此注意关闭、删除、退出按钮与保存、下一步等按钮的距离。类似的按钮应按此规则排列分布。

      界面布局还可能发生在窗口最大化和最小化上,有可能窗口缩小的时候没有下拉框或不匹配分辨率,对用户来讲,这个错误实在很低级。有些用户由于操作习惯,非常不喜欢腾出手使用鼠标,尤其是大量输入的界面,因此,要注意设置键盘的快捷方式。还有,按 Tab定位到下一焦点时要注意顺序,避免跳转太灵活而让操作人员感到无从适应,在界面进行维护或者修改的时候,不要忘了软件测试开发人员是否无意改变了这些快捷方式和跳转顺序。

      10、版本和补丁包的环境问题

      理论上讲,这属于兼容性测试应该覆盖的问题。有些客户很喜欢更新最新的软件版本或者微软时不时打些补丁包,问题就出现了。有时候升级不一定是好事。这些问题最好在测试的时候增加几个用例,多用不同软件版本的机器跑一跑。软件测试有个定律是:你没跑过的地方,就一定会出事。经常听到开发人员抱怨,怎么我的机器没问题,你的机器就有事了呢?这不能完全靠配置管理员解决问题,环境配置项是大家最容易忽略的。

      11、用户管理缺陷

      用户管理的角色和授权需要好好研究一下,作过测试的人员都知道,有时候为了测试的方便,测试用户都是具有超级权限的用户。而且,比较容易忽略用户管理这一部分的测试。往往发往客户的时候,很多测试用户都没有删除。

      另外,有些接口的用户和口令,到软件使用寿命结束都没有更改过。在一次测试中,软件测试人员发现,给一个用户授超级用户权限,之后更改这个用户为受限权限。使用中发现,用户居然没有真正回收权限,用户管理界面上没有任何不对。及早准备用户管理用例,不要等到测试快结束时候才想起。

      12、常识缺陷

      从逻辑或者统计学上讲,计算机是允许如此处理的,但是从常识上来讲,这些情况不可能发生。例如电话号码不可能出现小数点,终止时间不能大于开始时间等等。除此之外,常识还要结合业务特点来进行判断,因此,开发和测试人员要格外注意对自己知识的培养以及增加对需求细节的了解。不能因为一味追求进度而采用最简单的代码来实现,对用户来说,这些错误可能是很荒谬的。

      尽管我们不可能完美的测试一个软件,但是我们仍然可以改进我们的软件测试。每次测试结束,及时总结测试中的不足,进一步完善用例。思考一下那些容易忽略的软件缺陷,能提高对软件测试的认识,提高所在组织软件的质量。

  • 软件测试基础-面试(ZT)

    rejoicexu 发布于 2008-05-16 14:31:26

       
    软件测试基础-面试
    01. 为什么要在一个团队中开展软件测试工作?
      因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

    02. 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
      我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试

    03. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同04. 的测试类型的区别与联系(如功能测试、性能测试……)
      测试类型有:功能测试,性能测试,界面测试。
      功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
      性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
      界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
      区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试

    04.您认为做好测试用例设计工作的关键是什么?
    白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
    黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题


    05.     请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

      黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
      白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

      软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
      1、是否有不正确或遗漏的功能?
      2、在接口上,输入是否能正确的接受?能否输出正确的结果?
      3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
      4、性能上是否能够满足要求?
      5、是否有初始化或终止性错误?

      软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
      1、对程序模块的所有独立的执行路径至少测试一遍。
      2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
      3、在循环的边界和运行的界限内执行循环体。
      4、测试内部数据结构的有效性,等等。

      单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

      单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

      集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。

      系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)

      系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。

      验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
    验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

    06. 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
      软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
    测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)

    07. 您认为做好测试计划工作的关键是什么?
      1. 明确测试的目标,增强测试计划的实用性
      编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
      2.坚持“5W”规则,明确内容与过程
      “5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用 “5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。
      3.采用评审和更新机制,保证测试计划满足实际需求
    测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。
      4. 分别创建测试计划与测试详细规格、测试用例
      应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。

    08. 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
      1.等价类划分
      划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.

      2.边界值分析法
      边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
      使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.

    3.错误推测法
      基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
      错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.

    4.因果图方法
      前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.

    09. 请以您以往的实际工作为例,10. 详细的描述一次测试用例设计的完整的过程。
      就说最近的这次网站功能的测试吧
      首先:得到相关文档(需求文档和设计文档),理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了),考虑到测试环境,测试用例,测试时间等问题。
      第二步:设计测试用例,测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有另一个测试人员负责,可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小,所以不考虑):这次的网站的输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的,有个标志位),网站启动后会立刻去刷那张表,得到多条数据,然后在进行处理。处理过程中,会经历3个步骤,网站才算完成了它的任务。有3个步骤呢,就可以分别对  这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等),得出了差不多50个用例。界面测试,也就是用户看的到的地方,包括发送的邮件和用户填写资料的页面展示。
      第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境已经很熟了,只有有机器能空于下来做该功能测试就可以做了),因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦,需要web服务器(Apache,tomcat),不过这次需求呢,网站部分只用到了tomcat,所以只要有tomcat即可
      第四步:执行测试

    11. 您以往是否曾经从事过性能测试工作?如果有,12. 请尽可能的详细描述您以往的性能测试工作的完整过程。
      是的,曾经做过网站方面的性能测试,虽然做的时间并不久(2个月吧),当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做。
    性能测试类型包括负载测试,强度测试,容量测试等
      负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
      强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况
      容量测试:确定系统可处理同时在线的最大用户数 
      在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比),

      Web服务器指标指标:
      * Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
      * Successful Rounds:成功的请求;
      * Failed Rounds :失败的请求;
      * Successful Hits :成功的点击次数;
      * Failed Hits :失败的点击次数;
      * Hits Per Second :每秒点击次数;
      * Successful Hits Per Second :每秒成功的点击次数;
      * Failed Hits Per Second :每秒失败的点击次数;
      * Attempted Connections :尝试链接数;  

    13. 您在从事性能测试工作时,14. 是否使用过一些测试工具?如果有,15. 请试述该工具的工作原理,16. 并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

    17. 您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

    18. 在您以往的工作中,19. 一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

    20. 您以往所从事的软件测试工作中,21. 是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,22. 请结合该工具描述软件缺陷(Bug)跟踪管理的流程。

    23. 您认为在测试人员同24. 开发人员的沟通过程中,25. 如何提高沟通的效率和改善沟通的效果?维持测试人员同26. 开发团队中其他成员良好的人际关系的关键是什么?

    27. 在您以往的测试工作中,28. 最让您感到不29. 满意或者不30. 堪回首的事情是什么?您是如何来对待这些事情的?

    31. 在即将完成这次笔试前,32. 您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面)

    33.        你对测试最大的兴趣在哪里?为什么?
      最大的兴趣就是测试有难度,有挑战性!做测试越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章,是关于如何做好一名测试工程师。一共罗列了11,12点,有部分是和人的性格有关,有部分需要后天的努力。但除了性格有关的1,2点我没有把握,其他点我都很有信心做好它。
      刚开始进入测试行业时,对测试的认识是从无忧测试网上了解到的一些资料,当时是冲着做测试需要很多技能才能做的好,虽然入门容易,但做好很难,比开发更难,虽然当时我很想做开发(学校专业课我基本上不缺席,因为我喜欢我的专业),但看到测试比开发更难更有挑战性,想做好测试的意志就更坚定了。
      不到一年半的测试工作中,当时的感动和热情没有减退一点(即使环境问题以及自身经验,技术的不足,做测试的你一定也能理解)。
      我觉得做测试整个过程中有2点让我觉得很有难度(对我来说,有难度的东西我就非常感兴趣),第一是测试用例的设计,因为测试的精华就在测试用例的设计上了,要在版本出来之前,把用例写好,用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个新任务时,你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的),而技术基础可就没那么简单了,这需要你自觉的学习能力,比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的,后台是怎么响应用户请求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备,可能会遇到什么难题?需求细节是不是没有确定好?这些问题都能在设计用例的时候发现。
      第二是发现BUG的时候了,这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发现大部分的bug,还有一部分bug需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例,测试出bug。还有如何发现bug?这就需要在测试用例有效的情况下,通过细心和耐心去发现bug了,每个用例都有可能发现bug,每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数据流及结果都得看仔细了,bug都在里面发现的)。如何描述bug也很有讲究,bug在什么情况下会产生,如果条件变化一点点,就不会有这个bug,以哪些最少的操作步骤就能重现这个bug,这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题。

    34. 你的测试职业发展是什么?
      测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年累积测试经验,按如何做好测试工程师的11,12点要求自己,不断的更新自己改正自己,做好测试任务。

    35. 你自认为测试的优势在哪里?
      优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。

    36. 你以前工作时的测试流程是什么?
      公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。我说下我1年来不断改正(自己总结,吸取同行的方法)后的流程吧。需求评审(有开发人员,产品经理,测试人员,项目经理)->需求确定 (出一份确定的需求文档)->开发设计文档(开发人员在开始写代码前就能输出设计文档)->想好测试策略,写出测试用例->发给开发人员和测试经理看看(非正式的评审用例)->接到测试版本->执行测试用例(中间可能会补充用例)->提交bug(有些bug需要开发人员的确定(严重级别的,或突然发现的在测试用例范围之外的,难以重现的),有些可以直接录制进TD)->开发人员修改(可以在测试过程中快速的修改)->回归测试(可能又会发现新问题,再按流程开始跑)。

    37. 当开发人员说不38. 是BUG时,39. 你如何应付?
      开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。

    23.你为什么想离开目前的职务?
      因为公司运作情况并不理想,公司需要调整部门体系,公司考虑到缩减部门人员,所以大批量的裁员(有6,7个),这是我的第一份工作,对公司也有较深的感情,因为在这里我找到了职业理想(就是测试),所以公司需要精简人员,我自愿退出。虽然很舍不得,但我将会有新的发挥能力的舞台。

    24:你对我们公司了解有多少?

    25:你找工作时,最重要的考虑因素为何?
      工作的性质和内容是否能让我发挥所长,并不断成长。

    26:为什么我们应该录取你?
      您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。

    27:请谈谈你个人的最大特色。
      我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。

    28.白箱测试和黑箱测试是什么?什么是回归测试?

    29。单元测试、集成测试、系统测试的侧重点是什么?

    30。设计用例的方法、依据有那些?

    31。一个测试工程师应具备那些素质和技能?

    32.集成测试通常都有那些策略?

    33.你用过的测试工具的主要功能、性能及其他?

    34.一个缺陷测试报告的组成

    35.基于WEB信息管理系统测试时应考虑的因素有哪些?

    36.软件测试项目从什么时候开始,?为什么?

    37.需求测试注意事项有哪些?

    38.简述一下缺陷的生命周期

    39.测试分析测试用例注意(事项)?
      你在你所在的公司是怎么开展测试工作的?是如何组织的?
      你认为理想的测试流程是什么样子?
      你是怎样工作的?
      软件测试活动的生命周期是什么?
      请画出软件测试活动的流程图?
      针对缺陷采取怎样管理措施?
      什么是测试评估?测试评估的范围是什么?
      如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么?
      测试结束的标准是什么?
      软件验收测试除了alpha,beta测试以外,还有哪一种?
      做测试多久了?
      以前做过哪些项目?
      你们以前测试的流程是怎样的?
      <答:测试计划-测试用例设计-测试执行-测试分析报告>
      用过哪些测试工具?
      为什么选择测试这行?
      <答:它是一个新兴的行业,有发展潜力,而且很锻炼人,需要掌握更多的技能,比做开发要更难>
      为什么值得他们公司雇用?
      如果我雇用你,你能给部门带来什么贡献?
      如何从工作中看出你是个自动自觉的人
      你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
      通常你对于别人批评你会有什么样的反应
      如果明知这样做不对,你还会依主管的指过去做吗
      如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理
      你觉得什么样的人最难相处
      为什么值得他们公司雇用?
        帮助公司提高软件质量和测试部门的技术水平
      如果我雇用你,你能给部门带来什么贡献?
        分享我的测试经验和测试技能,提高测试部门技术水平
      如何从工作中看出你是个自动自觉的人
               自动自觉范围太广
            1. 工作成果
            2. 工作质量
      你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
        在有足够的资源和合理的工作量的情况下,完全可以按时完成,并能比一般人做的更好
      通常你对于别人批评你会有什么样的反应
        有错即改,无措勉之

      如果明知这样做不对,你还会依主管的指过去做吗
        在公司内部下级是否有申诉渠道?

      如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理
        为什么抱怨?是怎么样的问题?
        如果是客服问题,提交客服部门解决
        如果是质量问题,分析原因,下一版本改进
      你觉得什么样的人最难相处
        自以为是的人

      什么叫单元测试?
        请就软件测试人员应该具备什么样的基本素质说说你的看法。

      请就如何在开发中进行软件质量控制说说你的看法
       简述软件测试的意义,以及软件测试的分类

    1、功能测试,性能测试,界面测试,安全测试(可以简单点,比如只涉及到COOKIES里的内容),压力测试(商业性质的网站) 等等,B/S软件也要根据其具体功能采用不同的测试策略。
    2、态度、责任心、自信、敏锐的观察力、良好的发散思维
    3、先设计后开发模式,加强单元测试,加强代码走查,有一套完整的白盒测试方法。关键是加强开发人员的质量意识,增进程序员向工程师水平发展。
    4、意义嘛,就自己想吧。软件测试的分类,这个很多人都按各种方法去分。无明确答案给你。

    对测试的理解——基本的测试知识,对测试是否认可? 75。
          3、谈一谈过去自己的工作——了解经历、提供进一步提问的素材,表达能力 
    测试技能
    测试设计的方法并举例说明——测试技术的使用
    测试工具——熟悉程度,能否与当前工作匹配?
    如何做计划?如何跟踪计划?——日常工作能力
    如果开发人员提供的版本不满足测试的条件,如何做?——与开发人员协作的能力
    熟悉unix系统、oracle数据库吗?——是否具备系统知识
    做过开发吗?写过哪些代码?——开发技能
    阅读英语文章,给出理解说明?——部分英语能力
    文档的意义——是否善于思考?(最简单的概念,不同层次的理解)
    假如进入我们公司,对我们哪些方面会有帮助?——讲讲自己的特长
    随便找一件物品,让其测试——测试的实际操作能力
    软件测试的方法有?
    软件测试的过程?
    有一个新的软件,假如你是测试工程师,该如何做?

    软件测试分哪两种方法?分别适合什么情况?
    2。一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。
    3。软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。
    4。测试用例通常包括那些内容?着重阐述编制测试用例的具体做法
    5。在分别测试winform的C/S结构与测试WEB结构的软件是,应该采取什么样的方法分别测试?他们存在什么样的区别与联系?
    6。在测试winform的C/S结构软件时,发现这个软件的运行速度很慢,您会认为是什么原因?您会采取哪些方法去检查这个原因?
    7。描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程
    你在五年内的个人目标和职业目标分别是什么?
      分析这个问题是用来了解你的计划能力的,通过这个问题,面试人同时还可以知道你的目标是否符合企业对你的安排。
      错误回答我想在将来的某个时候考虑这个问题。如今企业的领导者更换频繁,我认为做太多的个人计划是荒谬可笑的,不是吗?
      评论这种回答属于令人反感的一类。首先,当有人想了解你的目标时,"将来的某个时候"这种通俗说法并不奏效。其次,认为企业很脆弱,领导者更换频繁,这种说法毫无疑问会令人反感,而且也是不合理的。最后,认为做计划可笑,看不起这个问题,而且反问面试人,这些都注定了这样的求职者最终会失败。
      正确回答从现在起的五年之内,我希望能够在一个很好的职位上待几年,而且最好有一次晋升,然后就期待着下一步。不管是向上提升,还是在企业内横向调动,对我个人来说,我希望找到一家企业——一家愿意做相互投入的企业——待上一段时间。
      评论这个问题没有回答得过分具体(那样可能会产生漏洞),而且它表明你有雄心,并且思考过在企业中的成长方式。通过表达横向调动和向上提升的愿望,表明你是一个有灵活性的人。
     问题23 你怎样做出自己的职业选择?
      分析 面试人提出这个问题是为了了解求职者的动机,看看他(她)应聘这份工作是否有什么历史渊源,是否有职业规划,是不是仅仅在漫无目的地申请很多工作。
      错误回答 我一直都想在企业界工作。自孩提时代起,我就梦想自己至少也要成为大企业的副总裁。
      评论 除了难以令人相信之外,这种回答还存在一个问题:它表明求职者会对副总裁以下的职位不感兴趣。
      正确回答在上大学四年级前的那个夏天,我决定集中精力在某一领域谋求发展。尽管我是学商业的,但是我不知道自己最终会从事哪一行业的工作。我花了一定的时间考虑自己的目标,想清楚了自己擅长做的事情以及想从工作中得到的东西,最后我得出了一个坚定的结论,那就是这个行业是最适合我的。
      评论 这种回答表明,求职者认真地做过一些计划,缩小了自己的关注点,而且也认准了前进的方向。这种回答还表明,求职者理解个人职业规划的重要性,并且有能力做出认真的个人决策。
    1. 你都用什么测试方法
    2.怎么编写案例
    3.怎么才能够全面的测试到每一个点
    1. 你都用什么测试方法
    针对不同的产品或者系统或者模块,有不同的测试方法。总体而言有白盒测试和黑盒测试。
    2.怎么编写案例
    案例的编写与测试阶段的定义有很大的关系。系统测试和unit测试的案例可能不同。总体而言测试案例根据系统的需求而定。
    3.怎么才能够全面的测试到每一个点
    测试的全面性主要需要在设计测试计划的时候考虑,从测试策略,产品需求等等多个角度考虑从而定义全部的测试点。
    1、谈谈软件测试技术,以及如何提高
    2、谈谈软件测试职业发展,以及个人的打算
    3、谈谈软件测试在企业的地位,也可以结合软件生命周期来谈
    有可能清晰的思路比确切的答案更重要
    在这里,主要说下笔试和面试的问题,希望大家共同参考。
           1,一般公司里实际的软件测试流程是什么样的?你们公司又是怎样的?
           2,软件工程师要具有那些素质?
           3,你会哪些测试工具?怎么操作?
           4,你能不能说下你的3到5年的职业计划(规划)
           5,你觉得你来应聘有那些优势?
    其余的还好说,但就第4个问题,我感到不好说哦!希望大家给个意见
    第一关:首先要自我介绍,自己的性格怎么样,目前的工作经历积累了一些什么经验取得了些什么值得一说的成果。然后要说说对软件测试怎么看?还有对于软件测试有什么自己的想法。为什么会想到要做这行(因为我的简历上的工作经历没有关于测试方面的)。哦,还有期望薪资。
    第二关:认为软件测试人员所要具备的基本素质,如果遇到问题会怎样处理,如果得不到研发人员的配合(就是研发说这个不是问题)你又会怎么处理?然后就是一些基本概念,比如软件测试的流程有哪些?如果我上任了,首先会怎么开始自己的工作计划。
    (前两关通过了后面这个就好过多了)
    第三关:像我介绍了一下公司的情况,告诉我主要针对什么内容的测试,会不会使用数据库。告诉我大概要做哪些内容,详细的可以上岗以后慢慢熟悉。
    大概就这么多了,这对没有经过这一关的不知道有没有帮助,仅供参考吧
    我觉得就像李波说的,关键是要给对方留下好印象:)

    面试官最后会问你有什么问题要问吗。作为应聘者的你一般不要说没问题问,这会给面试官留下你不太重视这份工作的坏印象。所以如果你想得到这份工作的话应该抓住这最后的表现自己的机会:
    你可以问:
    1.           贵公司近期和远期的发展目标是什么?
    2.           贵公司的主要竞争对手有哪些?
    3.           贵公司有多少开发人员有多少测试人员?
    4.           贵公司又进一步扩充测试人员的计划吗?
    5.           如果我有幸能进入贵公司的话,我有怎么样的发展?
    6.           测试人员的沟通能力很重要,贵公司有规范的沟通渠道吗?
    7.           请介绍一下贵公司的福利情况。
    8.           请问我什么时候能知道结果? 

  • (转贴)测试怎样拿高工资

    HL_Y 发布于 2009-08-31 11:58:53

    今天看到一个帖子,大体意思是:我想参加测试培训,在一年时间内学好测试,拿高工资(7000-8000)…那么对于做测试1年(包含培训时间,实际工作只有半年)的朋友来讲,究竟能拿怎样的工资呢?会有那么高的工资吗?下面说一下我自己的一些看法:
           测试行业刚入行就拿高工资的,通常会有两种情况:一、精通一门以上外语(口语和阅读能力要求很高)且沟通能力很强。入职或外包到外企(比如:日、美等) 二、沟通能力很强,有编程基础,精通一门以上编程语言(具体要看公司要求),入职白盒测试(很多公司白盒都是由开发做的,可见对编程的要求比较高)或性能测试(自动工具使用和测试结果分析能力要求比较高,还要求会编写脚本)当然其他非正常的情况这里就不考虑了,比如有关系等
           那么请问,你的特长是什么?外语?编程?性能测试工具?
           如果你有特长(比如英语6级,口语好,日语好等),一年8千不是梦,08年有个朋友(没有测试工作经验),掌握双外语(英语(6级)+日语(不知道几级)),参加软件测试工程师培训5个月,还没毕业就于08年5月中旬被印度阿普泰克公司录取,试用期8000/月,一个月后转正12000/月,另外我现在的公司有个同事(2年多工作经验),08年8月份去大连的一家软件公司面试(试用期:月薪12000),公司明确承诺,如果测试技术不好,公司可以提供培训,但是英语一定要好,前面技术方面的面试、笔试都通过了,最后一关,和面试官用英语聊天的时候,被淘汰了,原因是哑巴英语,很多都说不出来……
           如果你没有特长:也有两种情况可以拿高工资,不过要付出的会比别人多的多(还和运气有关,不排除会有怀才不遇的情况):一、创造特长:利用业余时间学习外语和编程(但是短时间学好很困难,因为外语学习是一个长期积累的过程还要有个良好的外语环境(哑巴外语是没有用的),编程学习是经验的积累过程,假如都很容易学,那么谁都学的很好,那也不会有高工资了)而同时还要学好测试知识以及了解测试相关知识(比如:系统知识、硬件知识等)二、学好培训的每种技能的同时,在性能测试工具上下工夫,着重性能测试结果的分析上,因为工具用起来并不困难,难的是出了测试报告,怎么分析结果找出系统瓶颈。如果你做到了,那么我想,不久的将来,你会拿到你想要的待遇.
            对于只想通过培训,学好培训机构培训内容,就想拿高工资的人,那么一年7000-8000,只是个徐徐飘起的肥皂泡,虽然会越飘越高,但终有破灭的一天(找到工作的那天),参加软件测试工程师培训要6个月左右时间(说明:培训的知识都是比较皮毛的知识(比如:性能测试(LR用起来并不难,难的是对测试结果的分析上),对测试结果分析讲的很少,而且自动工具放在最后快毕业的时候讲的,那时候面临找工作面试、毕业考试等,所以可能也没那么多精力去学习了.另外有很多地方连讲师都将不明白(要是比较一下一个高级讲师和高级性能测试工程师的待遇,也许你就会明白为什么讲师都有的地方会搞不清楚了),功能自动测试工具(QTP比winrunner多了个关键字视图,所以对于不懂编程的人,比较好用一点)只能学到关键字视图下的脚本录制回放(脚本参数化,action分割,设置检查点,输出值等),而不能自己通过专家视图根据实际需要编写需要的脚本(因为要有编程基础),实际工作中很多脚本是没有办法通过关键字视图进行‘傻瓜式’的录制回放的,所以,除非你有编程基础,不然学习编程语言又要花很长时间.完成一个系统的软件测试工程师培训,只能说明你有可能对测试已经入门(因为一般培训机构都是承诺推荐工作直到找到工作为止的,所以不排除没用心学习的人),学到的只是测试的基本思想和一些方法罢了,向实践转换还需要一个过程。找工作一般要半到一个月左右时间(因为测试通常有3次面试(有的公司会更多,比如:华为有6次面试),第一次笔试,第二次技术部门面试,第三次人事部门面试。这样一轮面试下来也要一个多星期时间。)运气不好,可能要2个月甚至更长,拿北大青鸟为例(因为我参加的是北大青鸟的培训费16900,感觉蛮贵的,本来也考虑去51testing,因为51testing有个先就业后付款的优惠政策,而且性价比比较高,但是因为那时候在南京,南京还没有51testing培训点,所以去北大青鸟了),现在他们一个月开一个班,(08年10月份以后)一个班级30多人(07年一般都是10-15人左右,(我是07年参加培训的,所以用了那时的数据和现在的数据对比一下)现在每期都爆满,可能是受金融危机的影响吧),那么你想想6个月又出来多少跟你一样甚至比你优越的竞争者,再加上别的培训机构,比如51testing、NIIT),再加上5个月的工作经验(如果运气好一点的话,找了一个比较好的公司,员工之间没有隔阂,大家都很乐意帮助新人,那么你可能学到很多知识,当然那只是理想状态,现实中理想状态毕竟很少),找了好一点的公司(要看运气)4500-5500,一般的公司3500-4000(这个工资是在上海的,要是消费比较低的城市可能还没这么高的工资,要是在南京要减去1000左右,我以前在南京一起培训的朋友,刚毕业基本是2500-3000左右(南京))
          上面的分析都是根据实际情况分析的,涉及的数据都是相应时期的真实数据,
    金融危机的影响
           裁员与失业,数据我就不统计了,大家可以在新闻报纸上看到很多这样的数据。那么我想问一个问题:
    失业的人会甘愿永远失业吗?
          显然不会,他们面对自己的失败,大多数会反省和思考,会重新拟定自己的职业规划,淘汰是因为有不足,那么怎样弥补自己的不足呢?很多人自然而然的想到参加培训,充实自己,培训是种投资.那么他们会甘愿自己的付出得到的只是少的可怜的回报吗?显然不可能,每个人都希望自己的投入能够得到最大限度的回报,这时很多人把目光投向了目前的黄金行业IT行业尤其是软件行业….软件开发:培训费用高,而且需要周期长,刚培训完没有工作经验工作超难找(公司的好几个开发都这样和我讲过),而且一年内工资会很低(据同事讲05年的时候,才1000左右).软件测试:随着国内测试行业的发展,和测试培训机构铺天盖地的宣传,使得很多人相信,这是个黄金职业,进入了就能有高工资(虽然这是个错误的想法,51testing有个帖子的楼主,好象是在苏州还是杭州的吧,2年WEB测试经验,现在工资降到1000多,还有其他很多面临裁员的测试员也不在少数)所以很多人踏上了,测试培训之路,这就大大增加了测试学员的就业竞争。
            测试岗位就那么多,甚至在减少,那么那么多测试学员怎样就业,怎样拿高工资呢?
            首先要做的不是分析目前的就业形势也不是分析哪家培训机构的性价比更高,而是要分析一下自己:你适合学测试吗?你学习测试的优越性在哪?你能忍受进入测试工作中,每天都做重复的事情吗?
            其次参加培训的时候,你要做的是怎样学好测试,而不是想我能学好吗?别人都有基础,我会超越他们吗?而是相信自己一定能学好。在测试学习过程中关注测试相关知识的学习.比如:操作系统、硬件知识等另外就是要重点学习,什么都会一点,没有突出的技能,别人认为你很平庸,有句俗话:一白遮三丑,那么假如你有一个技能掌握的很精,那么即使你某些方面做的不够好,也没有人会在意的
            再次参加工作以后,要将理论在最短时间内转化为实践,做好再学习的准备(毕竟培训的内容有很多都是理论上的,实际工作中难免会有所脱节,比如:写测试用例,写测试计划等)
            时间关系先写这么多了,以后补上。以上只是自己的一写看法,有什么不对或不好的地方,请多多指正,谢谢!
  • 什么技术能让自己比别人的薪水更高-Zee

    Zee 发布于 2009-03-08 02:20:43


    原文:http://www.7dtest.com/archives/1963

    有天跟7点测试组织某成员聊天的时候,他问了我一句话,当时因为有其他的事情,没有说下去。今天夜里没事,闲转的同时想起了这个问题:

      你觉得把自己的技术都写出来,放到网上去谁都可以免费看,自己觉得亏吗?(大意是这样)
    学习的一种方式
    以前跟阳光也聊起过类似的事情。并且我们还争论了一番。
    从头说起吧,在刚参加工作的时候,我经常上论坛,看别人提交的问题,在自己机器上搭建环境,弄了半天,得出一个结论后回复一个问题;有时搜索,看到有好的 答案直接copy过去。有时自己弄点心得也写出来,贴到论坛上,放到我的博客上。日积月累,也有一些文章了。原来我的博客在CSDN上,博客的流量,也上 了10W。我记得很清楚的一件事情,一次我花了一周的时候写了一个关于winsock的文章,放到论坛,好多天过去了,浏览量也只有200左右。有一些关 于破解LR,简单的帮助文档,都有好几千的浏览量。我感觉倒是无所谓,阳光问我发这些东西出去,自己什么感觉,有什么目的。我的回答就是:如果不把已知的 东西放出去,我就会固步自封。

    有一些解释,可能会更清楚。有些问题是我问了很多前辈,再动手实验得到的结果。我写出来是为了总结,发出去是为了让自己感觉没有优势。这样做的原因,就是 担心自己以为自己会的比别人多,于是守着这些知识点吃饭。发出去后,我就会感觉谁都会了这样的知识点,我就没有优势了。从而可以学新的知识点。这样的做法 就是逼自己学,破釜沉舟。至于说给别人多少帮助,我真的不知道,也没有想过。只是觉得在别人的问题和自己的问题中,碰到的越来越多,知道的也就越来越多 了。

    有的人发文档出去是为了让别人看,并且得到一些反馈,提高自己的知名度,很有自豪感。我觉得这个理由很正常,也是非常好的,自我提升的激励。我也从这中间得到一些虚荣心上的满足,感觉很开心。但是初衷还是没变,就是逼自己学习新的东西。

    其实发出去的文章有多少人认真的看了,在工作了几年了,我回想一下,好像没有太多人认真看别人的文档,包括我自己。有时如果不是自己碰到问题也不会看别人 的文档。所以我理解有些人在论坛只问问题,和只看别人和自己遇到的同样的问题。有些人认为自己在某个团队里有不可撼动的地位就是因为自己知道的比别人多。 我一直都不赞赏这样的人,就是因为我相信我的团队中,别人肯定有些知识点自己是不知道的,哪怕只是windows中一个简单的快捷键,也许是提高工作效率 很有用的方法。

    我们都知道,工作仅是工作,为了生存,作为一个人,活在这个社会上首先要解决生存的问题,然后才能想如何让自己过得更好。所以得把自己赖以生存的技能练 好,否则拿不到比别人高的薪水,也没什么埋怨的。我觉得学习的过程就是让自己的薪水比别人多的过程。不需要学太多,只要比自己周围的人多一点就行了。哪怕 一天只多知道一个知识点也就够了,虽然看起来也是满俗得想法,但绝大多数人目前还是在解决这个问题。我所理解的事业是高于工作范畴的,这是下一个阶段要思 考的问题。

    并且不要把这些知识点当成自己拿比别人高一些薪水的根本,我想看到这里有人有点晕了。会问:那什么是让自己拿比别人高一些薪水的呢?我会这样回答:

    那些你不会的技术才是。

    所以把自己的已知的东西放出去,不是为了别人,是为了自己更强。

    现在创建7点测试论坛,就像一个网友说的:不花销,不商业,不广告。所有东西都不收费。我想一直这样做,一方面自己在各方面会知道的越来越多,另外,可以 有很多的测试朋友,大家相互支持。这样自己遇到问题就不会是孤立的,把那些自己原来不会的技术也能积累下来,遇到的时候不会手忙脚乱,到处找人问。

  • 测试用例八大要素

    凌萱 发布于 2008-12-18 21:13:01

    1、用例编号        格式:产品名字—测试阶段—测试项目—子项名

                                  注意:必须具有唯一性、易识别性

    2、用例项目        当前测试用例所属测试大类

                                  系统测试:软件需求项

                                  集成测试:集成后的模块名或接口名

                                  单元测试:被测试的函数名

    3、用例标题        用概括的语言描述该用例的出发点关注点

    4、用例级别        高、中、低

    5、用例预置条件    执行当前测试用例需要的前提条件

    6、用例输入        数据、文件等输入

    7、操作步骤        当前用例需要经过的操作步骤 需要明确的给出每一步的描述

                                  注意:保证步骤的唯一性、描述的正确性

    8、预期结果        详细的描述具体的规格

  • 软件开发人员面试问题(经典)

    fengyun32 发布于 2009-02-04 13:06:28

      想雇到搞软件开发的聪明人可不容易。万一一不小心,就会搞到一堆低能大狒狒。我去年就碰到这种事了。你肯定不想这样吧。听我的,没错。在树上开站立会议门都没有。

    问点有难度的问题能帮你把聪明人跟狒狒们分开。我决定把我自己整理出来的软件开发者面试百问发出来,希望能帮到你们的忙。

    这个列表涵盖了软件工程知识体系中定义的大多数知识域。当然,如果你只想找出类拔萃的程序员,便只需涉及结构、算法、数据结构、测试这几个话题。如果想雇架构师,也可以只考虑需求、功能设计、技术设计这些地方。

    不过不管你怎么做,都要牢记一点:

    这里大多数问题的答案都没有对错之分!

    你可以把我的这些问题作为引子,展开讨论。例如下面有个问题是使用静态方法或是单例的缘由。如果那个面试的就此展开长篇大论,那他很有可能是个聪明能干的家伙!如果他一脸茫然的看着你,发出这种声音,很明显这就是只狒狒了。同样,想知道一个数是不是2的乘方也有很多方法,不过要是面试的人想用mod运算符,嗯……你知道我的意思吧。(你不知道也没关系,来根香蕉?)

    需求

    你能给出一些非功能性(或者质量)需求的例子么?
    如果客户需要高性能、使用极其方便而又高度安全,你会给他什么建议?
    你能给出一些用来描述需求的不同技术么?它们各自适用于什么场景?
    需求跟踪是什么意思?什么是向前追溯,什么是向后追溯?
    你喜欢用什么工具跟踪需求?
    你怎么看待需求变化?它是好是坏?给出你的理由。
    你怎样研究需求,发现需求?有哪些资源可以用到?
    你怎么给需求制定优先级?有哪些技术?
    在需求过程中,用户、客户、开发人员各自的职责是什么?
    你怎么对待不完整或是令人费解的需求?
    功能设计

    在功能设计中有哪些隐喻?给出几个成功的例子。
    如果有些功能的执行时间很长,怎么能让用户感觉不到太长的等待?
    如果用户必须要在一个很小的区域内,从一个常常的列表中选择多个条目,你会用什么控件?
    有哪些方法可以保证数据项的完整?
    建立系统原型有哪些技术?
    应用程序怎样建立对用户行为的预期?给出一些例子。
    如何入手设计一组数量庞大而又复杂的特性,你能举出一些设计思路吗?
    有一个列表,其中有10个元素,每个元素都有20个字段可以编辑,你怎样设计这种情况?如果是1000个元素,每个元素有3个字段呢?
    用不同的颜色对一段文本中的文字标记高亮,这种做法有什么问题?
    Web环境和Windows环境各有些什么限制?
    技术设计

    什么是低耦合和高聚合?封装原则又是什么意思?
    在Web应用中,你怎样避免几个人编辑同一段数据所造成的冲突?
    你知道设计模式吗?你用过哪些设计模式?在什么场合下用的?
    是否了解什么是无状态的业务层?长事务如何与之相适应?
    在搭建一个架构,或是技术设计时,你用过几种图?
    在N层架构中都有哪些层?它们各自的职责是什么?
    有哪些方法可以确保架构中数据的正确和健壮?
    面向对象设计和面向组件设计有哪些不同之处?
    怎样在数据库中对用户授权、用户配置、权限管理这几项功能建模?
    怎样按照等级制度给动物王国(包括各种物种和各自的行为)建模?
    程序设计

    你怎样保证你的代码可以处理各种错误事件?
    解释一下什么是测试驱动开发,举出极限编程中的一些原则。
    看别人代码的时候,你最关心什么地方?
    什么时候使用抽象类,什么时候使用接口?
    除了IDE以外,你还喜欢哪些必不可少的工具?
    你怎么保证代码执行速度快,而又不出问题?
    什么时候用多态,什么时候用委派?
    什么时候使用带有静态成员的类,什么时候使用单例?
    你在代码里面怎么提前处理需求的变化?给一些例子。
    描述一下实现一段代码的过程,从需求到最终交付。
    算法

    怎样知道一个数字是不是2的乘方?怎样判断一个数是不是奇数?
    怎样找出链表中间的元素?
    怎样改变10,000个静态HTML页面中所有电话号码的格式?
    举出一个你所用过的递归的例子。
    在散列表和排序后的列表中找一个元素,哪个查找速度最快?
    不管是书、杂志还是网络,你从中所学到的最后一点算法知识是什么?
    怎样把字符串反转?你能不用临时的字符串么?
    你愿意用什么类型的语言来编写复杂的算法?
    有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
    你知道“旅行商问题(Traveling Salesman Problem)”么?
    数据结构

    怎样在内存中实现伦敦地铁的结构?
    怎样以最有效的方式在数据库中存储颜色值?
    队列和堆栈区别是什么?
    用堆或者栈存储数据的区别是什么?
    怎样在数据库中存储N维向量?
    你倾向于用哪种类型的语言编写复杂的数据结构?
    21的二进制值是什么?十六制值呢?
    不管是书、杂志还是网络,你从中所学到的最后一点数据结构的知识是什么?
    怎样在XML文档中存储足球比赛结果(包括队伍和比分)?
    有哪些文本格式可以保存Unicode字符?
    测试

    什么是回归测试?怎样知道新引入的变化没有给现有的功能造成破坏?
    如果业务层和数据层之间有依赖关系,你该怎么写单元测试?
    你用哪些工具测试代码质量?
    在产品部署之后,你最常碰到的是什么类型的问题?
    什么是代码覆盖率?有多少种代码覆盖率?
    功能测试和探索性测试的区别是什么?你怎么对网站进行测试?
    测试套件、测试用例、测试计划,这三者之间的区别是什么?你怎么组织测试?
    要对电子商务网站做冒烟测试,你会做哪些类型的测试?
    客户在验收测试中会发现不满意的东西,怎样减少这种情况的发生?
    你去年在测试和质量保证方面学到了哪些东西?
    维护

    你用哪些工具在维护阶段对产品进行监控?
    要想对一个正在产品环境中被使用的产品进行升级,该注意哪些重要事项?
    如果在一个庞大的文件中有错误,而代码又无法逐步跟踪,你怎么找出错误?
    你怎样保证代码中的变化不会影响产品的其他部分?
    你怎样为产品编写技术文档?
    你用过哪些方式保证软件产品容易维护?
    怎样在产品运行的环境中进行系统调试?
    什么是负载均衡?负载均衡的方式有哪些种?
    为什么在应用程序的生命周期中,软件维护费用所占的份额最高?
    再造工程(re-engineering)和逆向工程(reverse engineering)的区别是什么?
    配置管理

    你知道配置管理中基线的含义么?怎样把项目中某个重要的时刻冻结?
    你一般会把哪些东西纳入版本控制?
    怎样可以保证团队中每个人都知道谁改变了哪些东西?
    Tag和Branch的区别是什么?在什么情况下该使用tag,什么时候用branch?
    怎样管理技术文档——如产品架构文档——的变化?
    你用什么侗剧管理项目中所有数字信息的状态?你最喜欢哪种工具?
    如果客户想要对一款已经发布的产品做出变动,你怎么处理?
    版本管理和发布管理有什么差异?
    对文本文件的变化和二进制文件的变化进行管理,这二者有什么不同?
    同时处理多个变更请求,或是同时进行增量开发和维护,这种事情你怎么看待?
    项目管理

    范围、时间、成本,这三项中哪些是可以由客户控制的?
    谁该对项目中所要付出的一切做出估算?谁有权设置最后期限?
    减少交付的次数,或是减少每个每个交付中的工作量,你喜欢哪种做法?
    你喜欢用哪种图来跟踪项目进度?
    迭代和增量的区别在哪里?
    试着解释一下风险管理中用到的实践。风险该如何管理?
    你喜欢任务分解还是滚动式计划?
    你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作?
    DSDM、Prince2、Scrum,这三者之间有哪些区别?
    如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?

Open Toolbar