PMP ,专注于WEB功能测试、性能测试、安全测试的研究,从事全面质量管理工作。曾任多家公司测试经理、测试主管。在电子政务、银行、电商、跨境电商、直播电商领域工作多年,曾获得某龙头集团公司公测一等奖,曾任职某头部直播电商公司测试团队负责人,具有业务敏感性,擅长从0到1搭建测试团队,具有海外工作经历,以及质量管理体系搭建。邮箱:89233502@qq.com

发布新日志

  • 测试用例生成工具PICT的安装与使用 -亲测好用

    2021-06-07 21:00:48

    这个工具本人亲自用过,适用于多种组合--比如正交测试用例设计;

    PICT(Pairwise Independent Combinatorial Testing,成对独立组合
    测试)是微软开发的一款测试用例生成工具(生成配对测试用例的工具很多,感兴趣的可以参考http://www.pairwise.org/tools.asp的介绍),它可以生成测试用例和测试配置,其理论基础是成对测试技术(Pairwise Testing,之前有文章单独介绍过,在此不多介绍)。
      一、PICT安装
      通过官网链接?http://download.microsoft.com/do ... 76cc014b/pict33.msi下载安装包,然后一路点击next安装即可。
      安装成功后验证:打开cmd命令终端,输入pict显示如下即证明安装成功。

    图1 pict安装成功验证
      二、PICT使用
      1.建模
      PICT是一个命令行工具。在使用PICT生成用例前,需要准备好一个模型文件,PICT将会根据模型文件自动生成组合列表。根据配对测试基于的假设:模型文件中,每个测试点/维度都是正交的,且每个测试点/维度具有有限的影响因子。假如针对邮箱**功能使用PICT生成用例,**功能包含:用户名、密码、手机号、是否同意服务协议4个测试维度,每个测试维度所包含的有限影响因子如下表所示。
    表1 测试分析建模
      2.编辑模型文件
      根据建模结果,编辑模型文件,如下图所示:

    图2 模型文件
      3.运行模型文件
      打开cmd命令终端,运行pict test.txt>test.xls,将测试点组合结果输出到test.xls文件。结果如下图所示,共生成157个测试点,在原本13*12*5*2=1560个用例基础上,用例精减率达到90%:

    图3 pict执行结果
      4.约束条件
      在2、3中的例子,使用的是无约束条件pict模型。而在现实中,对于已经经历多个迭代的版本,可能有些组合条件已经测试,因此,可以在pict的模型文件中使用约束条件将之排除。如2、3例中,添加约束条件:“if [用户名] = "为空" or [密码] = "为空" then [手机号] <> "为空";“,表示如果“用户名”或“密码”为空时,“手机号”不为空。

    图4 添加约束条件的模型文件
      执行上述添加约束条件后的模型文件,生成test1.xls结果如下图所示,与无约束条件的图3想比,测试点数仍为157个,但测试点中不包括:“用户名”=“为空”,“手机号”=“为空”和“密码”=“为空”,“手机号”=“为空”这两例。

    图5 添加约束条件后pict执行结果
      三、效益
      PICT是使用较广的一种配对测试用例生成工具。对于多维度多因子的组合测试,使用PICT可以快速、有效地筛选出经过配对测试筛选后的组合,有助于测试人员节省测试要点整理时间和测试执行时间。
      四、FAQ
      1.pict执行模型文件报错,错误提示为乱码?
      答:pict仅仅支持ANSI和UTF8 ,此处保存为UTF8仍然乱码,则另存为ANSI就可以了。
      2.执行模型文件错误,提示没有定义参数值?
      答:模型文件中的冒号:和逗号,需要为英文字符。
      3.加入约束条件后执行文件,提示输入错误?
      答:约束条件字符串值用双引号而不是单引号。
  • 常用的功能测试方法

    2014-06-10 12:58:59

    功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:
    1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。
    2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。
    3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。
    4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.
    5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.
    6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.
    7.中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.
    8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致
    9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.
    10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.
    11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.
    12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.
    13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。
    14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.
    15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.
    16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.
    17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。
    18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*
    19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。
    20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.

  • 如何测试网页的登录页面

    2013-08-21 08:53:11


    具体需求: 有一个登录页面, 上面有2个textbox, 一个提交按钮。  请针对这个页面设计30个以上的test case.

      此题的考察目的: 面试者是否熟悉各种测试方法,是否有丰富的Web测试经验, 是否了解Web开发,以及设计Test case的能力

      这个题目还是相当有难度的, 一般的人很难把这个题目回答好。

      阅读目录

      功能测试(Function test)

      1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。

      2.输入错误的用户名或者密码,  验证登录会失败,并且提示相应的错误信息。

      3.登录成功后能否能否跳转到正确的页面

      4.用户名和密码,如果太短或者太长,应该怎么处理

      5.用户名和密码,中有特殊字符,和其他非英文的情况

      6.记住用户名的功能

      7.登陆失败后,不能记录密码的功能

      8.用户名和密码前后有空格的处理

      9.密码是否以星号显示

      界面测试(UI Test)

      1.布局是否合理,2个testbox 和一个按钮是否对齐

      2.testbox和按钮的长度,高度是否复合要求

      性能测试(performance test)

      1.打开登录页面,需要几秒

      2.输入正确的用户名和密码后,登录成功跳转到新页面,不超过5秒

      安全性测试(Security test)

      1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)

      2.用户名和密码是否通过加密的方式,发送给Web服务器

      3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript验证

      4.用户名和密码的输入框,应该屏蔽SQL 注入攻击

      5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)

      6.错误登陆的次数限制(防止暴力破解)

      可用性测试(Usability Test)

      1. 是否可以全用键盘操作,是否有快捷键

      2.输入用户名,密码后按回车,是否可以登陆

      兼容性测试(Compatibility Test)

      1.主流的浏览器下能否显示正常已经功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)

      2.不同的平台是否能正常工作,比如Windows, Mac

      3.移动设备上是否正常工作,比如Iphone, Andriod

      4.不同的分辨率

      软件辅助性测试 (Accessibility test)

      软件辅助功能测试是指测试软件是否向残疾用户提供足够的辅助功能

      1. 高对比度下能否显示正常 (视力不好的人使用)

  • 内存测试工具memtester

    2013-08-06 08:51:29

      Memtester是用户态工具,用于测试内存子系统的故障。非常方便,支持32位 或64位Unix-like系统。对于硬件开发开发者来说,memtester可以定位到物理地址。

      1. 安装

      下载地址http://pyropus.ca/software/memtester/

      获取memtester-4.2.2.tar.gz源码包。

    #tar –zxvf memtester-4.2.2.tar.gz
    #make
    #make install

      2.测试

      ./memtester [-p physaddrbase] <mem>[B|K|M|G] [loops]

      其中:

      Physaddrbase: 需要测试的物理地址;

      <mem>[B|K|M|G]:测试内存的大小;

      [loops]:测试次数

      案例:

    [root@RedHat memtester-4.2.2]# ./memtester -p 0x0a0000 4k 1
    memtester version 4.2.2 (32-bit)
    Copyright (C) 2010 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    pagesize is 4096
    pagesizemask is 0xfffff000
    want 0MB (4096 bytes)
    Loop 1/1:
    Stuck Address       : testing   0FAILURE: possible bad address line at physical address 0x000a0000.
    Skipping to next test...
    Random Value        : ok
    Compare XOR         : ok
    Compare SUB         : ok
    Compare MUL         : ok
    Compare DIV         : ok
    Compare OR          : ok
    Compare AND         : ok
    Sequential Increment: ok
    Solid Bits          : ok
    Block Sequential    : ok
    Checkerboard        : ok
    Bit Spread          : ok
    Bit Flip            : ok
    Walking Ones        : ok
    Walking Zeroes      : ok
    8-bit Writes        : ok
    16-bit Writes       : ok
    Done.
    [root@RedHat memtester-4.2.2]#
  • 系统权限测试用例

    2011-03-16 14:59:02

    1)、赋予一个人员相应的权限后,在界面上看此人员是否具有此权限,并以此人员身份登陆,验证权限设置是否正确(能否超出所给予的权限)
    2)、删除或修改已经登陆系统并正在进行操作的人员的权限,程序能否正确处理;
    3)、重新注册系统变更登陆身份后再登录,看程序是否能正确执行,具有权限是否正确;
    4)、在有工作组或角色管理的情况下,删除包含用户的工作组或角色,程序能否正确处理;
    5)、不同权限用户登录同一个系统,权限范围是否正确;
    6)、覆盖系统所有权限设定;
    7)、能否添加信息为空的用户(其中包括空用户名及空口令、空用户名非空口令、非空用户名及空口令);
    8)、能否添加长用户名及长口令,如果允许,新用户能否正确登录;
    9)、系统是否允许删除系统管理员这一特殊用户或修改系统管理员口令,删除或修改后系统的实际情况;
    10)、登录用户能否修改自己的权限;
    11)、添加用户(有标识或编号):标识相同,用户名不同;标识相同,用户名相同;标识不同,用户名相同;标识不同,用户名不同;
    12)、登录用户能否修改本人(或其他人)的信息,删除本人(或其他人);
    13)、修改用户的信息(包括权限,口令,基本信息等),对其他模块的影响;
    14)、修改用户信息:修改后的用户信息和已经存在的用户信息相同;修改后的用户信息和已经存在的用户信息不同;
    15)、不给用户授权,是否允许登录;
    16)、改某些设置时,是否会影响具有上级权限及相同权限人员的设置;
    17)、系统管理员修改了某些数据,以其他人员身份登录时数据是否改变;
    18)、勾选多项权限时  是否产生了新的权限 或减少了某些权限 。
    19、) 只有修改或编辑自己信息的权限时,能否同时修改或编辑其他用户数据的权限 
    20)、用户能否同时属于多个组,各个组的权限能否交叉;
    21)、删除后重新添加的用户是否具有以前的权限;更改用户各项属性(包括权限)看对权限是否有影响。
  • 用户注册和密码修改测试点(转)

    2010-06-08 13:53:16

    一.用户注册

            只从用户名和密码角度写了几个要考虑的测试点,如果需求中明确规定了安全问题,Email,出生日期,地址,性别等等一系列的格式和字符要求,那就都要写用例测了~

            以等价类划分和边界值法来分析
            1.填写符合要求的数据注册: 用户名字和密码都为最大长度 (边界值分析,取上点)
            2.填写符合要求的数据注册 :用户名字和密码都为最小长度 (边界值分析,取上点)
            3.填写符合要求的数据注册:用户名字和密码都是非最大和最小长度的数据(边界值分析,取内点)
            4.必填项分别为空注册          
            5.用户名长度大于要求注册1位(边界值分析,取离点)
            6.用户名长度小于要求注册1位(边界值分析,取离点)
            7.密码长度大于要求注册1位(边界值分析,取离点)
            8.密码长度小于要求注册1位(边界值分析,取离点)
            9.用户名是不符合要求的字符注册(这个可以划分几个无效的等价类,一般写一两个就行了,如含有空格,#等,看需求是否允许吧~)
            10.密码是不符合要求的字符注册(这个可以划分几个无效的等价类,一般写一两个就行了)
            11.两次输入密码不一致(如果注册时候要输入两次密码,那么这个是必须的)
            12.重新注册存在的用户
            13.改变存在的用户的用户名和密码的大小写,来注册。(有的需求是区分大小写,有的不区分)
            14.看是否支持tap和enter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号显示


    二.修改密码
            当然具体情况具体分析哈~不能一概而论~
            实际测试中可能只用到其中几条而已,比如银行卡密码的修改,就不用考虑英文和非法字符,更不用考虑那些TAP之类的快捷键.
            而有的需要根据需求具体分析了,比如连续出错多少次出现的提示,和一些软件修改密码要求一定时间内有一定的修改次数限制等等。

            1.不输入旧密码,直接改密码
            2.输入错误旧密码
            3.不输入确认新密码
            4.不输入新密码
            5.新密码和确认新密码不一致
            6.新密码中有空格
            7.新密码为空
            8.新密码为符合要求的最多字符
            9.新密码为符合要求的最少字符
            10.新密码为符合要求的非最多和最少字符
            11.新密码为最多字符-1
            12.新密码为最少字符+1
            13.新密码为最多字符+1
            14.新密码为最少字符-1
            15.新密码为非允许字符(如有的密码要求必须是英文和数字组成,那么要试汉字和符号等)
            16.看是否支持tap和enter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号
            17.看密码是否区分大小写,新密码中英文小写,确认密码中英文大写.
            18.新密码与旧密码一样能否修改成功.


            有个朋友问我,注册的时候测试了密码长度,修改的时候为什么还要测试.
            我在这里举个我亲身经历的例子,以前我玩一个游戏,叫恋爱盒子,在游戏里我把密码改成了xuewufengtian,后来怎么也上不去了.因为资料填写不全无法找回密码.后来我在一次注册过程中发现,注册的时候密码长度最长是10位,这时我灵机一动,用了原来的用户名和xuewufengt的密码就进去了. 这表明,修改密码时候的最大长度和注册及登陆的时候密码最大长度有可能是不一致的.

  • 翻页功能测用例设计(转载)

    2008-10-10 13:14:06

    翻页功能我们常碰到的一般有以下几个功能:
    1、首页、上一页、下一页、尾页。
    2、总页数,当前页数
    3、指定跳转页
    4、指定每页显示条数
    当然,有一些是少于多少页,全部以数字的形式显示,多于多少页后,才出现下一页的控件。本文暂且用以上四点来做为通用的用例来设计吧。

    对于1翻页链接或按钮的测试,主要要检查的测试点有:
    1、有无数据时控件的显示情况
    2、在首页时,首页和上一页是否能点击
    3、在尾页时,下一页和尾页是否能点击
    4、在非首页和非尾页时,四个按钮功能是否正确
    5、翻页后,列表中的记录是否仍按照指定的排序列进行了排序
    对于2总页数,当前页数,主要要检查的测试点有:
    1、总页数是否等于总的记录数/指定每页条数
    2、当前页数是否正确
    对于3指定跳转页,主要要检查的测试点有:
    1、是否能正常跳转到指定的页数
    2、输入的跳转页数非法时的处理
    对于4指定每页显示条数,主要要检查的测试点有:
    1、是否有默认的指定每页显示条数
    2、指定每页的条数后,列表显示的记录数,页数是否正确
    3、输入的每页条数非法时的处理

    分析完上面的测试点,应该可以进行用例的设计了。
    step 1: 列表无记录 
    expect: 1、四个翻页控件变灰不可点击
            2、列表有相应的无数据信息提示
            3、不可指定页数
            4、不可指定跳转页
            5、总页数显示为0
            6、当前页数显示为0

    step 2: 列表的记录数<=指定的每页显示条数
    expect: 1、四个翻页控件变灰不可点击
            2、总页数显示为1
            3、当前页数显示为1

    step 3: 列表的记录数>指定的每页显示条数
    expect: 1、默认在首页,当前页数为1              
            2、列表的数据按照指定的排序列正确排序
            3、记录数与数据库相符
            4、总页数=记录数/指定的每页显示条数

    step 4: 列表的记录数>指定的每页显示条数,在首页
    expect: 1、首页变灰不可点击
            2、上一页变灰不可点击
            3、下一页可点击,从(每页指定条数+1)条记录开始显示,当前页数+1
            4、尾页可点击,显示最后页的记录

    step 5: 列表的记录数>指定的每页显示条数,在中间的某页
    expect: 1、首页可点击,显示1到每页指定条数的记录
            2、上一页可点击,显示上一页的记录
            3、下一页可点击,从后一页的记录
            4、尾页可点击,显示最后页的记录
            5、列表的数据按照指定的排序列正确排序
            6、当前页数为所在页

    step 6:列表的记录数>指定的每页显示条数,在尾页
    expect: 1、首页可点击,显示1到每页指定条数的记录
            2、上一页可点击,显示上一页的记录
            3、下一页变灰不可点击
            4、尾页变灰不可点击
            5、列表的数据按照指定的排序列正确排序
            6、当前页数为最后一页的页数

    step 7:输入每页显示条数为正整数
    expect: 1、每页显示条数更新成指定的条数
            2、超过指定的条数的记录分页显示
            3、总页数更新成列表的记录数/每页显示条数

    step 8:输入每页显示条数为0
    expect: 1、提示“每页显示条数必须为大于1的整数”
            2、提示后每页显示条数恢复为上次生效的条数

    step 9:输入每页显示条数为负数
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 10:输入每页显示条数长度超过数据库指定的长度<<<maxlen>>>
    expect: 1、提示每页显示条数不能超过<<<maxlen>>>位
            2、提示后每页显示条数恢复为上次生效的条数

    step 11:输入每页显示条数为字符串,如中文翻页数
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 12:输入每页显示条数为特殊字符,如%
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 13:输入每页显示条数为html字符串,如<br>
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 14:输入跳转的页数为存在的页数
    expect: 1、正确跳转到指定的页数

    step 15:输入跳转的页数不存在或非法值
    expect: 1、跳转的页数值置为1,显示第一页的数据

    以上的用例是将总页数,当前页数都揉进了翻页控件的测试用例中了。

Open Toolbar