`
tansitongba
  • 浏览: 503437 次
文章分类
社区版块
存档分类
最新评论

使用QTP检查页面中的基本异常

 
阅读更多

 页面异常输入测试系统测试的一个重要方面,但是因为比较繁杂,人工测试时往往难以完全覆盖,此时采用自动化测试,就有相当的优势了。

  其中就包括很多异常输入测试点:

  名称不能包含特殊字符,固定的电话格式,固定的手机格式,银行账号(必须全为数字),付费号码长度限制,手机号码格式、长度限制,Email格式限制等

  其实异常策略是有通用性的,现总结如下:

  1.exp@@SpecialChar(e_chr) 包含特殊字符,e_chr为指定的特殊字符

  2.exp@@StringLenMax(e_len) 字符串超过最大长度,e_len为最大长度值

  3.exp@@StringLenMin(e_len) 字符串不足最小长度,e_len为最小长度值

  4.exp@@String 字符串包含数字(要求全字符)

  5.exp@@Num 字符串包含字符(要求全数字)

  6.exp@@NumMax(e_max) 输入超过指定最大值,e_max,最大值

  6.exp@@NumMin(e_min) 输入不足指定最大值,e_mmin,最小值

  7.exp@@NumLenMax(e_len) 数值长度超限,e_len,长度最大值

  8.exp@@NumLenMin(e_len) 数值长度不足,e_len,长度最小值

  9.exp@@StringPre(e_pre) 字符串不为指定前缀,e_pre,前缀值

  10.exp@@NumPre(e_pre) 数值不使用指定前缀,e_pre,前缀值

  11.exp@@Email 数值不为标准Email格式

  12.exp@@Need 必输入项,提供空字符串

具体实现上,在准备数据文件时,提供两种数据:

  1. 每个字段的默认输入值,即正确值。也是自动化程序执行时默认输入的数据。

  2. 异常值,针对每个字段,提供该字段可能需要的异常策略,对所有异常进行遍历。

  第一行为默认值,第二行为字段对应的异常策略。

  分三个函数来处理:

  1. 执行函数

Public Sub excep_OpUser()
routingname = "企业用户输入-异常测试"
' 载入数据表数据的第2行
GE_SetCurRow OppDataFile,"企业用户",2
Dim objStr,oScript,i
set objStr = CreateObject("Scripting.Dictionary")
set oScript = CreateObject("Scripting.Dictionary")

‘ 根据数据表字段设置每个字段的QTP执行语句
for i = 1 to DataTable.GetSheet("UserData").GetParameterCount
if DataTable.GetSheet("UserData").GetParameter(i)="企业名称" Then _
objStr.add DataTable.value(i,"UserData"),".WebEdit("opername").set "
...
Next

‘ 调用异常数据生成函数,返回值保存在dictionary对象oScript中
Gen_excepData(objStr,oScript)

‘ 依次对含异常策略的字段进行异常测试
For i = 0 to oScript.Count-1
Call OpUserSet(1,oScript(i))
Next

set objStr = Nothing
set oScript = Nothing
End Sub

 2. 异常数据生成函数

Public Function Gen_excepData(byval dObj,byRef oScript)
‘ 异常值,正确值,异常类型,异常参数
Dim errorValue,CorrectValue,expType,expPara
Dim objName,scriptstr
Dim i,j,expItem
expItem = 0 ‘ 记录异常数
Randomize

for i = 1 to DataTable.GetSheet("UserData").GetParameterCount
‘ 第一行数据为默认正确数值
CorrectValue = DataTable.GetSheet("UserData").GetParameter(i).ValueByRow(1)
datatable.SetCurrentRow 2

if Instr(Datatable.value(i,"UserData"),"
exp@@")>0 Then
objName = dObj.Item(Datatable.value(i,"UserData"))
‘ 同一字段多种异常策略的处理
arr1 = split (Datatable.value(i,"UserData"),"|",-1,1)
For j = 0 to Ubound(arr1)
‘ 获取异常类型和异常参数
If RegExpTest("exp@@.{1,}/(.{1,}/)",arr1(j)) Then
exptype = Mid(arr1(j),6,InStr(arr1(j),"(")-6)
expPara = Mid(arr1(j),InStr(arr1(j),"(")+1,InStr(arr1(j),")")-InStr(arr1(j),"(")-1)
Else
expType = replace(arr1(j),"exp@@","")
End If
‘ 不同策略对应的数据生成
select Case expType
Case "SpecialChar"
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"%")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"'")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"/")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),":")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"*")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"&")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"?")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"""")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"<")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),">")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"|")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),"(")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
errorValue = Replace(CorrectValue,Right(CorrectValue,1),")")
scriptstr = objName + chr (34) + errorValue + chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "StringLenMax"
errorValue = CorrectValue
Dim n
For n = 1 to expPara+1-Len(CorrectValue)
errorValue = errorValue & chr(Int(26 * Rnd + 97))
Next
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "StringLenMin"
errorValue = Left(CorrectValue,expPara-1)
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "String"
errorValue = ""
Dim n
For n = 1 to Len(CorrectValue)
errorValue = errorValue & chr(Int(10 * Rnd + 48))
Next
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "Num"
errorValue = Left(CorrectValue,Len(CorrectValue)-1) & chr(Int(26 * Rnd + 97))
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "NumMax"
errorValue = expPara + 1
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "NumMin"
errorValue = expPara - 1
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "NumLenMax"
errorValue = CorrectValue
Dim n
For n = 1 to expPara+1-Len(CorrectValue)
errorValue = errorValue & chr(Int(10 * Rnd + 48))
Next
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "NumLenMin"
errorValue = Left(CorrectValue,expPara-1)
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "StringPre"
Dim n,tmpStr
tmpStr = ""
For n = 1 to Len(expPara)
tmpStr = tmpStr & chr(Int(26 * Rnd + 97))
Next
errorValue = Replace(CorrectValue,expPara,tmpStr)
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "NumPre"
Dim n,tmpStr
tmpStr = ""
For n = 1 to Len(expPara)
tmpStr = tmpStr & chr(Int(10 * Rnd + 48))
Next
errorValue = Replace(CorrectValue,expPara,tmpStr)
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "Email"
errorValue = Replace(CorrectValue,"@",chr(Int(26 * Rnd + 97)))
errorValue = Replace(errorValue,".",chr(Int(26 * Rnd + 97)))
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
Case "Need"
errorValue = ""
scriptstr = objName & chr(34) & errorValue & chr(34)
expItem = expItem + 1
oScript.add "excepData" & expItem,scriptstr
End Select
Next
End If
Next

End Function

  3. 页面输入函数

  即相应的QTP录制执行脚本,输入默认正确数值后,将相应字段修改为异常数值后提交,再判断是否出现相应的异常提示。

  (函数省略)

  通过以上方法,可以完整覆盖页面输入的异常判断,减轻人工测试覆盖不足的问题。

分享到:
评论

相关推荐

    QTP软件测试工具中文使用说明

    - **文本检查点**:检查页面上文本内容。 - **表格检查点**:验证表格中的数据。 - **图片检查点**:对比图像。 - **检查对象**: - **定位对象**:使用对象标识符定位待检查的对象。 - **设置属性**:指定要...

    QTP飞机订票测试报告

    【QTP特点与基本操作】 QuickTest Professional(QTP)是HP公司开发的一款自动化测试工具,主要用于功能和回归测试。QTP的特点主要包括以下几个方面: 1. **自动化录制与回放**:QTP能够通过录制用户的操作来创建...

    QTP使用文档

    在QTP中创建数据表,定义参数变量,以便在测试过程中使用不同的数据集。 **在数据表中输入参数:** 为每个参数输入一组或多组数据,以进行数据驱动测试。 **修正受到参数化影响的测试步骤:** 根据数据表中的参数...

    检查链接的 QTP 脚本

    在使用"checkallurl"脚本前,你需要确保你的QTP环境已经配置好,并理解脚本的基本结构和逻辑。此外,可能需要根据你的具体需求进行定制,比如调整链接的提取规则,或者改变结果输出的方式。对于不熟悉VBScript的用户...

    QTP一些常用问题的解决方法

    在QTP的使用过程中,可能会遇到各种问题,下面我们将围绕这些常见问题进行详细的探讨。 1. **对象识别问题**:QTP通过对象库来识别应用程序中的元素。有时,由于对象属性的变化或QTP无法正确识别对象,可能导致测试...

    QTP 技术集锦 学习QTP的好东东

    - **基本概念**: 解释 Action 是什么以及如何在 QTP 中使用它。 - **高级用法**: 探讨 Action 在复杂测试脚本中的高级应用方式。 #### 17. Action 参数调用 - **定义**: 如何向 Action 传递参数以及如何在 Action ...

    QTP小解(基础知识)

    QTP支持多种类型的检查点,如值检查点、图像检查点、数据库检查点等,它们用于验证测试过程中特定对象的属性或状态是否符合预期。 3.2 创建检查点 在脚本中插入检查点,可以确保测试过程中特定步骤的正确性。这可以...

    qtp Tutorial 中文帮助

    通过"qtp Tutorial 中文帮助"的文档,初学者可以深入学习这些概念,并逐步掌握QTP的使用技巧,从而在实际工作中高效地执行自动化测试任务。教程中的`Tutorial.chm`文件很可能包含了详细的教学章节、示例和练习,帮助...

    QTP8.2中文帮助全集

    10. **检查点(Check Points)**:通过设置检查点,QTP可以在测试过程中验证应用程序的状态,如页面元素的属性、数据库记录等。 11. **测试运行与结果分析**:QTP提供详细的测试报告,包括测试步骤、结果和失败原因...

    QTP教程与脚本例子

    【恢复点(Recovery Scenarios)**是QTP的另一特色,它允许你在脚本中预设错误处理策略,当测试遇到异常时,可以按照设定恢复测试环境,继续执行测试。 【对象仓库(Object Repository)**是QTP保存所有对象的地方...

    QTP文档教程供大家学习学习

    测试结束后,根据结果视图中的信息判断测试是否成功,检查点是否匹配,异常信息是否出现。 ### 3. 建立检查点 检查点是验证被测对象属性的关键手段,QTP支持多种类型的检查点,如: - **文本检查点**:验证页面上的...

    为什么装了QTP以后,总是不能录制脚本

    在使用QTP(Quick Test Professional)进行自动化测试时,可能会遇到无法录制脚本的问题,尤其是在安装QTP之后或者禁用了IE浏览器中的某些ActiveX控件之后。此问题表现为在正常尝试录制时,QTP无法生成相应的录制...

    QTP功能测试登陆脚本改写

    首先,我们需要理解QTP脚本的基本结构。通常,一个QTP脚本会包括初始化、主体测试步骤和清理(或注销)阶段。在初始化阶段,我们会设置环境参数、打开应用程序等;主体测试步骤执行实际的功能操作,如输入用户名和...

    QTP自动化测试脚本实例与说明

    2. 使用检查点:QTP提供了多种检查点类型,如Value Check、Existence Check等,可以方便地验证页面元素的值、存在性等。 五、文档与资源 提供的文档"QTP自动化脚本.doc"可能详细介绍了上述步骤,而"LOGIN.rar"可能...

    QTP相关QTP相关QTP相关

    针对你的问题,我们将深入探讨QTP中的网页检查点设置以及脚本生成的记录。 网页检查点是QTP中一种重要的验证机制,它用于检查网页上的某个元素(如文本、图像、链接等)是否符合预期状态。当设置网页检查点时,QTP...

    dongsj-QTP培训ppt+demo

    8. **错误处理**:了解QTP中的异常处理机制,如Try...Catch结构,以增强测试脚本的健壮性。 9. **报告和结果分析**:学习如何查看和分析测试结果,理解测试失败的原因,以便进行问题定位和修复。 其次,"**demo**...

    常用QTP函数合集

    - **异常处理**:如果在关闭过程中遇到异常,如弹出对话框,则需要通过激活对话框并发送键盘事件来模拟用户点击确定按钮的行为,从而确保关闭过程顺利完成。 - **报告结果**:最终,函数会根据关闭情况输出相应的...

    qtp的一些实用的例子

    8. **关联(Correlation)**:在动态网页测试中,QTP需要处理动态变化的对象,如会话ID或验证码。关联技术允许我们捕获和替换这些动态值,确保脚本的可重复执行。 9. **测试资源管理**:QTP的测试资源管理器...

Global site tag (gtag.js) - Google Analytics