发布新日志

  • 实现DB2备份恢复的步骤与操作中的问题

    2012-03-15 16:17:43

      下面的文章主要介绍的是DB2备份恢复在实际操作中的有感有问,如果你对DB2备份恢复心存好奇的话,以下的文章将会揭开它的神秘面纱,以下就是具体内容的描述,希望在你今后的学习中会有所帮助。

      练手DB2备份与恢复,盲人摸象一般捣腾了好几天,终于成功实现联机DB2备份恢复了。先讲下我怎么做的。

      

    创建数据库testdb
    db2 create database testdb using codeset UTF-8 territory US 
    
    开启联机备份
    db2 update db cfg for testdb using userexit on logretain on trackmod on 
    
    创建备份目录
    mkdir /backup/db2inst1  chown db2inst1:db2grp1 /backup/db2inst1
    
    重启db2实例,进行一次冷备,时间戳为20100224111110
    db2stop force  db2start  db2 backup db testdb to /backup/db2inst1 
    
    创建数据库表
    create table T(  a int,  b int,  c int  ) 
    
    在T表中插入100条数据0,0,0
    进行一次联机备份,时间戳为20100224113029
    
    db2 backup db testdb online to /backup/db2inst1 
    查看首个活动日志,为S00000001.LOG
    
    db2 get db cfg for testdb 
    在T表中插入100条数据1,1,1
    
    进行一次联机备份,时间戳为20100224113530
    
    db2 backup db testdb online to /backup/db2inst1
     查看首个活动日志,为S0000002.LOG
    
    db2 get db cfg for testdb 在T表中删除100条0,0,0
    将活动日志目录SQLOGDIR下的所有归档日志和活动日志都拷到/temp目录下
    
    将testdb整个删除
    db2 drop db testdb 
    DB2备份恢复到最后一个备份点20100224113530
    
    db2 restore database testdb from /backup/db2inst1 
    taken at 20100224113530 
    将所有归档日志和活动日志都拷到SQLOGDIR下,并更改用户和用户组
    chown db2inst1:db2grp1 * 日志回滚

      因为备份的时间戳日期和归档日志的时间似乎有点不同,我现在的做法只能是先执行下面这句,得到一个时间,然后再rollforward到那个时间才能成功回滚

      db2 rollforward db testdb stop

      执行上面语句以后提示以下内容

      

    SQL1276N Database "TESTDB" cannot be brought out of rollforward pending state   
    until roll-forward has passed a point in time greater than or equal to  
     "2010-02-24-03.12.34.000000 UTC",
     because node "0" contains information later  than the specified time.

      根据这里的提示信息,得到时间2010-02-24-03.12.34.000000,再rollforward到这个时间

      

      db2 rollforward db testdb to 2010-02-24-03.12.34.000000 and stop 不知道正常情况下高手们是怎么知道回滚到什么时间点的?特别请教一下。谢谢!

      

      在做回滚的时候我还发现了一个情况:根据活动日志可以DB2备份恢复到故障点到最后一次备份点之间的数据。

      

      在rollforward的时候将时间点往后多写一点

      

    $ db2 rollforward db testdb to 2010-02-24-03.15.00 and stop 
    然后他会提示
    SQL4970N Roll-forward recovery on database "TESTDB" cannot reach the   
    specified stop point (end-of-log or point-in-time) on database partition(s)  
     "0". Roll-forward recovery processing has halted on log file "S0000005.LOG".

      在这个时候数据库依旧是pending状态,再执行一次db2 rollforward db testdb stop就可以DB2备份恢复到删除数据库之前的状态了

  • 系统无法创建数据库,报sql1005n的错误如何解决

    2012-02-20 15:01:08

    创建数据库test时系统报错

    [db2inst1@sdbf ~]$ db2 create db test using codeset utf-8 territory cn

    SQL1005N  The database alias "TEST" already exists in either the local

    database directory or system database directory.

    使用list database directory test


    [db2inst1@sdbf ~]$ db2 list database directory


    System Database Directory


    Number of entries in the directory = 2

    Database 1 entry:


    Database alias
    = MACRODB


    Database name
    = MACRODB


    Local database directory
    = /home/db2inst1


    Database release level
    = d.00


    Comment
    =


    Directory entry type
    = Indirect


    Catalog database partition number
    = 0


    Alternate server hostname
    =


    Alternate server port number
    =

    Database 2 entry:


    Database alias
    = TEST1


    Database name
    = TEST1


    Local database directory
    = /home/db2inst1


    Database release level
    = d.00


    Comment

    =


    Directory entry type
    = Indirect


    Catalog database partition number
    = 0


    Alternate server hostname
    =

    Alternate server port number
    =

    使用listdatabase directory on /home/db2inst1命令发现数据test

    目录为本地数据库实例db2inst1所在目录

    [db2inst1@sdbf ~]$ db2 "list database directory on /home/db2inst1/"

    Local Database Directory on /home/db2inst1/

    Number of entries in the directory = 4

    Database 1 entry:

    Database alias                       = TEST

    Database name                        = TEST

    Database directory                   = SQL00002

    Database release level               = c.00

    Comment                              =

    Directory entry type                 = Home

    Catalog database partition number    = 0

    Database partition number            = 0

    Database 2 entry:

    Database alias                       = MACRODB

    Database name                        = MACRODB

    Database directory                   = SQL00003

    Database release level               = d.00

    Comment                              =

    Directory entry type                 = Home

    Catalog database partition number    = 0

    Database partition number            = 0

    Database 3 entry:

    Database alias                       = TEST1

    Database name                        = TEST1

    Database directory                   = SQL00004

    Database release level               = d.00

    Comment                              =

    Directory entry type                 = Home

    Catalog database partition number    = 0

    Database partition number            = 0

    解决方法:

    使用catalog命令

    [db2inst1@sdbf ~]$ db2 catalog db test

    DB20000I  The CATALOG DATABASE command completed successfully.

    DB21056W  Directory changes may not be effective until the directory cache isrefreshed.

    使用listdatabase directory命令查看数据库状态

    [db2inst1@sdbf ~]$ db2 list database directory

    System Database Directory

    Number of entries in the directory = 3

    Database 1 entry:

    Database alias                       = TEST

    Database name                        = TEST

    Local database directory             = /home/db2inst1

    Database release level               = d.00

    Comment                              =

    Directory entry type                 = Indirect

    Catalog database partition number    = 0

    Alternate server hostname            =

    Alternate server port number         =

    Database 2 entry:

    Database alias                       = MACRODB

    Database name                        = MACRODB

    Local database directory             = /home/db2inst1

    Database release level               = d.00

    Comment                              =

    Directory entry type                 = Indirect

    Catalog database partition number    = 0

    Alternate server hostname            =

    Alternate server port number         =

    Database 3 entry:

    Database alias                       = TEST1


    Database name                        = TEST1

    Local database directory             = /home/db2inst1

    Database release level               = d.00

    Comment                              =

    Directory entry type                 = Indirect

    Catalog database partition number    = 0

    Alternate server hostname            =

    Alternate server port number         =

            使用drop命令删除数据库test成功

    [db2inst1@sdbf ~]$ db2 drop db test

    DB20000I  The DROP DATABASE command completed successfully.

    现在可以重建数据库test了


    创建数据库test时系统报错
    [db2inst1@sdbf ~]$ db2 create db test using codeset utf-8 territory cn
    SQL1005N  The database alias "TEST" already exists in either the local
    database directory or system database directory.
     
    使用list database directory test

    [db2inst1@sdbf ~]$ db2 list database directory
     
    System Database Directory
     
    Number of entries in the directory = 2

    Database 1 entry:
     
    Database alias
    = MACRODB
     
    Database name
    = MACRODB

    Local database directory
    = /home/db2inst1

    Database release level
    = d.00

    Comment
    =

    Directory entry type
    = Indirect

    Catalog database partition number
    = 0

    Alternate server hostname
    =

    Alternate server port number
    =

    Database 2 entry:
     
    Database alias
    = TEST1

    Database name
    = TEST1

    Local database directory
    = /home/db2inst1

    Database release level
    = d.00

    Comment
    =

    Directory entry type
    = Indirect

    Catalog database partition number
    = 0

    Alternate server hostname
    =
    Alternate server port number
    =
     
     

    使用listdatabase directory on /home/db2inst1命令发现数据库test
    目录为本地数据库实例db2inst1所在目录
    [db2inst1@sdbf ~]$ db2 "list database directory on /home/db2inst1/"

    Local Database Directory on /home/db2inst1/

    Number of entries in the directory = 4

    Database 1 entry:

    Database alias                       = TEST
    Database name                        = TEST
    Database directory                   = SQL00002
    Database release level               = c.00
    Comment                              =
    Directory entry type                 = Home
    Catalog database partition number    = 0
    Database partition number            = 0

    Database 2 entry:

    Database alias                       = MACRODB
    Database name                        = MACRODB
    Database directory                   = SQL00003
    Database release level               = d.00
    Comment                              =
    Directory entry type                 = Home
    Catalog database partition number    = 0
    Database partition number            = 0

    Database 3 entry:

    Database alias                       = TEST1
    Database name                        = TEST1
    Database directory                   = SQL00004
    Database release level               = d.00
    Comment                              =
    Directory entry type                 = Home
    Catalog database partition number    = 0
    Database partition number            = 0
     
     

    解决方法:
    使用catalog命令
    [db2inst1@sdbf ~]$ db2 catalog db test
    DB20000I  The CATALOG DATABASE command completed successfully.
    DB21056W  Directory changes may not be effective until the directory cache isrefreshed.
     
    使用listdatabase directory命令查看数据库状态
    [db2inst1@sdbf ~]$ db2 list database directory

    System Database Directory

    Number of entries in the directory = 3

    Database 1 entry:

    Database alias                       = TEST
    Database name                        = TEST
    Local database directory             = /home/db2inst1
    Database release level               = d.00
    Comment                              =
    Directory entry type                 = Indirect
    Catalog database partition number    = 0
    Alternate server hostname            =
    Alternate server port number         =

    Database 2 entry:

    Database alias                       = MACRODB
    Database name                        = MACRODB
    Local database directory             = /home/db2inst1
    Database release level               = d.00
    Comment                              =
    Directory entry type                 = Indirect
    Catalog database partition number    = 0
    Alternate server hostname            =
    Alternate server port number         =

    Database 3 entry:

    Database alias                       = TEST1
     
     
    Database name                        = TEST1
    Local database directory             = /home/db2inst1
    Database release level               = d.00
    Comment                              =
    Directory entry type                 = Indirect
    Catalog database partition number    = 0
    Alternate server hostname            =
    Alternate server port number         =
     
     
            使用drop命令删除数据库test成功
    [db2inst1@sdbf ~]$ db2 drop db test
    DB20000I  The DROP DATABASE command completed successfully.
     

    现在可以重建数据库test了
     
  • WSVR0100W: An error occurred initializing, dmgr 的解决方法

    2011-08-18 12:59:33

     
    我在重启was 和portal 的时候,遇到以下错误:
     
    WSVR0100W: An error occurred initializing, dmgr [class com.ibm.ws.runtime.component.ServerImpl] com.
     
    以前从来没有遇到过这样的错误
     
    比较重要的信息是,查看得看/home/wasup/IBM/WebSphere/AppServer/profiles/Dmgr01/logs/ffdc/dmgr_6880688_10.09.01_07.45.55.4405872585228961776430.txt里面生成了什么

    就是最新的txt文件,一看是找不到node 2 下的一个什么想,xml 文件
     
    大概知道原因了,因为node2 我已经重装,并且没有加进来,这是老的痕迹导致的。
     
    做好了最坏的打算,斗胆删除了node2 文件夹
     
    dmgr 启动成功了,开心!
     
    nodeagent 好像启动也有问题,也是没找到另外的文件目录下的node2 下的文件
     
    也删除node2 文件夹,再重启,成功。
  • 如何成功卸载WebSphere Portal V6.0

    2011-05-23 17:14:10

    如何成功卸载WebSphere Portal V6.0

    开始卸载行动之前,停止所有运行的与WebSphere Portal相关的进程,包括WebSphere_Portal、server1、httpd
    使用Portal uninstaller卸载WebSphere Portal。卸载程序执行完成后,需要如下的步骤彻底把WebSphere Portal从你的系统中卸载干净:
    1.删除WPS_HOME目录及其中的内容
    2.删除WAS_HOME目录及其中的内容
    3.如果profiles目录不在WAS_HOME目录中,删除profiles目录。这种情况往往出现在Windows平台上,默认的安装路径是C:\ibm\WebSphere\profiles
    4.仅应用于Windows平台:打开注册表编辑器,删除如下键值:
            * HKEY_LOCAL_MACHINE\SOFTWARE\IBM\WebSphere Portal Server\6.0.0.0
            * HKEY_LOCAL_MACHINE\SOFTWARE\IBM\WebSphere Application Server Network Deployment\6.0.0.0
    5.找到vpd.properties文件。在Windows平台上,位于C:\Windows 或 C:\WinNT;在Linux平台上,位于/root。如果在系统上只存在一个WebSphere Portal的安装,可以直接把这个文件从系统中删除。如果是多个版本并存的情况,编辑该文件,删除要卸载版本的条目。
    6.在home目录下(在Linux平台为/root;Windows平台C:\Documents And Settings\<username>),如果以下文件存在,删除掉。
            * .ITLMRegistry
            * ._cie.trace.xml.lck
            * .WebSphereRegistry

    vpd.properties文件是经常被忽略的地方,如果该文件中相关内容没有被删除,再次安装时,总是提示‘已经安装’。这个文件是IBM独有的,安装WAS等其它产品时也会往这个文件里面写东西。


  • Windows下DB2端口查看/修改/分配

    2011-05-19 11:02:16

    简单总结Windows下DB2端口有关操作.

    1. 端口查看

    1. 在DB2命令行中, 运行: DB2 GET DBM CFG |FIND "SVCENAME", 将会获得如下输出:
    TCP/IP Service name    (SVCENAME) = db2c_DB2

    2. 打开c:\windows\system32\drivers\etc\services, 查看1中找到的服务名称对应的端口号, 如:
    db2c_DB2    50000/tcp

    2. 端口修改

    直接修改ttc\Services中的对应端口. 然后db2stop, db2start即可.

    可通过telnet ip:port 检查是否已启动.

    3. 为新建的Instance分配端口

    1. 增加Service: 编辑etc\services文件, 增加Service名称及端口, 如增加:
    db2c_MYINST    50006/tcp

    2. 分配端口:
    db2 UPDATE DBM CFG USING SVCENAME db2c_MYINST

    参考: DB2 Instance实例 的创建 http://topic.csdn.net/t/20030704/12/1990179.html

  • 【自动化】定时访问服务器并执行测试

    2011-03-07 17:00:02

    大体分为四个步骤:

    1)创建soapui脚本并调试成功;</DIV> <DIV>这个就在这里不累述了

    2)使用Soapui中的 TestRunner来完成测试脚本通过命令行的方式来执行

    Launch TestRunner===>; 选择TestRunner的路径,一般都在安装路径下,配置好信息,选择导出结果,选择结果放置的路径;执行。拷贝运行命令,存到bat文件中。</DIV> <DIV>把bat文件所在路径设置到path中;

    3)创建定时任务,运行命令:SCHTASKS /Create /SC HOURLY /MO 5 /TN rtest2 /TR clocktask.bat /ST 11:45:00 /SD 2011/03/04 /ED 2011/03/04

    表示每5个小时运行一次该命令;

    4)但是结果每次都被覆盖

    处理:同事帮忙写了个jar,把生成的文件加上时间戳并保存到指定的文件夹。

    上面的任务执行后3分钟,自动保存结果。

    SCHTASKS /Create /SC HOURLY /MO 5 /TN rtest2 /TR clocktask.bat /ST 00:03:00 /SD 2011/03/04 /ED 2011/03/04

    都完成,就OK了
  • 如何为web应用建立负载模型(续4)

    2011-02-17 14:23:12

    步骤四 为导航路径或模拟用户识别唯一性的数据

    很不幸,光是导航路径不能提供所有的需要贯彻的负载模拟的信息。至于所有的可执行的负载模型,以下信息是需要的,包括:

    用户在一个页面上停留多长时间?

    每个页面需要什么样的数据?

    用户在什么条件下变化导航路径?

    下表提供了一个为电子商务应用提供识别唯一数据的例子。

    需要考虑的事

    在为导航路径或模拟用户识别唯一性的数据时,需要考虑以下关键事项:

    • 性能测试一般需要消耗大量的测试数据,需要准备充足的测试数据;
    • 重复使用相同的数据可能会导致无效的结果;
    • 尤其是在设计和调试性能测试脚本的时候,可能会引起测试数据的过量负载,要提前检查,去掉干扰性能测试结果的一些垃圾数据;
    • 在性能测试中要考虑到一些无效的数据。比如说,有的用户第一次输错了密码,第二次才输入了正确的登录了系统;
    • 第一次登录的用户在页面上停留的时间要比经常使用该系统的用户停留的时间长;
    • 最有可能的测试数据一般来自于真实的生产环境或者日志文件;
    • 要考虑到客户端崩溃的情况。第一使用的用户要下载每个控件,而经常使用的用户则不需要多次下载,而且还有可能以前的一些操作结果存在缓存中。要考虑到他们的不同;


  • 如何为web应用建立负载模型(续3)

    2011-01-25 17:08:15

    为关键场景确定导航路径

    人的操作行为是不可预期的,网站一般提供多条路径到达相同的功能或者操作,相对较少数量的用户而言这一定是正确的:真实用户不仅会使用任何你想到的路径来完成他们的任务,他们也会创造出想不到的路径。用户完成某个操作的每条路径,在系统中都会形成不同的路。这些不同有可能是微不足道的也有可能是特别巨大的——除非是你来测试,不然没有办法确定。有很多办法确定你完成一个任务或者一个操作的导航路径,包括:

    • Identify user paths within your Web application that are expected to have a significant performance impact and that accomplish one or more of the identified key scenarios.
    • 阅读设计文档或者操作手册;
    • 从日志文件中提取数据;
    • 亲自尝试操作;
    • 让别人来操作,看他的操作路径。

    系统为用户可接受测试,beta 测试或者产品测试发布版本后,你就能够确定大多数用户是如何在被测系统中到达他要操作的功能。一般这样也是很不错的主意:把你的模型和真实情况相比较然后根据你发现的相似和不同来决定是否运行额外的测试。

    需要考虑的事

    • 当你为关键场景确定关键路径的时候,要考虑以下事项:
    • 有些用户作为一个游客时可能操作了很多功能;
    • 有些用户登录一次可能操作了很多次相同的功能;
    • 可能有些用户在网站上作为游客没有真正执行任何功能;
    • 导航路径一般可以通过页面标题来获得;
    • 如果系统中页面标题不是很直观,那么可以系统给定的操作步骤来确定系统的导航路径;
    • 和经常访问的用户不同,第一访问的用户一般会走一个不同的路径,在你的模型中应该考虑到这些不同和新老用户的百分比;
    • 不同的用户操作习惯也会有很大的不同,有的操作登出,有的直接关闭窗口,也有的不管它让它自己超时,我们在考虑和估计session持续时间的时候一定要确保把这些因素考虑进去。



  • 如何为web应用建立负载模型(续2)

    2011-01-18 16:30:08

    识别关键的用户场景

    想要在性能测试中模拟用户可能的所有的操作,这是绝对不可能的,因此,不管你是从sever的日志中分析出来的,还是通过观察可用性研究的,还是从市场材料中得到的,甚至直接是靠猜的,你都有可能都是在把一些有限的尝试用到行为活动的数量中,或者为性能测试识别关键的场景。你会发现下面的有限尝试是非常有用的:

    通过目标的暗示或规定来确定关键场景;

    要包括最常用的操作;

    要包括比较明显的操作;比如,一个用户可能仅仅在你的网站上注册了一次,因为感受体验不好,就再也没有来过。

    要包括关键的业务。比如说,如果你的业务是依赖消费者提供收益,那么如果消费者不能提交订单那一定会出现损失,一定要保证这样的操作完成的很好。

    要包括比较集中的操作。即使这些操作用到的很少,他们也会显著地影响性能。比如,有的业务是一个月在后台批处理一次,但这些操作会对前台想性能有很大影响。

    要包括写在合同里的对性能有要求的操作,或者有权势的利益相关人的操作。

    下面是电子商务系统的关键场景:

    1、浏览;

    2、创建用户账户

    3、查询;

    4、登录;

    5、提交订单

    需要考虑的事

    在识别关键场景中要考虑到一下关键点:

    • 要把没有人的系统或是后台批量进程考虑成和终端用户一样。比如,当用户正在执行操作的时候,有一个批处理程序正在运行更改订单的状态。在这种情况下,你需要计算这些进程,因为他们也要消耗系统资源。
    • 一般来讲,web servers 是对应文本和图片的处理能力是非常有效的。带有平均大小的静态页面一般没有动态页面,表格和多媒体页面那么关键。


  • 如何为web应用建立负载模型(续1)

    2011-01-17 16:32:09

    步骤一:识别目标

    创建负载模型的目的通常重点在于确保测试场景是符合现实情况的,或者是特别设计一个测试以满足特殊的需求、目标或者性能测试的目的(更多的信息,请参看“如何确定最终用户数量的需求”以及“如何定义性能测试目标”--秀霞以后有时间会慢慢翻译)当识别目的的时候,你应该充分考虑到满足商业需求的目标,在模拟你的目标的时候。可以考虑一下关键问题:

    • 当前或随着时间推移预期的业务量是多少?比如,在给定时间段内的订单是多少?其他操作时什么?比如查询的数量,浏览的数量,登录次数等等,支持订单顺序吗?

    • 随着时间推移,业务量是怎样的期望?你的项目应该应该把将来的需要计算在内,比如,业务的增长,可能出现的企业合并,新产品的引入等等。

    • 目前或者期望的负载峰值水平是什么?这个项目应该考虑支持这样的行为活动,这些行为活动支持销售或者其他关键业务流程,比如市场战役(诸如产品促销,搞活动等等-秀霞加),新产品上市,对时间敏感的活动比如证券交易所依赖于永不停歇的市场等等。

    • 你期望多快达到峰值负载水平?你的预期应该把不是很常见的业务活动激增考虑在内,当一个事件发生后,对增长的需求组织调整有多快?

    • 峰值的负载会持续多长时间?也就是说,在系统疲劳之前的资源的退让会持续多长时间?比如说,一个经济公告就可以引起货币外汇市场持续高负荷两到三天,而不是几个小时。

    这些信息可以从web服务器的日志中获得,也可以从市场文档反映出的商业需求中获得,也可以从利益相关者那里获得。下面是一些在这个过程中被识别的目标:

    • 确保一个或者多个模型可以代表峰值期望的负载(每小时产生的订单数)

    • 确保一个或者多个模型可以表示出 “quarterly close-out” 区间使用模式和“典型营业日”使用模式的区别。(译者理解:有的系统只登录一次,可能查询一下或者操作一个功能就退出了,而有的系统则全天在线,比如柜台业务的操作的系统,早上登录,全天都在不停地执行操作

    • 确保一个或多个模型可以表示出业务或者市场项目可以在未来一年内运行的很好。


    如果这些目标在项目的背景下是讲得通的,那么我们就认为是可以接受的。接下来要做的就是为取得的目标填充上必要的详细内容。

    要考虑的事

    在识别目标的时候要考虑到以下的关键点:

    • 创建一个负载模型过程中的吞吐量,记得和团队分享你的假设条件和草稿,索求他们的反馈意见。

    • 不要过度地追求完美,不要陷入过度单纯化的诱惑。一般而言,一个好的主意是在你已经有了一个可以用来测试的模型并且已经开始测试的情况下产生的,然后在收集结果的时候再逐渐增强它。


  • 如何为web应用建立负载模型(总述)

    2011-01-16 21:37:03

    如何为web应用建立负载模型

    J. D. Meier, Prashant Bansode, Carlos Farre, Scott Barber编写 秀霞翻译

     

    应用于:

    Web 应用

    性能测试

     

    摘要

    这里要描述如何创建负载模型,这个负载模型可以表示预计web应用如何在实际环境中工作。对于性能测试的结果可以理解为真实环境下的性能特性,测试用的负载模型必须代表真实用户场景。创建一个合理准确的现实表述,你必须理解使用应用的业务前后逻辑关系,不同情况下所期望的事务,期望的用户路径,以及其他可以利用的要素。

    目录

    目标

    概要

    步骤的摘要

    步骤1:识别目标

    步骤2:识别关键场景

    步骤3:为关键场景确定导航路径

    步骤4:为导航路径或模拟用户识别唯一的数据

    步骤5:确定场景的相对分配

    步骤6:识别负载水平的目标

    步骤7:准备执行模型

     

    目的


    学习如何根据期望、文档、观察分析以及以前版本可以得到的数据为web应用组建和实现负载模型。


    概述

    负载模型是一个识别一个或者多个混合的应用使用情况的过程,一般用在性能测试中。一个负载模型包括和数据相关的项,诸如:

    • 关键用户的行为;

    • 导航路径的相关的行为;

    • 相关的用户分布以及(或者)跨目标负载的行为;

    • 唯一的数据和模拟的每个用户中应用相互影响。


    然而,模拟不切实际的负载模型可以在执行性能测试的时候为团队提供有价值的信息,这当然是正确的,你可以仅仅加一些准确的前提条件,就可以让现实情况被模拟,并为产品进行性能测试或者实现性能优化。


    步骤的总结

    步骤的摘要


    步骤1:识别目标


    步骤2:识别关键场景


    步骤3:为关键场景确定导航路径


    步骤4:为导航路径或模拟用户识别唯一的数据


    步骤5:确定场景的相对分配


    步骤6:识别负载水平的目标


    步骤7:准备执行模型


  • 性能测试的几种业务模型设计

    2011-01-15 18:50:03

    最近在整理负责产品的负载模型,见得这个文章还不错,先转过来。

    ------

    一个访问量达到百万级别的门户网站及奥运会订票系统等这中用户数较多的系统,进行性能测试是必须的。要不就和产品演示会上出现的笑话一样,风险投资商提出的问题是这个网站能支持多少用户同时上线,项目经理居然说没有进行这方面的测试。全场哗然。。。。
      对于性能测试的第一步是怎么去根据业务的实际模型分析出具体的测试场景及性能测试的指标。

      一、 性能测试业务逻辑理解的一些基本概念

      1、负载测试和压力测试的区别:负载测试在于确定最终满足系统指标的前提下,系统所能承受的最大负载测试,压力测试的目标则在确定什么条件下系统性能处于失效状态。

      2、吞吐量(Throughput):指单位时间内处理的客户段请求数量,直接体现软件系统的性能承载能力。

      3、并发(Concurrency):多个同时发生的业务操作。例如100个用户同时点登录21CN邮箱和同时在线人数不一样。比如说21CN通行证用户登录的有1万个可能只有20%的人在看博客,10%的人在看相册,30%的人在查看邮件,10%的人在查看播客,10%的人在看视频点播,10%的人在逛论坛等等

      但是同时在线人数就是1万,并发用户就是针对每个系统的具体人数。

      二、几种常见的业务模型设计

      1、e家广告系统:

      (1)具体的业务参数要求:

      系统要达到4000万日均PV,则需要平台可以处理4000并发/秒。根据选中的服务器的性能,处理能力约为2000个HTTP并发/秒或1000个流媒体并发/秒。假设这4000万PV中有图片的PV占3000万,流媒体的PV占1000万,则需要WEB服务器及流媒体服务器各两台。

      (2)具体的测试设计方法:

      (a)平台的处理能力与要达到的日均PV的能力的计算关系为:

      参数说明:

      X:表示整个系统的日均PV值,单位为:万PV/天

      m:平台最大有效并发数(即用来服务于广告物料显示的并发数),单位为:并发/秒,每小时是3600秒,即每个小时处理的并发数为3600m并发,即0.36m万并发/小时。

      y:非高峰时期的平均并发数与平台最大并发数的比例,0<y<1

      Y:高峰期(平台达到最大并发数的70%,平台负载超过70%以后,将变得不稳定)小时数,0<Y<24,即高峰期并发数为70%*0.36m

      那么:

      日均PV=高峰期并发数*高峰期小时数+非高峰期平均并发数*(24-高峰期小时数)

      即:

      X=0.7*0.36mY+y*0.36m*(24-Y)

      即最后结论:

      X=(0.252Y+8.64y-0.36yY)*m

      根据经验值,Y=3,y=30%时,m/X=0.33。而m是平台最大有效并发数,即用来服务于广告物料显示的并发数,而对于每次广告物料的显示,客户端还有访问其它资源如JS代码等,假设每一次广告物料的访问会有伴随另外2个资源的访问。

      那么平台支撑的总的并发数与需要达到的日均PV的比大约为0.33*3=1。

    上面算的比较乱,我换了一种格式表达如下:

    分析项目

    公式

    日登录次数

    已知

    4000

    每日高峰小时数

    假设,经验值

    3

    非高峰小时数

    24-3

    21

    平台最大并发数

    X 需要计算的数(个/秒)

    0.36X     万个/小时

    高峰时并发数

    70% 的最大并发数

    0.7* 0.36 X 万个/小时

    非高峰的并发数

    30% 的最大并发数

    0.3 * 0.36X  万个/小时

    4000= 高峰并发数*并发小时数+非高峰并发数*非并发小时数

            = 0.7*0.36X *3+ 21*0.3 * 0.36X

            =0.756 X + 2.268 X

            = 3 X

    X=1333 

     

     

     

      

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    下面的好像不是很正确~~~~

    (b)实际测试模型设计中结果:

      面的并发用户数只需要达到N1=0.33*40000000*0.7/24*0.3*3600=356个

      对于流媒体服务器并发用户数:N2=10000000*0.7/24*0.3*3600/2=135个

      对于图片服务器并发用户数:N3=30000000*0.7/24*0.3*3600/2=405个

      2、集团邮箱:

      (1)具体的业务参数要求:集团邮箱支持支持2000万用户,对性能有要求的操作有邮箱登录,读信,翻页,发邮件(分别是8秒内,2秒内,2秒内,5秒内)。所有的操作均返回HTTP200的状态代码。其中服务器资源分别是登录5台机器(连接PASSPORT),收发邮件5台(不包括POP收发信),其它邮件处理服务器5台,pop/smtp服务器5台。

      (2)具体的测试设计方法:具体的设计2000万个用户登录时间大概在会在8点到下午18点前操作,而该类业务模型满足80~20原则,比如80%的业务会在20%的时间内处理。则登录的并发用户数设计成多少好呢? VUlogin=20000000*80%/(10*20%*3600*5) 其它事物可以以此类推。

      (3)当然如果业务在要求吞吐量的时候,就要更根据吞吐量来设计性能瓶颈所需要的并发用户数这在我们21CN网站和电子商务网站中经常出现。这里引进一个公式VU=F /R*T(VU并发虚拟用户数,F吞吐量,T性能测试时间,R每个VU的请求数量)举例说明(某网站的吞吐量为90亿KB,每个用户每秒50万kb,运行时间30分钟设计出来的每秒用户数VU=9000000000/(500000*30*30))

      (4)如办公系统(业务比较频繁的系统):每天内的一些典型用户固定可以考虑采用一种更准确的计算并发用户数的的方法。公式引进:C=N*L/T,C1=C+ (C是平均并发用户数,N是login session的数量,L是login session的时长,T是考察的时间长度,C1是最高峰值)(*这里的用户是指明确每天都要使用的系统的大概数量来自需求,而这里的用户都是当做一个典型的用户来分析就是登录后会进行正常的流程操作)如21CNEIP每天有320个典型用户访问,系统平均时间为4小时,在一天内用户使用该系统的时间都在8小时内。得出C=320*4/8,C1=C+3 (5)针对这几种模式做一些归纳无论那种模型都是来源于需求根据需求的实际模型是最真实的也是最有效的性能测试模型,在没有典型用户的前提下选择2-8原则(在测试环境中要考虑到等价这个概念就是测试环境服务器数量没有实际环境哪么多的时候要折算过来),有典型用户的情况下选择最大并发数的计算方法,在要求有吞吐量的情况下用吞吐量的计算方法(但是吞吐量的数据要采用上一次测试或者经验值中没有突破系统瓶颈的部分数据要不结果不准确,其中每秒事物数取的是平均值)

      三、其它值得注意部分

      1、设置测试场景中并发用户为每隔一段时间增加X个虚拟用户(预热,RAMP UP设置),与同时加载所有的并发用户的测试结果不同,实际的测试中要根据具体业务情况设计。另外实际的数据库记录数和网络环境等都会影响到测试结果。

      2、建议在实际的测试过程中能多次测试取平均值。

      3、性能测试的”拐点论”:产生拐点的情况是性能测试产生某种瓶颈,主要原因是某种资源达到了极限。此时表现为随着压力的增大,系统性能出现急剧下降。

      4、性能测试的系统能力验证: (a)是系统稳定性的一个基本要求,通常表现为系统在要求的平均并发用户下服务器的CPU平均使用率不高于75%,内存的使用率不高于75%。(b)系统在要求的并发用户数达到峰值情况下服务器的CPU平均使用率不高于95%,内存的使用率不高于90%。(c)系统能在高于实际系统运行压力1倍的情况下,稳定的运行72小时。

      5、为分清各个不同事物的响应时间请务必在多事物的脚本中添加事物以便区分,请在要用到多个帐户或者多个用户的迭代或者循环操作的时候请务必进行参数化(很多系统都限制了同一帐户在多长时间的操作,或者防止数据冲突)。

  • 使用SoapUI 执行性能测试-策略选择

    2010-12-28 10:44:15

    SoapUI的性能测试提供几种测试策略,我装的事3.6.1,有下面四种:

    1、Simple

    “Simple “执行指定精确数量的线程(并发),并且延迟的时间也是精确的,并且可以模拟给服务器喘息的空间。比如,你想要运行10个并发10秒延迟这样的功能测试,你就可以设置Threads 为10,Test Delay 设置为10000,random 设置的值是要根据你想要自由度设定,如果设置成0.5,那么delay 的时间就是在5-10之间,如果设置成0.7,就是在7-10之间。

    当创建一个新的负载策略的时候,默认的值分别是5,1000和0.5

    Simple 策略对基线测试是完美的。用它可以断言你的服务的基本性能情况和验证不存在多线程和资源被锁的问题。当你想更详细的产生你的系统情况,你就可以逐步增加你的负载,或者你也可以执行长时间运行来发现内存泄露的问题。

    由于这并不意味着将你的服务就可以放在膝盖,但这样的设置可用于连续负载测试,以确保您的服务按预期执行在中等负荷;建立一个没有随机的延迟基准测试,新增LoadTest断言,断言可以作为一个意想不到的结果的安全网,同时也可以通过命令行自动运行LoadTest或放到Maven插件中执行。

    2、Variable Load Strategies

     

  • 使用SoapUI 执行性能测试

    2010-12-23 10:19:31

    最近接到性能测试的任务,需要使用SoapUI来进行,以前没用过SoapUI,于是进入学习阶段。

    其中最大的疑惑是:我如何知道我要发送的请求?这个问题像个小山一样横在我前进的道路上,我想如果作为开发人员,这个问题基本上不成问题吧,但是对于测试人员,对代码了解很少的情况下,应该是很难的。

    最后在开发人员的帮助下,通过查找日志中的记录,来获取发送的请求,单个的脚步问题发送都成功了,这是性能测试执行的基础,这一步要先过关了,但还是很疑惑,以后的项目日志还会保留的这么详细可用吧,暂时不想这个问题,先基于现在的项目,进行性能测试,Let's go!

    1、首先把调试好的request 右键选择“add to Testcase "

    2、选择要添加的位置,也可用创建新的测试套件或者测试用例。

    3、此时创建新的Load TEST就可以看到刚才创建的测试用例了。

    4、创建新的Load Test 的内容如下:

    内容解释:双击打开后,页面如上显示,设置过程参考如下,场景为5用户并发,
    持续运行1 分钟,没有思考时间。相应的SoapUI 可设置Threads=100,
    Test Delay=0,Limit=600,后面的下拉框选择Seconds,表示600 秒。设
    置完毕后,点击左上方的绿色箭头,程序开始进行负载测试。
    6、执行结果如下:

    单位是毫秒

    但是给出的信息还是太少了,决定更深层次的挖掘,下篇继续。

  • RPT录制问题

    2010-12-20 14:27:12

    我在RPT8.1中遇到如下错误:

    RPTO0029E 记录不包含已安装测试生成器的任何协议数据

    解决过程:

    方法一:

    解决办法:

    录制页面时,访问的URL不要使用localhost127.0.0.1,改用分配的IP地址,例如:

    http://192.168.1.100:1080/webtours

     

    方法二:Tools -> Internet Options -> Connections (tab) -> Lan Settings ->
    There is a checkbox which states "Automatically Detect Settings" which was checked(selected). After unchecking this checkbox, the problem got solved. I am able to reproduce the problem by enabling this checkbox again.

    但以上方法都解决我了我的问题,最后还是自己解决

    分析:产生原因IE6,因为Firefox 没有该问题,于是升级为IE7,问题得到解决。

  • 获取性能需求的方式

    2010-12-17 10:07:59

    1.根据原有的测试数据进行估计。

    原来的测试是195000在2倍于当前环境下进行的,本次测试可用 195000/2 的模拟用户总数来进行测试;

    2、当前用户数、当前的业务数量,以及时间长度来计算 业务的密集程度,从而推算出并发用户数

    3、客户公司的总人数,和预计未来的人数,这个是最简单的方法

    4、如果实在不好计算用户情况,可进行逐步的增压,根据实际测试结果的支持人数,来给出系统容量。

    ……后续补充

  • 获取有效的性能需求【转】

    2010-12-17 10:05:12

     一个实际的例子

        为了便于大家的理解,我们先来看一个性能需求的例子,让大家有一个感性的认识,本文后面的讨论也会再次提到这个例子。

        这是一个证券行业系统中某个业务的“实际需求”——实际上是我根据通过网络搜集到的数据杜撰出来的,不过看起来像是真实的 ^_^

        系统总容量达到日委托6000万笔,成交9000万笔

        系统处理速度每秒7300笔,峰值处理能力达到每秒10000笔

        实际股东帐号数3000万

     

        这个例子中已经包括几个明确的需求:

        最佳并发用户数需求:每秒7300笔

        最大并发用户数需求:峰值处理能力达到每秒10000笔

        基础数据容量:实际股东帐号数3000万

        业务数据容量:日委托6000万笔,成交9000万笔——可以根据这个推算出每周、每月、每年系统容量的增长模型

     

        什么是“有效的”性能需求?

        要想获得有效的性能需求,就要先了解什么样的需求是“有效的”。有效的性能需求应该符合以下三个条件。

        1. 明确的数字,而不是模糊的语句。

        结合上面的例子来看,相信这个应该不难理解。但是有的时候有了数字未必就不模糊。例如常见的一种需求是“系统需要支持5000用户”,或者“最大在线用户数为8000”。这些有数字的需求仍然不够明确,因为还需要考虑区分系统中不同业务模块的负载,以及区分在线用户和并发用户的区别。关于这方面的内容,在下面两篇文章中的留言内容中有精彩的讨论:

     

        2. 有凭有据,合理,有实际意义。

        通常来说,性能需求要么由客户提出,要么由开发方提出。对于第一种情况,要保证需求是合理的,有现实意义的,不能由着客户使劲往高处说,要让客户明白性能是有成本的。对于第二种情况,性能需求不能简单的来源于项目组成员、PM或者测试工程师的估计或者猜测,要保证性能需求的提出是有根据的,所使用的数据和计算公式是有出处的——本文后面的部分会介绍获得可用的数据和计算公式的方法。

        3. 相关人员达成一致。

        这一点非常关键。如果相关人不能对性能需求达成一致,可能测了也白测——特别是在客户没有提出明确的性能需求而由开发方提出时。这里要注意“相关人员”的识别,通常项目型的项目的需要与客户方的项目经理或负责人进行确认,产品型的项目需要与直属领导或者市场部进行确认。如果实在不知道该找谁确认,那就把这个责任交给你的直属领导;如果你就是领导了,那这领导也白当了 ^_^


    如何获得有效的性能需求

        上面提到了“有效的”性能需求的一个例子和三个条件,下面来我们将看到有哪些途径可以帮助我们获得相关的数据——这些方法我在实际的工作中都用过,并且已经被证实是可行的。这几种方法由易到难排列如下:

        1. 客户方提出

        这是最理想的一种方式,通常电信、金融、保险、证券以及一些其他运营商级系统的客户——特别是国外的客户都会提出比较明确的性能需求。

        2. 根据历史数据来分析

        根据客户以往的业务情况来分析客户的业务量以及每年、每月、每周、每天的峰值业务量。如果客户有旧的系统,可以根据已有系统的访问日志数据库记录,业务报表来分析。要特别注意的是,不同行业、不同应用、不同的业务是有各自的特点的。例如,购物网站在平时的负载主要集中在晚上,但是节假日时访问量和交易量会是平时的数倍;而地铁的售票系统面临的高峰除了周末,还有周一到周五的一早一晚上下班时间。

        3. 参考历史项目的数据

        如果该产品已有其他客户使用,并且规模类似的,可以参考其他客户的需求。例如在线购物网站,或者超市管理系统,各行业的进销存系统。

        4. 参考其他同行类似项目的数据

        如果本企业没有做过类似的项目,那么可以参考其他同行企业的公布出来的数据——通常在企业公布的新闻或者成功解决方案中会提到,包括系统容量,系统所能承受的负载以及系统响应能力等。

        5. 参考其他类似行业应用的数据

        如果无法找打其他同行的数据,也可以参考类似的应用的需求。例如做IPTV或者DVB计费系统的测试,可以参考电信计费系统的需求——虽然不能完全照搬数据,但是可以通过其他行业成熟的需求来了解需要测试的项目有哪些,应该考虑到的情况有哪些种。

        6. 参考新闻或其他资料中的数据

        最后的一招,特别是对于一些当前比较引人关注的行业,涉及到所谓的“政绩”的行业,通常可以通过各种新闻媒体找到一些可供参考的数据,但是需要耐心的寻找。例如我们在IPTV和DVB系统的测试中,可以根据新闻中公布的各省、各市,以及国外各大运营商的用户发展情况和用户使用习惯来估算系统容量和系统各个模块的并发量。

  • performance testing的几个问题

    2010-12-02 14:03:46

  • Webking -"Static Analysis" does not apply to the selected items.

    2010-11-12 11:15:09

    "Static Analysis" does not apply to the selected items.

    遇到的问题和解决方法

    过程:

    我的文档图标是:

    而别人的是:

    通过仔细看E文帮助文件,通过修改MIME Type解决:

     

     

  • AVT test tool-Webking

    2010-11-11 13:55:36

    introduction

    WebKing™, from Parasoft Corporation, is a source code validation tool for HTML. It is used to check HTML documents for proper syntax and standards compliance, including accessibility standards. WebKing can be used to test static web pages served from a web server, and can also be used to test HTML pages created dynamically by web applications and portal web sites.

    WebKing is used to validate compliance of the IBM Corporate Instruction 162 Web Accessibility Checklist. Keep in mind that WebKing only covers a subset of the checkpoints in the checklist, and WebKing can only do a technical validation of the HTML syntax. The appropriateness of the text or alternative text and the other checkpoints in the checklist must still be manually validated.

    In the development environment, WebKing has a plug-in for WebSphere Studio Application Developer (WSAD), which enables web page debugging during development. That feature is not discussed in this document. See WebKing's on-line plug-ins documentation for details.

    This document is intended solely to describe the use of WebKing as a software accessibility testing tool. For a more comprehensive guide to using WebKing, refer to the WebKing on-line documentation. For additional information, go to the ParaSoft Web site.

    set up

    After Installing WebKing, the following customization should be made:

    1. Start WebKing.
    2. Customize preferences to set the path depth and add additional mime types for HTML source files:
      1. From the WebKing menu, select "File" and then select "Customize Preferences".
      2. Select the "Misc" tab.
      3. Under "Path Testing", which can be found by paging down into the panel, select the "Limit depth of path inspection to" radio button and then enter "3" into the text entry field. This will limit the time consumed if you use the Path Creation wizard to automatically create unique paths.
      4. Select the "MIME Types" tab.
      5. Select "text/html" in the "MIME/Types" list box located in the upper left hand portion of the panel.
      6. In the "Extensions" text/html entry field add the appropriate MIME Types as valid HTML extensions for your application. For example: cfm cfml cgi pl smil.
      7. Click the "OK" button.
    3. Customize the tools for the browser and configure Static Analysis:
      1. From the WebKing menu, select "Tools" and then select "Customize", the "Customize Tools" dialog will be displayed.
      2. Select the "Tools" tab and then arrow down to select "Browse".
      3. In the resulting right hand panel, select the "Internet Explorer" radio button in the "Browser" section. We recommend Internet Explorer since "Record using browser" function is not currently supported with Firefox browser.
      4. Return to the left hand panel of the "Tools" tab and then page down to select "Static Analysis".
      5. In the resulting right hand panel, check the box for "Step 4a: Check Web Accessibility (WCAG 2.0)".
      6. Make sure the "Refresh" checkbox is unchecked.
      7. Click the "OK" button.
    4. To save all your configurations: select "File" and then select "Save Preferences".

    useing working

    WebKing can be used to test for files or directories on local file system, a single url or the entire web site. It also can be used to test for other web standards beside accessibility standards. For more information please visit the IBM WebKing Knowledge Community Web site.

    "Run Accessibility Test" methods(执行AVT 的方法)

    There are many ways to execute the accessibility step in WebKing. Users can use one of the following methods when asked to "Run Accessibility Test" in the examples:

    • Click on the "Static Analysis" icon (the one that has a triangle picture on it) or
    • Click on the "Common Standards CodeWizard" icon (the one that has a red had picture on it) and then select "Step 4a: Check Web Accessibility (WCAG 2.0)" or
    • From the WebKing menu, select "Tools" and then select "Static Analysis" or
    • From the WebKing menu, select "Tools", "Common Standards CodeWizard" and then select "Step 4a: Check Web Accessibility (WCAG 2.0)".

    The following are some step by step examples on how to test accessibility with WebKing.

    Example 1: Checking files on local file system for Accessibility

    This example is used when testing files directly from local file system or from a mapped network drive.

    1. Ensure that you have configured WebKing per the setup instructions above.
    2. From the WebKing menu, select "View" and then select "Show File Viewer".
    3. Select the "Files" tab in the left hand panel.
    4. Navigate through the directory tree and select the desired file or files or entire directory.
    5. Run Accessibility Test using one of the methods listed above.
    6. Accessibility violations will be displayed in the right hand panel.

     

    Example 2: Checking a Web site for Accessibility by creating a simple project

    This example is used when testing static web pages served from a web server.

    1. From the WebKing menu, select "File", "New" and then select "Project".

     

         2.On the "Source" tab, enter the URL in the "Start URL" field

         

          3、If you want WebKing to load only the subdirectories from the initial start URL, select the "Restrict scanning to deepest subdirectory of Start URL" option

    如果你只想通过最初始的开始界面装载子目录,选择“限制从开始页面检查最深的子目录”选项。

         4.If you want WebKing to follow redirects to sites that are not specified as allowed URLs, select the "Follow redirects not specified as restrictions in the table" option

    (不太懂啥意思,看后面翻过来补充)

        5、Add or remove an URL entry in the "Allowable and Restricted URLs" table is optional.

        6、Select the desired "Loading depth". (定义深度,0表示当前页)
    Note: A loading depth of "0" (zero) tells WebKing to test only the page specified by the URL. A non-zero depth tells WebKing to follow links from the first page to the depth specified. When testing a live web site, a loading depth of zero is suggested the first time you test the site. As your test progresses, you can test each URL in your site individually with a loading depth of zero, or you may choose to specify the main entry page URL, and increase the loading depth to include all pages within the site.

       7、Select the "Project" tab, enter a project name and then click OK.

       8、WebKing will then load the project. You may be prompted for Form. or Password input while the site loads.
    Note: WebKing is able to test Web sites that accept HTTP cookies or require password entry. When WebKing loads a site that requires authentication, WebKing prompts the user to enter valid username/password pairs as needed. Passwords can be saved in the project, modified or deleted.

        9、In the left hand panel, WebKing will create a "Project" tab, with the project name and URL or directory displayed.

        10、At this point, you can highlight the URL, the project name, a single file or a directory in the project

         11、Run Accessibility Test using one of the methods listed above.

         12、Accessibility violations will be displayed in the right hand panel.


     

    Example 3: Checking a dynamic Web site for Accessibility by creating a path

    This example is used when testing HTML pages created dynamically by web applications or portal web sites.

    Note: This example requires Internet Explorer to be installed on the system because the "Record using browser" function is not currently supported with Firefox.

    1. From the WebKing menu, select "File", "New" and then select "Project".

       

     

        2、On the "Source" tab, enter the URL in the "Start URL" field

     

    1. If you want WebKing to load only the subdirectories from the initial start URL, select the "Restrict scanning to deepest subdirectory of Start URL" option
    2. If you want WebKing to follow redirects to sites that are not specified as allowed URLs, select the "Follow redirects not specified as restrictions in the table" option
    3. Add or remove an URL entry in the "Allowable and Restricted URLs" table is optional.
    4. Set the "Loading depth" to "0" (zero) so only the initial page will be loaded.
    5. Select the "create paths" option then click OK.
    6. On the "Path Creation Wizard" dialog, select "Record using browser", select "Record Only" and then click OK.
    7. A browser will pop up with the initial page, continue to click on links or fill out forms on the web page to set up your testing path. When finish, close your browser.
    8. A path is created on the "Paths" tab. Select the top node "Paths" to check for the whole path.
    9. Run Accessibility Test using one of the methods listed above.
    10. Accessibility violations will be displayed in the right hand panel.
291/212>
Open Toolbar