生活需要执行力,山不过来,我就过去

发布新日志

  • ARP

    2007-12-25 14:36:45

    ARP协议

    ARPAddress Resolution Protocol的简写,中文名字是地址解析协议。它只能在局域网内使用。

    ARP是位于IP层的一个协议,它的作用在于把IP地址解析为物理地址。物理地址的例子是以太网和令牌环网中的48位的MAC地址,它被写入到装在主机或者路由器中的网络接口卡NIC上。

    IP地址是一个逻辑地址,用于网络层,来标识网络中的每一个主机,32位长度,可以被修改和改变。而MACMedia Access Control)地址是一个48的地址,它用于数据链路层,在物理层面上标识着网络上的主机。它被固化到网络适配器里面的ROM里面,是不能被修改的。

    在任何时候,当主机或者路由器有数据报要发送给另一个主机或者路由器时,它必须有接收端的逻辑地址(IP地址)。但是IP数据报必须封装成帧才能通过物理网络。这就表示发送端必须要有接收端的物理地址。因此需要有从逻辑地址到物理地址的映射。

    任何时候当一个主机或者路由器需要找出这个网络上的另一台主机或路由器的物理地址时,它就发送ARP查询分组,这个分组包括发送端的IP地址和物理地址,以及接收端的IP地址。查询就在此网络上进行广播。在此网络上的每一个主机或者路由器都接收和处理这个ARP查询分组,但是只有目的端才能识别ARP查询分组的IP地址,并发回ARP响应分组。这个响应分组包含接收端的IP地址和物理地址。这个分组采用单播直接发送给查询者。

    ARP的分组格式:

    硬件类型(16)

    协议类型(16)

    硬件长度(8)

    协议长度(8)

    操作  请求1,回答2

    发送站硬件地址(例如对以太网是6个字节)

    发送站协议地址(例如,对IP4个字节)

    目标硬件地址(例如,对以太网的6字节,在请求报文中不填入)

    目标协议地址(例如,对IP地址是4字节)

     

    §  硬件类型:定义运行ARP的网络的类型。每个局域网基于其类型被指派一个整数值,例如以太网是1.ARP可以用在任何网络上

    §  协议类型:用来定义协议的类型。例如,对IPv4协议,这个值是080016

    §  硬件长度:定义以字节为单位的物理地址的长度。对以太网,这个值是6

    §  协议长度:定义以字节为单位的逻辑地址长度。对IPv4协议,这个值是4IPv6,是6

     

    ARP相关联的另一个协议是RARP,逆地址解析协议。负责把物理地址解析为逻辑地址。

     

    参考资料:TCP/IP协议族(第3版)

    作者:Behrouz A.Forouzan  Sophia Chung Fegan

    翻译:谢希仁 等

  • Code Coverage

    2007-11-29 15:47:01

    Code Coverage(from wikipedia)

    This article defines "Code Coverage" and gives the main forms of coverage criteria. You can go to http://en.wikipedia.org/wiki/Code_coverage to visit the origianl. IP address of china can access this site. You have to find a valid oversea proxy for your IE.

    Code coverage is a measure used in software testing. It describes the degree to which the source code of a program has been tested. It is a form of testing that looks at the code directly and as such comes under the heading of white box testing.

    Code coverage techniques were amongst the first techniques invented for systematic software testing. The first published reference was by Miller and Maloney in Communications of the ACM in 1963.

    Coverage criteria

    To measure how well the program is exercised by a test suite, one or more coverage criteria are used. There are a number of coverage criteria, the main ones being:

    *  Function coverage - Has each function in the program been executed?

    *  Statement coverage - Has each line of the source code been executed?

    *  Condition coverage - Has each evaluation point (such as a true/false decision) been executed?

    *  Path coverage - Has every possible route through a given part of the code been executed?

    *  Entry/exit coverage - Has every possible call and return of the function been executed?

    Safety-critical applications are often required to demonstrate that testing achieves 100% of some form of code coverage.

    Some of the coverage criteria above are connected. For instance, path coverage implies condition, statement and entry/exit coverage. Statement coverage does not imply condition coverage, as the code (in the C programming language) below shows:

    void foo(int bar)
    {
        printf("This is "); 
        if (bar <= 0)
        {
            printf("not ");
        }
        printf("a positive integer.\n");
        return;
    }

    If the function foo were called with variable bar set to −1, statement coverage would be achieved. Condition coverage, however, would not.

    Full path coverage, of the type described above, is usually impractical or impossible. Any module with a succession of n decisions in it can have up to 2n paths within it; loop constructs can result in an infinite number of paths. Many paths may also be infeasible, in that there is no input to the program under test that can cause that particular path to be executed. However, a general-purpose algorithm for identifying infeasible paths has been proven to be impossible (such an algorithm could be used to solve the halting problem). Techniques for practical path coverage testing instead attempt to identify classes of code paths that differ only in the number of loop executions, and to achieve "basis path" coverage the tester must cover all the path classes.

    Code coverage in practice

    Usually the source code is instrumented and run through a series of tests. The resulting output is then analysed to see what areas of code have not been exercised, and the tests are updated to include these areas as necessary. Combined with other code coverage methods the aim is to develop a rigorous yet manageable set of regression tests.

    Code coverage is ultimately expressed as a percentage, as in "We have tested 67% of the code." The meaning of this depends on what form(s) of code coverage have been used, as 67% path coverage is more comprehensive than 67% statement coverage.

    The value of code coverage as a measure of test quality is debated (see external links).

     

  • Symbolic link and hard link

    2007-11-14 16:32:41

    This article show the difference between symbolic link (soft link) and hard link so well.

    Click http://linuxgazette.net/105/pitcher.html to get the original.

    Q & A: The difference between hard and soft links

                                                                 By Lew Pitcher

    I participate in about 30 usenet newsgroups, and in a virtual LUG, and a number of questions keep coming up. I've answered a few of these questions often enough to have 'canned' an answer, which I modify, depending on the circumstances.

    Here's one, now...

    Q: Can someone give me a simple explanation of the difference between a soft link and a hard link? The documentation I've read mention these links but make no strong explanations of their meaning and how/when to use them. Thanks!

    A: OK, I'll give it a try...

    Unix files consist of two parts: the data part and the filename part.

    The data part is associated with something called an 'inode'. The inode carries the map of where the data is, the file permissions, etc. for the data.

                                   .---------------> ! data ! ! data ! etc
                                  /                  +------+ !------+
            ! permbits, etc ! data addresses !
            +------------inode---------------+
    
    

    The filename part carries a name and an associated inode number.

                             .--------------> ! permbits, etc ! addresses !
                            /                 +---------inode-------------+
            ! filename ! inode # !
            +--------------------+
    

    More than one filename can reference the same inode number; these files are said to be 'hard linked' together.

            ! filename ! inode # !
            +--------------------+
                            \
                             >--------------> ! permbits, etc ! addresses !
                            /                 +---------inode-------------+
            ! othername ! inode # !
            +---------------------+
    

    On the other hand, there's a special file type whose data part carries a path to another file. Since it is a special file, the OS recognizes the data as a path, and redirects opens, reads, and writes so that, instead of accessing the data within the special file, they access the data in the file named by the data in the special file. This special file is called a 'soft link' or a 'symbolic link' (aka a 'symlink').

            ! filename ! inode # !
            +--------------------+
                            \
                             .-------> ! permbits, etc ! addresses !
                                       +---------inode-------------+
                                                          /
                                                         /
                                                        /
        .----------------------------------------------'
       ( 
        '-->  !"/path/to/some/other/file"! 
              +---------data-------------+
                      /                      }
        .~ ~ ~ ~ ~ ~ ~                       }-- (redirected at open() time)
       (                                     }
        '~~> ! filename ! inode # !
             +--------------------+
                             \
                              '------------> ! permbits, etc ! addresses !
                                             +---------inode-------------+
                                                                /
                                                               /
         .----------------------------------------------------'
        (
         '->  ! data !  ! data ! etc.
              +------+  +------+ 
    
    

    Now, the filename part of the file is stored in a special file of its own along with the filename parts of other files; this special file is called a directory. The directory, as a file, is just an array of filename parts of other files.

    When a directory is built, it is initially populated with the filename parts of two special files: the '.' and '..' files. The filename part for the '.' file is populated with the inode# of the directory file in which the entry has been made; '.' is a hardlink to the file that implements the current directory.

    The filename part for the '..' file is populated with the inode# of the directory file that contains the filename part of the current directory file. '..' is a hardlink to the file that implements the immediate parent of the current directory.

    The 'ln' command knows how to build hardlinks and softlinks; the 'mkdir' command knows how to build directories (the OS takes care of the above hardlinks).

    There are restrictions on what can be hardlinked (both links must reside on the same filesystem, the source file must exist, etc.) that are not applicable to softlinks (source and target can be on seperate file systems, source does not have to exist, etc.). OTOH, softlinks have other restrictions not shared by hardlinks (additional I/O necessary to complete file access, additional storage taken up by softlink file's data, etc.)

    In other words, there's tradeoffs with each.

    Now, let's demonstrate some of this...

    ln in action

    Let's start off with an empty directory, and create a file in it

    ~/directory $ ls -lia 
    total 3
      73477 drwxr-xr-x   2 lpitcher users        1024 Mar 11 20:16 .
      91804 drwxr-xr-x  29 lpitcher users        2048 Mar 11 20:16 ..
    
    ~/directory $ echo "This is a file" >basic.file
    
    ~/directory $ ls -lia 
    total 4
      73477 drwxr-xr-x   2 lpitcher users        1024 Mar 11 20:17 .
      91804 drwxr-xr-x  29 lpitcher users        2048 Mar 11 20:16 ..
      73478 -rw-r--r--   1 lpitcher users          15 Mar 11 20:17 basic.file
    
    ~/directory $ cat basic.file
    This is a file
    

    Now, let's make a hardlink to the file

       
    ~/directory $ ln basic.file hardlink.file
    
    ~/directory $ ls -lia 
    total 5
      73477 drwxr-xr-x   2 lpitcher users        1024 Mar 11 20:20 .
      91804 drwxr-xr-x  29 lpitcher users        2048 Mar 11 20:18 ..
      73478 -rw-r--r--   2 lpitcher users          15 Mar 11 20:17 basic.file
      73478 -rw-r--r--   2 lpitcher users          15 Mar 11 20:17 hardlink.file
    
    ~/directory $ cat hardlink.file
    This is a file
    

    We see that:

    1. hardlink.file shares the same inode (73478) as basic.file
    2. hardlink.file shares the same data as basic.file

    If we change the permissions on basic.file:

    ~/directory $ chmod a+w basic.file
    
    ~/directory $ ls -lia 
    total 5
      73477 drwxr-xr-x   2 lpitcher users        1024 Mar 11 20:20 .
      91804 drwxr-xr-x  29 lpitcher users        2048 Mar 11 20:18 ..
      73478 -rw-rw-rw-   2 lpitcher users          15 Mar 11 20:17 basic.file
      73478 -rw-rw-rw-   2 lpitcher users          15 Mar 11 20:17 hardlink.file
    

    then the same permissions change on hardlink.file.

    The two files (basic.file and hardlink.file) share the same inode and data, but have different file names.

    Let's now make a softlink to the original file:

    ~/directory $ ln -s basic.file softlink.file
    
    ~/directory $ ls -lia 
    total 5
      73477 drwxr-xr-x   2 lpitcher users        1024 Mar 11 20:24 .
      91804 drwxr-xr-x  29 lpitcher users        2048 Mar 11 20:18 ..
      73478 -rw-rw-rw-   2 lpitcher users          15 Mar 11 20:17 basic.file
      73478 -rw-rw-rw-   2 lpitcher users          15 Mar 11 20:17 hardlink.file
      73479 lrwxrwxrwx   1 lpitcher users          10 Mar 11 20:24 softlink.file -> basic.file
    
    ~/directory $ cat softlink.file
    This is a file
    

    Here, we see that although softlink.file accesses the same data as basic.file and hardlink.file, it does not share the same inode (73479 vs 73478), nor does it exhibit the same file permissions. It does show a new permission bit: the 'l' (softlink) bit.

    If we delete basic.file:

    ~/directory $ rm basic.file
    
    ~/directory $ ls -lia 
    total 4
      73477 drwxr-xr-x   2 lpitcher users        1024 Mar 11 20:27 .
      91804 drwxr-xr-x  29 lpitcher users        2048 Mar 11 20:18 ..
      73478 -rw-rw-rw-   1 lpitcher users          15 Mar 11 20:17 hardlink.file
      73479 lrwxrwxrwx   1 lpitcher users          10 Mar 11 20:24 softlink.file -> basic.file
    

    then we lose the ability to access the linked data through the softlink:

    ~/directory $ cat softlink.file
    cat: softlink.file: No such file or directory
    

    However, we still have access to the original data through the hardlink:

    ~/directory $ cat hardlink.file
    This is a file
    

    You will notice that when we deleted the original file, the hardlink didn't vanish. Similarly, if we had deleted the softlink, the original file wouldn't have vanished.

    A further note with respect to hardlink files

    When deleting files, the data part isn't disposed of until all the filename parts have been deleted. There's a count in the inode that indicates how many filenames point to this file, and that count is decremented by 1 each time one of those filenames is deleted. When the count makes it to zero, the inode and its associated data are deleted.

    By the way, the count also reflects how many times the file has been opened without being closed (in other words, how many references to the file are still active). This has some ramifications which aren't obvious at first: you can delete a file so that no "filename" part points to the inode, without releasing the space for the data part of the file, because the file is still open.

    Have you ever found yourself in this position: you notice that /var/log/messages (or some other syslog-owned file) has grown too big, and you

         rm /var/log/messages
         touch /var/log/messages
    

    to reclaim the space, but the used space doesn't reappear? This is because, although you've deleted the filename part, there's a process that's got the data part open still (syslogd), and the OS won't release the space for the data until the process closes it. In order to complete your space reclamation, you have to

         kill -SIGHUP `cat /var/run/syslogd.pid`
    

    to get syslogd to close and reopen the file.

    You can use this to your advantage in programs: have you ever wondered how you could hide a temporary file? Well, you could do the following:

         {
            FILE *fp;
    
            fp = fopen("some.hidden.file","w");
            unlink("some.hidden.file"); /* deletes the filename part */
    
            /* some.hidden.file no longer has a filename and is truely hidden */
            fprintf(fp,"This data won't be found\n"); /* access the data part */
            /*etc*/
            fclose(fp); /* finally release the data part */
         }
    

     

  • 绝望中寻找希望

    2007-11-13 23:09:34

    现在的情况很不妙,没有技术优势,没有项目优势,也没有语言优势,当然也没有RMB。无论想去哪里,都感到底气不足,都能看到高高的门槛。留在这里?不!慢慢磨灭的激情,慢慢消失的灵气,慢慢丧失思考能力,慢慢安于现状...这一切让我感到是在慢慢自杀...我的宝贵的青春!

    进,无门;退,无路。

    我将何处何从...

    突然想起新东方的名言:绝望中寻找希望,人生终极辉煌。

    何况现在还不至于绝望。可以没有技术,可以没有经验,但千万不能没有希望,不能没有梦想!

    加油,我!

  • Bug life cycle

    2007-11-07 16:13:14

    从Bugzilla网站上找到的一个有关bug生命周期的图片

    http://www.bugzilla.org/

  • IP地址的分类

    2007-10-11 18:15:58

    IP地址的分类

    IP地址的编址方法共经历过3个历史阶段

    1.    分类的IP地址:这是最基本的编址方法(RFC1821

    2.    子网的划分【RFC950

    3.    构成超网

          所谓分类的IP地址,就是将IP地址分为若干个固定的类,每个类都有两个部分组成:Net-IDHost-ID。可以这么看待一个IP地址:IP地址 = Net-ID + Host-IDNet-ID是网络号,即网络的编号。Host-ID指主机的编号。

           IP地址可以分为5类: A-E类。不同的类的Net-IDHost-ID是不同的。A-C类地址是最常用的,D类地址是组播地址,E类地址留作后用。

            我们都知道IP地址是32位的一个地址,为了将某个IP地址归类,权威机构作了一些规定,好让人们或者是路由器明白这是个什么类型的地址。

    • A类地址的第一位是0Net-ID8bitHost-ID24bit
    • B类地址的前两位是10Net-ID16bitHost-ID16bit
    • C类地址的前3位是110Net-ID24bitHost-ID8bit
    • D类地址的前4位是1110
    • E类地址的钱5位是11110

    从分类这个过程可以看出来,不同类型的IP地址会有不同的Net-IDHost-ID。或者说,给定一个IP地址,可以知道它属于那个类型。给定某个类型的IP地址,可以推断出它的网络号范围。

    网络类别

    第一个网络号

    最后一个网络号

    A

    1

    126

    B

    128.0

    191.255

    C

    192.0

    223.255.255

     

  • 国外优秀测试站点链接

    2007-07-15 22:51:18

     

    测试资源:国外优秀测试站点链接51Testing软件测试网4[JeN;]


    w

    转载自   测试者家园 http://www.51testing.com/?19940.Q[1]_#\"D


    dy Tk2281851Testing软件测试网:q0p ^-m| ^[1]j
    http://bdonline.sqe.com/
    一个关于网站测试方面的网页,对这方面感兴趣的人可以参考 51Testing软件测试网[1]ia1K m"w[1]M(?
    http://citeseer.nj.nec.com/
    一个丰富的电子书库,内容很多,而且提供著作的相关文档参考和下载,是作者非常推荐的一个资料参考网站
    pkp2w‑v DdT22818
    http://groups.yahoo.com/group/LoadRunner
    性能测试工具LoadRunner的一个论坛 51Testing软件测试网_/`*R4|1])JcI
    http://groups.yahoo.com/grorp/testing-paperannou-nce/messages
    提供网站上当前发布的软件测试资料列表 51Testing软件测试网gq#RNj
    http://satc.gsfc.nasa.gov/homepage.html
    软件保证中心是美国国家航天局(NASA)投资设立的一个软件可靠性和安全性研究中心,研究包括了度量、工具、风险等各个方面
    )f1T;V"o'?S4X22818
    http://seg.iit.nrc.ca/English/index.html
    加拿大的一个研究软件工程质量方面的组织,可以提供研究论文的下载
    +W[c~‑@+n22818
    http://sepo.nosc.mil
    内容来自美国SAN DIEGO的软件工程机构(Sofrware Engineering Process Office)主页,包括软件工程知识方面的资料
    $K9Mb7^H2]#iNFq22818
    http://www.asq.org/
    是世界上最大的一个质量团体组织之一,有着比较丰富的论文资源,不过是收费的
    Z"J)g
    ]/pM],\22818
    http://www.automated-testing.com/
    一个自动化软件测试和自然语言处理研究页面,属于个人网页,上面有些资源可供下载
    "].}\HOP
    lv_22818
    http://www.benchmarkresources.com/
    提供有关标杆方面的资料,也有一些其它软件测试方面的资料
    M{#Y%V7}5u8`22818
    http://www.betasoft.com/
    包含一些流行测试工具的介绍、下载和讨论,还提供测试方面的资料 51Testing软件测试网&i5ve9J2x9z?
    http://www.brunel.ac.uk/~csstmmh2/vast/home.html VASTT
    研究组织,主要从事通过切片技术、测试技术和转换技术来验证和分析系统,对这方面技术感兴趣的人是可以在这里参考一些研究的项目及相关的一些主题信息
    *K ?c(X0q/gM3m;? A22818
    http://www.cc.gatech.edu/aristotle/ Aristole
    研究组织,研究软件系统分析、测试和维护等方面的技术,在测试方面的研究包括了回归测试、测试套最小化、面向对象软件测试等内容,该网站有丰富的论文资源可供下载 51Testing软件测试网G$k3tF2Lk4Q
    http://www.computer.org/ IEEE
    是世界上最悠久,也是在最大的计算机社会团体,它的电子图书馆拥有众多计算机方面的论文资料,是研究计算机方面的一个重要资源参考来源
    q(O:D9?|22818
    http://www.cs.colostate.edu/testing/
    可靠性研究网站,有一些可靠性方面的论文资料 51Testing软件测试网#r#aa^5Q%m,]3d3u
    http://www.cs.york.ac.uk/testsig/
    约克大学的测试专业兴趣研究组网页,有比较丰富的资料下载,内容涵盖了测试的多个方面,包括测试自动化、测试数据生成、面向对象软件测试、验证确认过程等
    tW)Q,r/e/M22818
    http://www.csr.ncl.ac.uk/index.html
    学校里面的一个软件可靠性研究中心,提供有关软件可靠性研究方面的一些信息和资料,对这方面感兴趣的人可以参考 51Testing软件测试网| iZ!m"[N0J3yg
    http://www.dcs.shef.ac.uk/research/groups/vt/
    学校里的一个验证和测试研究机构,有一些相关项目和论文可供参考
    `7{L%u6H/sZ22818
    http://www.esi.es/en/main/ ESI
    (欧洲软件组织),提供包括CMM评估方面的各种服务 51Testing软件测试网gwO/M[&Y&uvZ[1]ms
    http://www.europeindia.org/cd02/index.htm
    一个可靠性研究网站,有可靠性方面的一些资料提供参考
    ,i4qoWA22818
    http://www.fortest.org.uk/
    一个测试研究网站,研究包括了静态测试技术(如模型检查、理论证明)和动态测试(如测试自动化、特定缺陷的检查、测试有效性分析等) 51Testing软件测试网@gLno­s‑s
    http://www.grove.co.uk/
    一个有关软件测试和咨询机构的网站,有一些测试方面的课程和资料供下载 51Testing软件测试网)Ta&Os,~
    http://www.hq.nasa.gov/office/codeq/relpract/prcls-23.htm NASA
    可靠性设计实践资料
    1Qt.O4v m4?8[22818
    http://www.io.com/~wazmo/ Bret Pettichord
    的主页,他的一个热点测试页面连接非常有价值,从中可以获得相当大的测试资料,很有价值
    3G2_@x0_
    o%p)g22818
    http://www.iso.ch/iso/en/ISOOnline.frontpage
    国际标准化组织,提供包括ISO标准系统方面的各类参考资料

    XmU
    a6L W5X22818
    http://www.isse.gmu.edu/faculty/ofut/classes/ 821-ootest/papers.html
    提供面向对象和基于构架的测试方面著作下载,对这方面感兴趣的读者可以参考该网站,肯定有价值 51Testing软件测试网|0mm+h)U(Q
    http://www.ivv.nasa.gov/ NASA
    设立的独立验证和确认机构,该机构提出了软件开发的全面验证和确认,在此可以获得这方面的研究资料 51Testing软件测试网3h)sI2Y$zv i:N }
    http://www.kaner.com/
    著名的测试专家Cem Kanner的主页,里面有许多关于测试的专题文章,相信对大家都有用。Cem Kanner关于测试的最著名的书要算Testing Software,这本书已成为一个测试人员的标准参考书 51Testing软件测试网$pa0S{Ml0O
    http://www.library.cmu.edu/Re-search/Engineer- ingAndSciences/CS+ECE/index.html
    卡耐基梅陇大学网上图书馆,在这里你可以获得有关计算机方面各类论文资料,内容极其庞大,是研究软件测试不可获取的资料来源之一 51Testing软件测试网K
    vU ZS!b
    [1]K,R^(P

    http://www.loadtester.com/
    一个性能测试方面的网站,提供有关性能测试、性能监控等方面的资源,包括论文、论坛以及一些相关链接 51Testing软件测试网P"l\ gV
    Q

    http://www.mareinig.ch/mt/index.html
    关于软件工程和应用开发领域的各种免费的实践知识、时事信息和资料文件下载,包括了测试方面的内容 51Testing软件测试网 j
    ^f­p"ev7Y{8J2O

    http://www.mtsu.ceu/-storm/
    软件测试在线资源,包括提供目前有哪些人在研究测试,测试工具列表连接,测试会议,测试新闻和讨论,软件测试文学(包括各种测试杂志,测试报告),各种测试研究组织等内容
    1`;[&tJ,g_22818
    http://www.psqtcomference.com/
    实用软件质量技术和实用软件测试技术国际学术会议宣传网站,每年都会举行两次 51Testing软件测试网"F3h V8R$N]~1d$e!D
    http://www.qacity.com/front.htm
    测试工程师资源网站,包含各种测试技术及相关资料下载 51Testing软件测试网c[0w
    v+_)v

    http://www.qaforums.com/
    关于软件质量保证方面的一个论坛,需要注册
    7X%^ p&i\4N22818
    http://www.qaiusa.com/ QAI
    是一个提供质量保证方面咨询的国际著名机构,提供各种质量和测试方面证书认证 51Testing软件测试网C-D+ks-] RD
    http://www.qualitytree.com/
    一个测试咨询提供商,有一些测试可供下载,有几篇关于缺陷管理方面的文章值得参考
    +T
    RF0q&{0a
    q&E}22818
    http://www.rational.com/ IBM Rational
    的官方网站,可以在这里寻找测试方面的工具信息。IBM Rational提供测试方面一系列的工具,比较全面 51Testing软件测试网0\c9E a3Z0h r5@
    http://rexblackconsulting.com/Pages/publicat-ions.htm 51Testing
    软件测试网&O x:X O?}
    Rex Black
    的个人主页,有一些测试和测试管理方面的资料可供下载
    (Tqx;T1um+}&[22818
    http://www.riceconsulting.com/
    一个测试咨询提供商,有一些测试资料可供下载,但不多
    ){?v jp]\22818
    http://www.satisfice.com/
    包含James Bach关于软件测试和过程方面的很多论文,尤其在启发式测试策略方面值得参考 51Testing软件测试网} Q(t%i d#]y
    http://www.satisfice.com/seminars.shtml
    一个黑盒软件测试方面的研讨会,主要由测试专家Cem KanarJames Bach组织,有一些值得下载的资料
    %R7w;YH'?6_1_22818
    http://www.sdmagazine.com/
    软件开发杂志,经常会有一些关于测试方面好的论文资料,同时还包括了项目和过程改进方面的课题,并且定期会有一些关于质量和测试方面的问题讨论
    ]6kj
    ?2[z"{­A.q%p ~22818
    http://www.sei.cmu.edu/
    著名的软件工程组织,承担美国国防部众多软件工程研究项目,在这里你可以获俄各类关于工程质量和测试方面的资料。该网站提供强有力的搜索功能,可以快速检索到你想要的论文资料,并且可以免费下载 51Testing软件测试网Q6vs/VcYI
    http://www.soft.com/Institute/HotList/
    提供了网上软件质量热点连接,包括:专业团体组织连接、教育机构连接、商业咨询公司连接、质量相关技术会议连接、各类测试技术专题连接等 51Testing软件测试网!`t6z‑LV$R*cO&@
    http://www.soft.com/News/QTN-Online/
    质量技术时事,提供有关测试质量方面的一些时事介绍信息,对于关心测试和质量发展的人士来说是很有价值的 51Testing软件测试网W&J­aEkkq'c2C
    http://www.softwaredioxide.com/
    包括软件工程(CMM,CMMI,项目管理)软件测试等方面的资源 51Testing软件测试网g6@%qX&[;c[1]ubH:q!_8]
    http://www.softwareqatest.com/
    软件质量/测试资源中心。该中心提供了常见的有关测试方面的FAQ资料,各质量/测试网站介绍,各质量/测试工具介绍,各质量/策划书籍介绍以及与测试相关的工作网站介绍
    +P&el F[1]y${5Sp)[22818http://www.softwaretestinginstitute.com
    一个软件测试机构,提供软件质量/测试方面的调查分析,测试计划模板,测试WWW的技术,如何获得测试证书的指导,测试方面书籍介绍,并且提供了一个测试论坛 51Testing软件测试网S9U'[­}9?(w/M‑n
    http://www.sqatester.com/index.htm
    一个包含各种测试和质量保证方面的技术网站,提供咨询和培训服务,并有一些测试人员社团组织,特色内容是缺陷处理方面的技术
    M*w$}6B'e22818
    http://www.sqe.com/
    一个软件质量工程服务性网站,组织软件测试自动化、STAR-EASESTARWEST等方面的测试学术会议,并提供一些相关信息资料和课程服务 51Testing软件测试网 o][1]s7r3y.~E
    http://www.stickyminds.com/
    提供关于软件测试和质量保证方面的当前发展信息资料,论文等资源 51Testing软件测试网EDH(D-R'P9NT y-^'M'R
    http://www.stqemagazine.com/
    软件策划和质量工程杂志,经常有一些好的论文供下载,不过数量较少,更多地需要通过订购获得,内容还是很有价值的
    .g[1]a1\ah22818http://www.tantara.ab.ca/
    软件质量方面的一个咨询网站,有过程改进方面的一些资料提供 51Testing软件测试网,W
    S6\
    }9[$B

    http://www.tcse.org/ IEEE
    的一个软件工程技术委员会,提供技术论文下载,并有一个功能强大的分类下载搜索功能,可以搜索到测试类型、测试管理、 测试分析等各方面资料

    r9T V'_5^)n&N22818
    http://www.testing.com/
    测试技术专家Brain Marick的主页,包含了Marick 研究的一些资料和论文,该网页提供了测试模式方面的资料,值得研究。总之,如果对测试实践感兴趣,该网站一定不能错过 51Testing软件测试网"o‑^Yo q'{-Q9D A E^
    http://www.testingcenter.com/
    有一些测试方面的课程体系,有一些价值 51Testing软件测试网;N/iuAt/L)H
    K.u8}

    http://www.testingconferences.com/asiastar/home
    著名的AsiaStar测试国际学术会议官方网站,感兴趣的人一定不能错过 51Testing软件测试网#a)Je~`
    http://www.testingstuff.com/ Kerry Zallar
    的个人主页,提供一些有关培训、工具、会议、论文方面的参考信息 51Testing软件测试网|6aq‑Kmm"e Q8A
    ?

    http://www-sqi.cit.gu.edu.au/
    软件质量机构,有一些技术资料可以供下载,包括软件产品质量模型、再工程、软件质量改进等 51Testing软件测试网*c[1]E)~3i/V9n‑F

     

  • 等价类的划分

    2007-07-15 22:31:25

                       等价类划分

                                                                     ---读《软件测试艺术》

    等价类划分是一种典型的黑盒测试方法。

    测试方法大致可以分为白盒测试和黑盒测试两类。常用的白盒测试方法有:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,多重条件覆盖。多重条件覆盖最为严格。常用的黑盒测试方法有:等价类划分,边界值分析,因果图分析和错误猜测。

    我们都知道,对程序的穷举输入测试是无发实现的。所以,当我们测试某个程序时,我们就被限制在从所有可能的输入中找出某个正确的最小的子集。等价类的划分就是基于这样一种思想。

    使用等价划分方法设计测试用例时有两个步骤:1. 确定等价类;2. 生成测试用例。

    1.         确定等价类

    确定等价类是选取每一个输入条件(通常表现为规格说明中的一个句子或短语)将其划分为若干个组。这里确定了两类等价类:有效等价类和无效等价类。有效等价类代表对程序的有效输入,而无效等价类则代表着其它的任何可能的输入(所有不正确的输入都可以)。

    输入条件

    有效等价类

    无效等价类

    输入整数

    输入一个整数

    输入非整数,输入字母,输入空格,etc

     

    2.         生成测试用列

    l         为每个等价类(有效、无效的)设置一个不同的编号

    l         编写新的测试用例,尽可能多的覆盖那些尚未被覆盖的有效等价类,直到所有的有效测试类都被测试用例覆盖。这个步骤是个创造性的工作。

    l         编写新的测试用例,覆盖一个且仅一个尚未被覆盖的非有效测试用例,直到所有的非有效测试用例都被覆盖。

    注意第二点和第三点的区别,前者要求一个用例尽量多覆盖有效等价类,而后者要求一个用例只能覆盖一个非有效等价类。原因在于,某些特定的输入错误检查可能会屏蔽掉或者取代其他的错误输入。

     

     

数据统计

  • 访问量: 5821
  • 日志数: 8
  • 建立时间: 2007-07-12
  • 更新时间: 2007-12-25

RSS订阅

Open Toolbar