CN105260318A - 一种基于网页的自动化测试方法及装置 - Google Patents
一种基于网页的自动化测试方法及装置 Download PDFInfo
- Publication number
- CN105260318A CN105260318A CN201510829175.8A CN201510829175A CN105260318A CN 105260318 A CN105260318 A CN 105260318A CN 201510829175 A CN201510829175 A CN 201510829175A CN 105260318 A CN105260318 A CN 105260318A
- Authority
- CN
- China
- Prior art keywords
- test
- request
- page
- sut
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明公开一种基于网页的自动化测试方法,属于自动化测试领域。该方法包括:测试系统将预设的测试类名形成测试类列表,读取测试类列表中的测试类名查找相应的测试类,读取测试类中的测试用例名形成测试用例列表,读取测试用例列表中的测试用例名查找相应的测试用例,根据测试用例查找和操作页面元素并在被测页面上查找预设的页面元素,进行测试结果断言。测试系统判断测试用例列表中是否还有未被读取的测试用例名,是则查找相应的测试用例,否则判断测试类列表中是否还有未被读取的测试类名,若测试类列表中还有未被读取的测试类名则查找相应的测试类,否则测试结束。本方法的有益效果在于实现了基于网页的自动化测试。
Description
技术领域
本发明涉及自动化测试领域,尤其涉及一种基于网页的自动化测试方法及装置。
背景技术
基于网页的测试是一项重要而繁琐的工作,在基于网页的测试中不仅需要检查和验证页面是否能按照设计的要求正常执行,而且还要检测在不同的用户端是否能正常显示并从最终用户的角度进行可用性和安全性的测试。目前,基于网页的测试主要采用手工测试,手工测试非常耗费时间和人力,而且工作枯燥;在手工测试的过程中,由于测试人员的不同出现不同的测试结果,测试问题的重现比较困难,因此测试结果的准确性无法保证。
发明内容
本发明目的是为了克服现有技术的缺陷,提出一种基于网页的自动化测试方法。
一种基于网页的自动化测试方法,其特征在于,包括:
步骤101、测试系统读取预设的测试类名,形成测试类列表;
步骤102、所述测试系统在所述测试类列表中获取一个尚未被获取过的测试类名;
步骤103、所述测试系统根据获取到的所述测试类名查找对应的测试类作为当前测试类,读取所述当前测试类中的测试用例名,形成测试用例列表;
步骤104、所述测试系统在所述测试用例列表中获取一个尚未被获取过的测试用例名;
步骤105、所述测试系统根据获取到的所述测试用例名在所述当前测试类中查找对应的测试用例作为当前测试用例,根据所述当前测试用例初始化被测页面以及在所述被测页面上查找并操作页面元素,并在所述浏览器的当前页面中查找标识测试成功的页面元素,根据查找结果得到所述当前测试用例的测试结果;
进一步的,所述步骤105具体包括:
步骤201、所述测试系统根据获取到的所述测试用例名在所述当前测试类中查找对应的测试用例作为当前测试用例,并查找所述当前测试用例对应的测试数据文件,读取所述测试数据文件中的测试数据形成测试数据列表;
步骤202、所述测试系统在所述测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
步骤203、所述测试系统根据所述当前测试数据在所述被测页面上查找并填写需填写测试数据的输入框;
进一步的,所述步骤203,具体包括:
步骤401、所述测试系统从所述当前测试数据中获取需填写测试数据的输入框的查找方式,根据所述会话标识和所述需填写测试数据的输入框的查找方式生成请求数据;
步骤402、所述测试系统在所述操作命令文件中获取查找页面元素的命令字键值对,获取所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
步骤403、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述查找页面元素的命令字键值对生成请求头;
步骤404、所述测试系统将所述请求行、所述请求头、空行和请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤405、所述测试系统接收所述被测系统返回的响应报文并读取所述响应报文中的状态项,根据所述状态项判断是否成功查找到所述需填写测试数据的输入框,是则保存所述响应报文中的需填写测试数据的输入框标识,执行步骤406,否则退出所述当前测试用例,执行所述步骤106;
步骤406、所述测试系统在所述当前测试数据中获取需填写的测试数据,根据会话标识、所述需填写的测试数据和所述需填写测试数据的输入框标识生成请求数据;
步骤407、所述测试系统在所述操作命令文件中获取发送数据的命令字键值对,获取所述会话标识给所述发送数据的命令字键值对中的第一字符串赋值,获取所述需填写测试数据的输入框标识给所述发送数据的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述发送数据的命令字键值对和所述HTTP版本字符串生成请求行;
步骤408、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息;根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的发送数据的命令字键值对组成请求头;
步骤409、所述测试系统将所述请求行、所述请求头、空行和请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤410、所述测试系统接收所述被测系统返回的响应并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功填写测试数据,是则执行步骤204,否则退出当前测试用例,执行所述步骤106。
步骤204、所述测试系统在预设的页面元素文件中获取确定执行测试的按钮的查找方式,根据查找到的所述确定执行测试的按钮的查找方式查找并触发确定执行测试的按钮;
进一步的,所述步骤204,具体包括:
步骤501、所述测试系统在所述页面元素文件中获取所述确定执行测试的按钮所对应的所述查找方式,根据所述会话标识和所述确定执行测试的按钮所对应的所述查找方式生成请求数据;
步骤502、所述测试系统在所述操作命令文件中获取查找页面元素的命令字键值对,获取会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
步骤503、所述测试系统读取所述工程配置文件中所述被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对组成请求头;
步骤504、所述测试系统将所述请求行、所述请求头、空行和请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤505、所述测试系统接收所述被测系统返回的响应报文,并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到所述确定执行测试的按钮,是则保存所述响应报文中确定执行测试的按钮标识,执行步骤506,否则退出所述当前测试用例,执行所述步骤106;
步骤506、所述测试系统根据所述会话标识和所述确定执行测试的按钮标识生成请求数据;
步骤507、所述测试系统在所述操作命令文件中获取触发按钮的命令字键值对,根据所述会话标识给所述触发按钮的命令字键值对的第一字符串赋值,根据所述确定执行测试的按钮标识给所述触发按钮的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的得到HTTP版本字符串,根据赋值后的所述触发按钮的命令字键值对和所述HTTP版本字符串生成请求行;
步骤508、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息;根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的触发按钮的命令字键值对组成请求头;
步骤509、所述测试系统将所述请求行、所述请求头、空行和请求数据顺序拼接得到请求报文并向所述被测系统发送所述请求报文;
步骤510、所述测试系统接收所述被测系统返回的响应并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功触发按钮,是则执行步骤205,否则退出当前测试用例,执行所述步骤106。
步骤205、所述测试系统等待预设时长,判断在所述浏览器的所述当前页面上是否能够查找到所述标识测试成功的页面元素,若查找到,则测试结果为成功,执行步骤206,若没有查找到,则测试结果为失败,执行步骤206;
进一步的,所述步骤205,具体包括:
步骤601、所述测试系统在所述页面元素文件中获取所述当前测试用例中预设的页面元素的查找方式,根据所述会话标识和所述预设的页面元素的查找方式组成请求数据;
步骤602、所述测试系统在所述操作命令文件中获取查找页面元素的命令字键值对,根据所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
步骤603、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对生成请求头;
步骤604、所述测试系统将所述请求行、所述请求头、空行和请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤605、所述测试系统接收所述被测系统返回的响应并读取响应报文中的状态项,根据所述状态项判断是否成功查找到所述预设的页面元素,是则保存所述预设的页面元素标识执行步骤606,否则测试结果为失败,执行所述步骤206;
步骤606、所述测试系统在所述操作命令文件中查找获取页面元素内容的命令字键值对,根据所述会话标识给所述获取页面元素内容的命令字键值对中的第一字符串赋值,根据标识测试成功的页面元素标识给所述获取页面元素内容的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述获取页面元素内容的命令字键值对和所述HTTP版本字符串生成请求行;
步骤607、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据请求目的地、所述被测系统的默认信息和所述赋值后的获取页面元素内容的命令字键值对生成请求头;
步骤608、所述测试系统将所述请求行和所述请求头顺序拼接得到所述请求报文并向所述被测系统发送所述请求报文;
步骤609、所述测试系统接收所述被测系统返回的响应报文并读取响应报文中的所述状态项,根据所述状态项判断是否成功获取预设的页面元素内容,若没有获取到所述预设的页面元素内容则测试结果为失败,执行步骤206,
若成功获取到所述预设的页面元素内容则判断获取到的页面元素是否为标识测试成功的页面元素,若获取到的页面元素是标识测试成功的页面元素则测试结果为成功,执行步骤206,若获取到的页面元素不是标识测试成功的页面元素则测试结果为失败,执行步骤206。
步骤206、所述测试系统判断所述测试数据列表中是否还有未被获取的测试数据,是则返回步骤202,否则执行步骤106;
优选的,所述步骤205之后、所述步骤206之前还包括,所述测试系统将所述当前测试数据中的期望值与所述测试结果进行比较,并将比较结果写入所述测试报告文件。
优选的,所述步骤203之前还包括所述测试系统启动所述浏览器,并根据所述当前测试用例初始化所述被测页面。
所述启动所述浏览器,具体包括:
步骤301、所述测试系统读取预设的工程配置文件中的浏览器配置信息,根据所述浏览器配置信息生成请求数据;
步骤302、所述测试系统读取预设的操作命令文件,在所述预设的操作命令文件中查找启动浏览器的命令字键值对,并在所述工程配置文件中获取HTTP版本字符串,根据所述启动浏览器的命令字键值对和所述HTTP版本字符串组成请求行;
步骤303、所述测试系统读取所述工程配置文件中的被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述启动浏览器的命令字键值对生成请求头;
步骤304、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤305、所述测试系统接收所述被测系统的响应报文,并读取所述响应报文中的状态项,根据所述状态项判断是否成功启动所述浏览器,是则获取并保存所述响应报文中的会话标识,否则结束测试。
优选的,步骤105之前还包括创建测试报告文件,保存所述测试报告文件;步骤105中所述得到所述当前测试用例的测试结果还包括将得到的所述测试结果写入所述测试报告文件。
步骤106、所述测试系统判断当前测试用例列表中是否还有未被获取过的测试用例名,是则返回步骤104,否则执行步骤107;
步骤107、所述测试系统判断所述测试类列表中是否还有未被获取过的测试类名,是则返回步骤102,否则结束测试。
优选的,所述步骤107中所述测试系统判断所述测试类列表中没有未被获取过得测试类名时还包括关闭浏览器。
进一步的,所述关闭浏览器具体包括:
步骤C1、所述测试系统在操作命令文件中查找所述关闭浏览器的命令字键值对,根据所述会话标识给所述命令字键值对的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,将赋值后的所述关闭浏览器的所述命令字键值对和所述HTTP版本字符串生成请求行;
步骤C2、所述测试系统读取所述工程配置文件中被测系统的默认信息,根据请求目的地、所述被测系统的默认信息和所述赋值后的关闭浏览器的所述命令字键值对生成请求头;
步骤C3、所述测试系统将所述请求行和所述请求头顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤C4、所述测试系统接收被测系统返回的响应报文,并读取所述响应报文中的状态项,根据所述状态项判断是否成功关闭所述浏览器,是则结束测试,否则结束测试。
当前测试用例为令牌锁定测试用例时,所述步骤105具体包括:
步骤701、所述测试系统打开所述被测系统的令牌管理测试页面;
所述打开所述被测系统的令牌管理测试页面具体包括:
步骤B1、所述测试系统读取所述工程配置文件中的登录页面网址,将所述会话标识和所述登录页面网址组成请求数据;
步骤B2、所述测试系统在所述操作命令文件中查找打开页面的命令字键值对,根据所述会话标识给所述打开页面命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面命令字键值对和所述HTTP版本字符串组成请求行;
步骤B3、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的所述打开页面命令字键值对组成请求头;
步骤B4、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序组成请求报文并向所述被测系统发送所述请求报文;
步骤B5、所述测试系统接收所述被测系统返回的响应报文并读取响应报文中的所述状态项,根据所述状态项判断是否成功打开登录页面,是则执行步骤B6,否则退出当前测试用例,执行所述步骤106;
步骤B6、所述测试系统读取所述工程配置文件中的用户名和登录密码信息,在所述登录页面查找所述登录页面的用户名输入框和密码输入框,将读取到的用户名和登录密码分别填入查找到的所述用户名输入框和所述密码输入框,查找并识别验证码图片,将识别得到的验证码填入验证码输入框,查找并触发登录按钮,页面跳转到令牌管理测试页面。
步骤702、所述测试系统查找令牌锁定测试数据文件,读取所述令牌锁定测试数据文件中的测试数据形成令牌锁定测试数据列表;
步骤703、所述测试系统在所述令牌锁定测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
步骤704、所述测试系统查找令牌号输入框,将所述当前测试数据中的令牌号填入所述令牌号输入框;
步骤705、所述测试系统查找并触发搜索按钮;
步骤706、所述测试系统查找并获取搜索结果总数文字并从所述搜索结果总数文字中取出搜索结果数量,判断所述搜索结果数量是否为0,是则测试结果为失败,执行步骤710,否则执行步骤707;
步骤707、所述测试系统查找并触发所述当前测试数据中的所述令牌号所对应的锁定按钮;
步骤708、所述测试系统等待预设时间,并判断所述浏览器的当前页面是否能够查找到信息提示框,若查找到则执行步骤709,若未查找到则测试结果为失败,执行步骤710;
步骤709、所述测试系统获取所述信息提示框中的内容,并判断所述信息提示框中的内容是否为‘锁定成功’,是则测试结果为成功,执行步骤710,否则测试结果为失败,执行步骤710;
步骤710、所述测试系统判断所述令牌锁定测试数据列表中是否还有未被获取过的测试数据,是则返回所述步骤703,否则执行所述步骤106。
当前测试用例为登录测试用例时,所述步骤105具体包括:
步骤801、所述测试系统打开所述被测系统的登录页面;
所述打开被测系统的登录页面具体包括:
步骤901、所述测试系统读取所述工程配置文件中的登录页面网址,根据所述会话标识和所述登录页面网址生成请求数据;
步骤902、所述测试系统在所述操作命令文件中查找打开页面的命令字键值对,获取所述会话标识给所述打开页面的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面的命令字键值对和所述HTTP版本字符串组成请求行;
步骤903、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的打开页面的命令字键值对生成请求头;
步骤904、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文并向所述被测系统发送所述请求报文;
步骤905、所述测试系统接收所述被测系统返回的响应报文,读取所述响应报文中的所述状态项,根据所述状态项判断是否成功打开所述登录页面,是则执行所述步骤802,否则退出当前测试用例,执行所述步骤106。
步骤802、所述测试系统查找登录测试数据文件,读取所述登录测试数据文件中的测试数据形成登录测试数据列表;
步骤803、所述测试系统在所述登录测试数据列表中获取一条未被获取过的测试数据作为当前测试数据;
步骤804、所述测试系统查找用户名输入框,并将所述当前测试数据中的用户名填入所述用户名输入框;查找密码输入框并将所述当前测试数据中的密码填入所述密码输入框;
步骤805、所述测试系统查找验证码图片,通过光学识别的方式识别验证码图片获取验证码,查找验证码输入框并将获取到的验证码填入所述验证码输入框;
步骤806、所述测试系统查找并触发登录按钮;
步骤807、所述测试系统等待预设时间,并在浏览器的当前页面查找退出登录按钮,若查找到则测试结果为成功执行步骤808,若没有查找到则测试结果为失败,执行步骤808;
步骤808、所述测试系统判断所述登录测试数据列表中是否还有未被获取过的测试数据,是则返回所述步骤803,否则执行步骤106。
当前测试用例为令牌导入测试用例时,所述步骤105具体包括:
步骤A1、所述测试系统打开令牌管理测试页面;
步骤A2、所述测试系统查找令牌导入测试数据文件,读取当前测试数据文件中的测试数据形成令牌导入测试数据列表;
步骤A3、所述测试系统在所述令牌导入测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
步骤A4、所述测试系统查找令牌地址输入框并将测试数据中的令牌地址填入所述令牌地址输入框;
步骤A5、所述测试系统查找并触发导入按钮;
步骤A6、所述测试系统等待预设时长,在所述浏览器的当前页面上查找信息提示框,若查找到则执行步骤A7,若没有查找到则测试结果为失败,执行步骤A8;
步骤A7、所述测试系统获取信息提示框中的内容,判断是否为‘导入成功’,是则测试结果为成功,执行步骤A8,否则测试结果为失败,执行步骤A8;
步骤A8、所述测试系统判断所述令牌导入测试数据列表中是否还有未被获取过的测试数据,是则返回步骤A3,否则执行步骤106。
一种基于网页的自动化测试装置,其特征在于,包括:
存储模块,用于存储测试类和预设的测试类名;
测试类列表生成模块,用于读取所述存储模块中预设的测试类名形成测试类列表;
获取测试类模块,用于在所述测试类列表生成模块形成的所述测试类列表中获取一个尚未被获取过的测试类名;
测试用例列表生成模块,用于根据获取到的所述测试类名在所述存储模块中查找对应的测试类作为当前测试类,读取所述当前测试类中的测试用例名形成测试用例列表;
获取测试用例模块,用于在所述测试用例列表生成模块形成的所述测试用例列表中获取一个尚未被获取过的测试用例名;
执行测试用例模块,用于根据获取到的所述测试用例名在所述获取测试类模块查找到的所述当前测试类中查找对应的测试用例作为当前测试用例,根据所述当前测试用例初始化被测页面以及在所述被测页面中查找并操作页面元素,在所述浏览器的当前页面中查找标识测试成功的页面元素,根据查找结果得到所述当前测试用例的测试结果;
进一步的,所述执行测试用例模块具体包括:
所述存储模块中还用于存储测试数据文件和页面元素文件;
测试数据列表生成子模块,用于用于根据获取测试用例模块15获取到的测试用例名在当前测试类中查找相应的测试用例作为当前测试用例,在所述存储模块中根据所述当前测试用例查找对应的测试数据文件,读取所述测试数据文件中的测试数据形成测试数据列表;
获取测试数据子模块,用于在所述测试数据列表生成子模块形成的所述测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
填写输入框子模块,用于根据所述获取测试数据子模块获取的所述当前测试数据在所述被测页面上查找并填写需填写测试数据的输入框;
具体的,所述存储模块还用于存储操作命令文件,所述填写输入框子模块包括:
查找输入框请求数据生成单元,用于从所述测试数据中获取需填写测试数据的输入框的查找方式,根据所述会话标识和所述需填写测试数据的输入框的查找方式生成请求数据;
查找输入框请求行生成单元,用于在所述操作命令文件中获取查找页面元素的命令字键值对,获取所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
查找输入框请求头生成单元,用于读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述查找页面元素的命令字键值对生成请求头;
查找输入框请求报文发送单元,用于将所述查找输入框请求行生成单元生成的所述请求行、所述查找输入框请求头生成单元生成的所述请求头、空行以及所述查找输入框请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
查找输入框响应报文接收单元,用于接收所述被测系统返回的响应报文,并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到所述需填写测试数据的输入框,若成功查找到所述需填写测试数据的输入框则保存所述响应报文中的需填写的测试数据的输入框标识并触发填写输入框请求数据生成单元,否则触发所述测试用例列表判断模块;
填写输入框请求数据生成单元,用于在所述当前测试数据中获取需填写的测试数据,根据所述会话标识、所述需填写的测试数据的输入框标识和所述需填写测试数据的输入框标识生成请求数据;
填写输入框请求行生成单元,用于在所述操作命令文件中获取发送数据的命令字键值对,获取所述会话标识给所述发送数据的命令字键值对中的第一字符串赋值,获取所述需填写测试数据的输入框标识给所述发送数据的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述发送数据的命令字键值对和所述HTTP版本字符串生成请求行;
填写输入框请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息;根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的发送数据的命令字键值对生成请求头;
填写输入框请求报文发送单元,用于将所述填写输入框请求行生成单元生成的所述请求行、所述填写输入框请求头生成单元生成的所述请求头、空行以及所述填写输入框请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
填写输入框响应报文接收单元,用于接收所述被测系统返回的响应报文,并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功填写测试数据,是则触发触发按钮子模块,否则触发测试用例列表判断模块。
触发按钮子模块,用于在存储模块中的预设的页面元素文件中获取确定执行测试的按钮的查找方式,并根据查找到的所述确定执行测试的按钮的查找方式查找并触发确定执行测试的按钮;
所述触发按钮子模块包括:
所述存储模块还用于存储页面元素文件;
查找按钮请求数据生成单元,用于在所述页面元素文件中获取所述确定执行测试的按钮所对应的所述查找方式,根据所述会话标识和所述确定执行测试的按钮的查找方式生成请求数据;
查找按钮请求行生成单元,用于在所述操作命令文件中获取查找页面元素的命令字键值对,获取会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
查找按钮请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对组成请求头;
查找按钮请求报文发送单元,用于将所述查找按钮请求行生成单元生成的所述请求行、所述查找按钮请求头生成单元生成的请求头、空行以及所述查找按钮请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
查找按钮响应报文接收单元,用于接收所述被测系统返回的响应报文;并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到所述确定执行测试的按钮,若成功查找到保存所述响应报文中的确定执行测试的按钮标识并触发触发按钮请求数据生成单元,否则触发测试用例列表判断模块;
触发按钮请求数据生成单元,用于根据所述会话标识和所述确定执行测试的按钮标识生成请求数据;
触发按钮请求行生成单元,用于在所述存储模块中所述预设的操作命令文件中获取触发按钮的命令字键值对,根据所述会话标识给所述触发按钮的命令字键值对的第一字符串赋值,根据所述确定执行测试的按钮给所述触发按钮的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述触发按钮的命令字键值对和所述HTTP版本字符串生成请求行;
触发按钮请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息;根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的触发按钮的命令字键值对组成请求头;
触发按钮请求报文发送单元,用于将所述触发按钮请求行生成单元生成的所述请求行、所述触发按钮请求头生成单元生成的所述请求头、空行以及所述触发按钮请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
触发按钮响应报文接收单元,用于接收所述被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功触发确定执行测试的按钮,是则触发获取页面元素内容子模块,否则触发测试用例列表判断模块。
获取页面元素内容子模块,用于从所述的页面元素文件获取查找标识测试成功的页面元素的查找方式,根据所述标识测试成功的页面元素的查找方式在操作后的页面查找标识测试成功的页面元素;
所述获取页面元素内容子模块包括:
查找请求数据生成单元,用于在所述页面元素文件中获取所述当前测试用例中预设的页面元素的查找方式,根据所述会话标识和所述预设的页面元素的查找方式组成请求数据;
查找请求行生成单元,用于在所述预设的操作命令文件中获取查找页面元素的命令字键值对,根据所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
查找请求头生成单元,用于读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对生成请求头;
查找请求报文发送单元,用于将所述查找请求行生成单元生成的所述请求行、所述查找请求头生成单元生成的请求头、空行以及所述查找请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
查找响应报文接收单元,用于接收所述被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到预设的的页面元素,若成功页面元素则保存响应报文中需获取页面元素内容的页面元素标识,触发获取内容请求行生成单元,否则触发测试用例列表判断模块;
获取内容请求行生成单元,用于在所述操作命令文件中查找获取页面元素内容的命令字键值对,根据所述会话标识给所述获取页面元素内容的命令字键值对中的第一字符串赋值,根据标识测试成功的页面元素标识给所述获取页面元素内容的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述获取页面元素内容的命令字键值对和所述HTTP版本字符串生成请求行;
获取内容请求头生成单元,用于读取所述工程配置文件中的所述被测系统的默认信息;根据所述请求目的地、所述被测系统的默认信息和所述赋值后的获取页面元素内容的命令字键值对生成请求头;
获取内容请求报文发送单元,用于将所述获取内容请求行生成单元生成的所述请求行、所述获取内容请求头生成单元生成的所述请求头顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
获取内容响应报文接收单元,用于接收所述被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功获取页面元素内容,是则触发测试数据列表判断子模块,否则触发测试结果断言子模块。
测试结果断言子模块,用于等待预设时长并判断在所述浏览器的当前页面上是否能够查找到标识测试成功的页面元素,根据查找结果得到测试结果,触发测试数据列表判断模块;
测试数据列表判断子模块,用于判断所述测试数据列表生成子模块形成的所述测试数据列表中是否还有未被获取的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
所述执行测试用例模块还包括,测试报告子模块,用于创建测试报告文件,将测试报告文件保存到所述存储模块中;
所述存储模块,还用于保存所述测试报告子模块创建的所述测试报告文件。
所述测试结果断言子模块还用于所述测试结果写入所述存储模块中的所述测试报告文件。
所述执行测试用例模块还包括比较子模块,用于将所述测试结果断子言模块得到的所述测试结果与所述获取测试数据子模块获取到的测试数据中的期望值进行比较,并将比较结果写入所述存储模块中的所述测试报告文件。
启动浏览器子模块,用于启动所述浏览器;
所述启动浏览器子模块包括:
所述存储模块中还用于存储预设的操作命令文件;
启动浏览器请求数据生成单元,用于读取工程配置文件中的浏览器配置信息,根据所述浏览器配置信息生成请求数据;
启动浏览器请求行生成单元,用于读取存储模块中的所述预设的所述操作命令文件,在所述操作命令文件中查找启动浏览器的命令字键值对,并在所述工程配置文件中获取HTTP版本字符串,根据所述启动浏览器的命令字键值对和所述HTTP版本字符串组成请求行;
启动浏览器请求头生成单元,用于读取所述工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述启动浏览器的命令字键值对生成请求头;
启动浏览器请求报文发送单元,用于将所述启动浏览器请求行生成单元生成的请求行、所述启动浏览器请求头生成单元生成的请求头、空行以及所述启动浏览器请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
启动浏览器响应报文接收单元,用于接收所述被测系统的响应报文;并读取所述响应报文中的状态项,根据所述状态项判断是否成功启动所述浏览器,若成功启动所述浏览器则保存响所述应报文中的会话标识。
打开页面请求子模块,用于根据获取测试用例模块中查找到的测试用例打开被测页面。
测试用例列表判断模块,用于判断所述测试用例列表生成模块形成的测试用例列表中是否还有未被获取过的测试用例名,是则触发所述获取测试用例模块,否则触发测试类列表判断模块;
所述测试类列表判断模块,用于判断所述测试类列表生成模块形成的所述测试类列表中是否还有未被获取过的测试类名,是则触发所述获取测试类模块,否则结束测试。
优选的,所述自动化测试装置还包括,关闭浏览器模块,用于关闭所述浏览器。
所述关闭浏览器模块包括:
关闭浏览器请求行生成单元,用于在操作命令文件中查找所述关闭浏览器的命令字键值对,根据所述会话标识给所述命令字键值对的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,将赋值后的所述关闭浏览器的命令字键值对和所述HTTP版本字符串生成请求行;
关闭浏览器请求头生成单元,用于读取所述工程配置文件中被测系统的默认信息,根据请求目的地、所述被测系统的默认信息和所述赋值后的关闭浏览器的所述命令字键值对生成请求头;
关闭浏览器请求报文发送单元,用于将所述关闭浏览器请求行生成单元生成的所述请求行、所述关闭浏览器请求头生成单元生成的所述请求头顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
关闭浏览器响应报文接收单元,用于接收被测系统返回的响应报文并读取所述响应报文中的状态项,根据所述状态项判断是否成功关闭所述浏览器,是则结束测试,否则结束测试。
当所述获取测试用例模块获取到令牌锁定测试用例名时:
所述测试数据列表生成子模块,具体用于根据所述获取测试用例子模块获取到的测试用例名在所述当前测试用例中查找相应的测试用例作为当前测试用例,在所述存储模块中查找令牌锁定测试用例对应的测试数据文件,读取所述令牌锁定测试数据文件中的测试数据形成令牌锁定测试数据列表;
所述获取测试数据子模块,具体用于在所述令牌锁定测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
所述测试数据列表判断子模块,具体用于判断所述令牌锁定测试数据列表中是否还有未被获取过的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
所述打开测试页面子模块,具体用于打开令牌管理测试页面;
所述打开页面子模块包括:
打开页面请求数据生成单元,用于读取所述工程配置文件中的登录页面网址,根据所述会话标识和所述登录页面网址生成请求数据;
打开页面请求行生成单元,用于在所述操作命令文件中查找打开页面的命令字键值对,获取所述会话标识给所述打开页面的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面的命令字键值对和所述HTTP版本字符串组成请求行;
打开页面请求头生成单元,用于读取所述所述工程配置文件中所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的打开页面的命令字键值对生成请求头;
打开页面请求报文发送单元,用于将所述打开页面请求行生成单元组成的所述请求行、所述打开页面请求头生成单元组成的所述请求头、空行和所述打开页面请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
打开页面响应报文接收单元,用于接收被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功打开登录页面;
页面跳转单元,用于读取所述工程配置文件中的用户名和登录密码信息,在所述登陆页面中查找用户名输入框和密码输入框,将读取到的用户名和登录密码分别填入查找到的所述用户名输入框和所述密码输入框,查找并识别验证码图片,将识别得到的验证码填入验证码输入框,查找并触发登录按钮,页面跳转到令牌管理测试页面。
所述填写输入框子模块,具体用于查找令牌号输入框,将所述当前测试数据中的令牌号填入所述令牌号输入框;
所述触发按钮子模块,具体用于查找并触发搜索按钮;还用于查找并触发所述令牌号所对应的锁定按钮;
所述获取页面元素内容子模块,具体用于查找并获取搜索结果总数文字并从所述搜索结果总数文字中取出搜索结果数量;还用于在所述浏览器的当前页面查找信息提示框并获取所述信息提示框中的内容;
所述测试结果断言子模块,具体用于判断搜索结果数量是否为0,是则测试结果为失败,触发测试数据列表判断子模块,否则触发触发按钮子模块;还用于等待预设时长,判断查找到信息框内容是否为‘锁定成功’,是则测试结果为成功,否则测试结果为失败。
当所述获取测试用例模块获取到登录测试用例名时:
所述测试数据列表生成子模块,具体用于根据所述获取测试用例子模块获取到的测试用例名在所述当前测试用例中查找相应的测试用例作为当前测试用例,在所述存储模块查找登录测试数据文件,读取所述登录测试数据文件中的测试数据形成登录测试数据列表;
所述获取测试数据子模块,具体用于在所述测试数据列表生成子模块形成的所述登录测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
所述测试数据列表判断子模块,具体用于判断所述测试数据列表生成子模块形成的所述登录测试数据列表中是否还有未被获取过的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
所述打开页面子模块,具体用于打开登录页面;
所述打开页面子模块包括:
打开页面请求数据生成单元,用于读取所述工程配置文件中的登录页面网址,根据所述会话标识和所述登陆页面网址生成请求数据;
打开页面请求行生成单元,在所述操作命令文件中查找打开页面的命令字键值对,获取所述会话标识给所述打开被测页面的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面的命令字键值对和所述HTTP版本字符串组成请求行;
打开页面请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的打开页面的命令字键值对生成请求头;
打开页面请求报文发送单元,用于将所述打开页面请求行生成单元生成的所述请求行、所述打开页面请求头生成单元生成的所述请求头、空行以及所述打开页面请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
打开页面响应报文接收单元,用于接收被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功打开所述登录页面,是则触发所述测试数据列表生成子模块,否则触发测试用例列表判断子模块。
所述填写输入框子模块,具体用于查找用户名输入框,并将所述当前测试数据中的用户名填入所述用户名输入框;查找密码输入框并将所述当前测试数据中的密码填入所述密码输入框;还用于查找验证码输入框并将所述获取页面元素内容子模块中获取到的验证码填入所述验证码输入框;
所述触发按钮子模块,具体用于查找并触发登录按钮;
所述获取页面元素内容子模块,具体用于查找验证码图片,通过光学识别的方式识别验证码图片获取验证码,触发填写输入框子模块;还用于在所述浏览器的当前页面上查找退出登录按钮;
所述测试结果断言子模块,具体用于等待预设时长,判断在浏览器的当前页面是否查找到退出登录按钮,是则测试结果为成功,触发测试数据列表判断子模块,否则测试结果为失败触发测试数据列表判断子模块。
当所述获取测试用例模块获取到令牌导入测试用例名时:
所述测试数据列表生成子模块,具体用于根据所述获取测试用例子模块获取到的测试用例名在所述当前测试用例中查找相应的测试用例作为当前测试用例,在所述存储模块中查找令牌导入测试用例对应的测试数据文件,读取所述测试数据文件中的测试数据形成令牌导入测试数据列表;
所述获取测试数据子模块,具体用于在所述令牌导入测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
所述测试数据列表判断子模块,具体用于判断所述令牌导入测试数据列表中是否还有未被获取过的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
所诉打开页面子模块,具体用于打开令牌管理测试页面;
所述填写输入框子模块,具体用于查找令牌地址输入框并将测试数据中令牌地址填入令牌地址输入框;
所述触发按钮子模块,具体用于查找并触发导入按钮;
所述获取页面元素内容子模块,具体用于在浏览器的当前页面查找到信息提示框并获取信息提示框中的内容;
所述测试结果断言子模块,具体用于等待预设时长,判断在浏览器的当前页面上是否查找到内容为‘导入成功’的信息提示框,是则测试结果为成功,触发测试数据列表判断子模块,否则测试结果为失败,触发测试数据列表判断子模块。
本发明方法的有益效果在于:本发明根据测试功能不同划分为不同的测试类模块,在基于网页的自动化测试时可以根据不同的测试功能直接调用相应的测试类模块,提高的测试的灵活性。在基于网页的测试过程中节省了时间,提高了测试效率,减少了测试资源中的人力;减少了由于测试的人员不同出现不同的测试结果使得测试问题较难重现的问题,为测试的准确性提供了保障。
附图说明
为了更清楚的说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种基于网页的自动化测试方法的流程图。
图2是图1中步骤106的细化流程图。
图3是图2中步骤1065的细化流程图。
图4是图2中步骤1065的细化流程图。
图5是图2中步骤1065的细化流程图。
图6是本发明实施例二提供的一种基于网页的自动化测试装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供一种基于网页的自动化测试方法,所述方法由测试系统根据工程根目录自动执行图1所示的步骤。具体的,所述工程根目录包含启动脚本、工程配置文件、测试类、测试数据文件、命令键值对文件和页面元素文件。
步骤101、接收启动测试的命令。
步骤102、读取启动脚本中预先添加的测试类名,形成测试类列表。
所述启动脚本为网页自动化测试的总入口,指定欲执行的测试类。
例如,本实施例中,启动脚本中有两个测试类名:登录测试类名和令牌管理测试类名,形成的测试类列表中有两个测试类名。
步骤103、在测试类列表中获取一个尚未被获取过的测试类名,根据获取到的测试类名在工程根目录中查找对应的测试类。
例如,当前获取到的测试类名为登录测试类名,则在工程根目录中根据登录测试类名查找登录测试类。
步骤104、加载当前测试类中的所有测试用例名,形成测试用例列表,启动并配置浏览器。
例如,当前测试类是登录测试类,且登录测试类中包括登录测试用例,则组成的登录测试用例列表中包含登录测试用例名。又如,当前测试类是令牌管理测试类,且令牌管理测试类中包括令牌锁定测试用例和令牌导入测试用例,则组成的令牌管理测试用例列表中包括令牌锁定测试用例名和令牌导入测试用例名。
本实施例中,启动配置浏览器具体包括:
读取工程配置文件中的浏览器配置信息,将浏览器配置信息组成请求数据;在操作命令文件中查找启动浏览器所对应的命令字键值对Command.NEW_SESSION:('POST','/session'),读取当前命令字键值对获取当前操作的请求方法和请求访问的资源,所述请求方法为'POST',所述请求访问的资源为'/session',并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法,请求访问的资源和HTTP版本字符串组成请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行、请求头、空行和请求数据顺序拼接得到请求报文。
以打开谷歌浏览器为例:
测试系统向被测系统发送请求报文为:
POST/sessionHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Content-Length:209
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session
Accept:application/json
User-Agent:Pythonhttpauth
{"desiredCapabilities":{"platform":"ANY","browserName":"chrome","version":"","javascriptEnabled":true,"chromeOptions":{"prefs":{"download.prompt_for_download":true},"extensions":[],"args":[]}}}
被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":{"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"browserName":"chrome","chrome":{"userDataDir":"C:\\Users\\tester\\AppData\\Local\\Temp\\scoped_dir19184_15447"},"cssSelectorsEnabled":true,"databaseEnabled":false,"handlesAlerts":true,"javascriptEnabled":true,"locationContextEnabled":true,"mobileEmulationEnabled":false,"nativeEvents":true,"platform":"WindowsNT","rotatable":false,"takesHeapSnapshot":true,"takesScreenshot":true,"version":"41.0.2272.118","webStorageEnabled":true}}
进一步地,本实施例中,测试系统接收被测系统返回的响应报文后还包括读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明谷歌浏览器被成功打开,获取并保存会话标识f5bd57f436aa79026e4f058b34919c23;否则表明浏览器未被成功打开,测试系统结束测试。
步骤105、在测试用例列表中获取一个尚未被获取的测试用例名,在当前测试类中查找相应的测试用例,创建测试报告文件并将测试报告文件保存到工程根目录。
本实施例中,若当前获取到的为登录测试用例名,则根据登录测试用例名在登录测试类中查找该登录测试用例;若当前获取到的为令牌导入测试用例名,则根据令牌导入测试用例名在令牌管理测试用例中查找令牌导入测试用例;若当前获取到的为令牌锁定测试用例名,则根据令牌锁定测试用例名在令牌管理测试用例中查找令牌锁定测试用例。
步骤106、根据当前测试用例初始化被测页面以及查找和操作页面元素,并在浏览器的当前页面中查找标识测试成功的页面元素,根据查找结果得到测试结果,将测试结果写入测试报告文件。
如图2所示,步骤106具体包括:
步骤1061、初始化被测页面。
具体的,测试系统读取配置文件中需要进行页面功能测试的网页地址跳转到相应的网页。
本实施例中,若当前执行的测试为登录测试,则初始化测试页面具体操作为根据工程配置文件中的网址打开OTP-Server管理中心的登录页面;若当前执行的测试为令牌管理测试,则初始化测试页面具体操作为根据工程配置文件中的网址打开OTP-Server管理中心的登录页面,登录并跳转到OTP-server主页面。
读取工程配置文件中的OTP-Server管理中心网址,将获取启动浏览器响应中的SessionID值和OTP-Server管理中心网址组成请求数据;在操作命令文件中查找打开OTP-Server管理中心所对应的命令字键值对Command.GET:('POST','/session/sessionId/url'),读取当前命令字键值对获取当前操作的请求方法和请求访问的资源,所述请求方法为'POST',所述请求访问的资源为'/session/sessionId/url',将获取SessionID值给请求访问的资源中的sessionId赋值,并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法、请求访问的资源和HTTP版本字符串组成请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行、请求头、空行和请求数据顺序拼接得到请求报文。
以打开OTP-Server管理中心的登录页面为例:
测试系统向被测系统发送的请求报文:
POST/session/e1bb85daab3a39d859cd848e9d68a29c/urlHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Content-Length:125
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/e1bb85daab3a39d859cd848e9d68a29c/url
Accept:application/json
User-Agent:Pythonhttpauth
{"url":"http://192.168.2.131:18004/otpcenter/login/login.jsp?outof=false#","sessionId":"e1bb85daab3a39d859cd848e9d68a29c"}
被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":null}
进一步地,本实施例中,测试系统接收到被测系统返回的响应报文后,还包括读取被测系统返回的响应中的状态项"status",判断"status"是否为0,是则表明成功打开OTP-Server管理中心的登录页面,否则表明未成功打开OTP-Server管理中心的登录页面。
步骤1062、在工程根目录中查找当前测试用例对应的测试数据文件。
本实施例中优选的每个测试用例对应一个测试数据文件,也可以每个测试类对应一个测试数据文件。
步骤1063、读取当前测试数据文件中的测试数据形成测试数据列表。
所述的测试数据应至少包括两个部分:第一部分是测试期望值,第二部分是测试数据。
本实施例中,如果当前测试用例是登录测试用例,则在工程根目录中查找登录测试数据文件,根据登录测试数据文件中的测试数据形成登录测试数据列表;如果当前测试用例是令牌导入测试用例,则在工程根目录中查找令牌导入测试数据文件,根据令牌导入测试数据文件中的测试数据形成令牌导入测试数据列表。如果当前测试用例是令牌锁定测试用例,则在工程根目录中查找令牌锁定测试数据文件,根据令牌锁定测试数据文件中的测试数据形成令牌锁定测试数据列表。
本实施例中,令牌锁定测试数据文件可为如下格式:
expect | tokenStr |
成功 | 2600509800101 |
失败 | 2600509800102 |
失败 | 2600509800103 |
形成的登录测试数据列表如下:
[{u'tokenStr':u'2600509800101',u'expect':u'成功'},
{u'tokenStr':u'2600509800102',u'expect':u'失败'},
{u'tokenStr':u'2600509800103',u'expect':u'失败'}]。
如上,所述令牌锁定测试数据列表中有三条测试数据,本实施例中测试数据类型为字典型数据。每条字典型数据中有两组键值对(键值对由两部分构成:第一部分为Key,Key是可以识别页面元素的数据,比如页面元素的id、class、xpath、css等;第二部分为value,value是需要对该页面元素进行操作的测试数据)。例如u'tokenStr':u'2600509800101'中u'tokenStr'为Key,tokenStr为令牌号输入框ID;u'2600509800101'为键所对应的value值,2600509800101是需要锁定的令牌号。
步骤1064、在当前测试数据列表中获取一条尚未被获取的测试数据作为当前测试数据,将测试数据写入测试报告文件。
步骤1065、根据当前测试数据查找并操作页面元素,在浏览器的当前页面查找标识测试成功的页面元素,根据查找结果得到测试结果。
本实施例中包括登录测试、令牌锁定测试和令牌导入测试。
若当前进行的测试是令牌锁定测试,如图3所示,为图2中步骤1065的细化流程图,包括:
步骤A1、查找令牌号输入框,将测试数据中的令牌号填入令牌号输入框。
首先进行查找令牌号输入框操作。
读取当前测试数据的key值,将SessionID值和key值组成请求数据;在操作命令文件中查找当前操作对应的命令字键值对Command.FIND_ELEMENT:('POST','/session/sessionId/element'),读取当前命令字键值对获取请求方法和请求访问的资源,所述请求方法为'POST',所述请求访问的资源为'/session/sessionId/element',获取SessionID值给请求访问的资源中的sessionId赋值,并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法、请求访问的资源和HTTP版本字符串组成请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行、请求头、空行和请求数据顺序拼接得到请求报文。
以查询令牌号输入框为例:测试系统向被测系统发送的请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/elementHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Content-Length:85
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/element
Accept:application/json
User-Agent:Pythonhttpauth
{"using":"id","sessionId":"f5bd57f436aa79026e4f058b34919c23","value":"tokenStr"}
查找页面元素请求的响应报文包括SessionID、状态项和查找到的页面元素的标识。
被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":{"ELEMENT":"0.3983193465974182-6"}}
进一步地,本实施例中,测试系统接收到被测系统返回的响应报文后,还包括读取被测系统返回的响应报文中的状态项"status",判断"status"是否为0,是则表明查找到令牌号输入框,获取并保存令牌号输入框标识‘0.3983193465974182-6’;否则表明未查找到令牌号输入框,测试系统退出当前测试。
当前操作为将测试数据中的令牌号导入令牌号输入框。
读取当前测试数据的value值,将SessionID值、令牌号输入框标识和value值组成请求数据;在操作命令文件中查找当前操作对应的命令字键值对Command.SEND_KEYS_TO_ELEMENT:('POST','/session/sessionId/element/id/value'),读取当前命令字键值对获取请求方式和请求访问的资源,所述请求方法为'POST',所述请求访问的资源为'/session/sessionId/element/id/value',获取SessionID值给请求访问的资源中的sessionId赋值,获取令牌号输入框标识给请求访问的资源中的id赋值,并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法、请求访问的资源和HTTP版本字符串组成请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行、请求头、空行和请求数据顺序拼接得到请求报文。
测试系统发送的请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/element/
0.3983193465974182-6/valueHTTP/1.1
Host:127.0.0.1:18295
Accept-Encoding:identity
Content-Length:155
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/element/
0.3983193465974182-6/value
Accept:application/json
User-Agent:Pythonhttpauth
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","id":"
0.3983193465974182-6","value":["2","6","0","0","5","0","9","8","0","0","1","0","1"]}
被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":null}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明令牌号2600509800101成功导入令牌号输入框;否则令牌号2600509800101未成功导入令牌号输入框,测试系统退出当前测试。
步骤A2、查找并触发搜索按钮。
读取页面元素文件中搜索按钮的查找方式和搜索按钮的查找方式值,本实施例中,由于搜索按钮为超链接,搜索按钮的查找方式为linktext,查找方式值为\u67e5\u8be2’,具体的‘\u67e5\u8be2’为unicode编码的超链接文字‘搜索’。将SessionID值、搜索按钮的查找方式和搜索按钮的查找方式值组成请求数据;在操作命令文件中查找操作对应的命令字键值对Command.FIND_ELEMENT:('POST','/session/sessionId/element'),读取当前命令字键值对获取请求方法和请求访问的资源,所述请求方法为'POST',所述请求访问的资源为'/session/sessionId/element',获取SessionID值给请求访问的资源中的sessionId赋值,并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法,请求访问的资源和HTTP版本字符串组成请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行、请求头、空行和请求数据顺序拼接得到请求报文。
查找搜索按钮,测试系统向被测系统发送的请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/elementHTTP/1.1
Host:127.0.0.1:20469
Accept-Encoding:identity
Content-Length:97
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/element
Accept:application/json
User-Agent:Pythonhttpauth
{"using":"linktext","sessionId":"f5bd57f436aa79026e4f058b34919c23","value":"\u67e5\u8be2"}
被测系统返回的响应报文问哦:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":{"ELEMENT":"0.2591877782251686-1"}}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明查找到搜索按钮;获取并保存搜索按钮标识‘0.2591877782251686-1’;否则表明未查找到搜索按钮,测试系统退出当前测试用例。
将SessionID值和搜索按钮标识组成请求数据;在操作命令文件中查找当前操作对应的命令字键值对Command.CLICK_ELEMENT:('POST','/session/sessionId/element/id/click'),读取当前命令字键值对获取请求方法和请求访问的资源,所述请求方法为'POST',所述请求访问的资源为'/session/sessionId/element/id/click',获取SessionID值给请求访问的资源中的sessionId赋值,获取搜索按钮标识给请求访问的资源中的id赋值,并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法、请求访问的资源和HTTP版本字符串组成请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行、请求头、空行和请求数据顺序拼接得到请求报文。以触发搜索按钮为例向被测系统发送请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/element/0.2591877782251686-1/clickHTTP/1.1
Host:127.0.0.1:26072
Accept-Encoding:identity
Content-Length:80
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/element/0.2591877782251686-1/click
Accept:application/json
User-Agent:Pythonhttpauth
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","id":"0.2591877782251686-1"}
被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":null}
响应包括SessionID和状态项。测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明成功触发搜索按钮;否则表明未成功触发搜索按钮,退出当前测试。
步骤A3、查找并获取搜索结果总数文字并从搜索结果总数文字中取出搜索结果数量。
本实施例通过xpath方式查找搜索结果总数文字,测试系统向被测系统发送的请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/elementsHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Content-Length:107
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/elements
Accept:application/json
User-Agent:Pythonhttpauth
{"using":"xpath","sessionId":"f5bd57f436aa79026e4f058b34919c23","value":"//span[class='l-bar-text']"}
测试系统接收被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":[{"ELEMENT":"0.2591877782251686-4"}]}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"为0,是则表明查找到搜索结果总数文字,获取并保存搜索结果总数文字标识‘0.2591877782251686-4’;否则表明未查找到搜索结果总数文字,退出当前测试。
在操作命令文件中查找获取页面元素操作对应的命令字键值对
Command.GET_ELEMENT_TEXT:('GET','/session/sessionId/element/id/text'),读取当前命令字键值对获取请求方法和请求访问的资源,所述请求方法为'GET',所述请求访问的资源为'/session/sessionId/element/id/text',获取SessionID值给请求访问的资源中的sessionId赋值,获取搜索结果总数文字标识给请求访问的资源中的id赋值,并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法、请求访问的资源和HTTP版本字符串组成请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行和请求头顺序拼接得到请求报文。
以获取搜索结果总数文字为例:
测试系统向被测系统发送的请求报文为:
GET/session/f5bd57f436aa79026e4f058b34919c23/element/0.2591877782251686-4/textHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Connection:keep-alive
User-Agent:Pythonhttpauth
Content-type:application/json;charset="UTF-8"
Accept:application/json
GET:/session/f5bd57f436aa79026e4f058b34919c23/element/0.2591877782251686-4/text
测试系统接收被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":"从1到1总计1条"}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明成功得到搜索结果总数文字;否则表明未成功得到搜索结果总数文字。
步骤A4、判断搜索结果数量是否为0,是则测试结果为失败,执行步骤1066,否则执行步骤A5。
步骤A5、查找并触发当前令牌号所对应的锁定按钮。
通过xpath方式查找当前令牌号所对应的锁定按钮,测试系统向被测系统发送的请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/elementHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Content-Length:188
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/element
Accept:application/json
User-Agent:Pythonhttpauth
{"using":"xpath","sessionId":"f5bd57f436aa79026e4f058b34919c23","value":"//div[id='body2']/descendant::a[text()='2600509800101']/ancestor::tr/descendant::img[title='\u9501\u5b9a']"}
测试系统接收被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":{"ELEMENT":"0.3983193465974182-6"}}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明成功查找到锁定按钮,获取锁定按钮标识0.3983193465974182-6;否则表明未成功查找到锁定按钮,退出当前测试。
触发当前令牌号所对应的锁定按钮测试系统向被测系统发送的请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/element/0.3983193465974182-6/click
HTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Content-Length:78
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/element/0.3983193465974182-6/click
Accept:application/json
User-Agent:Pythonhttpauth
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","id":"0.3983193465974182-6"}
测试系统接收被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":null}
测试系统读取被测系统返回的响应中的状态项"status",判断状态项"status"是否为0,是则表明成功触发锁定按钮;否则表明未成功触发锁定按钮,退出当前测试。
步骤A6、判断当前页面是否可以查找到信息提示框,是则执行步骤A7,否则测试结果为失败,执行步骤1066。
通过xpath查找信息提示框,测试系统向被测系统发送的请求报文为:
POST/session/f5bd57f436aa79026e4f058b34919c23/elementHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Content-Length:112
Connection:keep-alive
Content-type:application/json;charset="UTF-8"
POST:/session/f5bd57f436aa79026e4f058b34919c23/element
Accept:application/json
User-Agent:Pythonhttpauth
{"using":"xpath","sessionId":"f5bd57f436aa79026e4f058b34919c23","value":"//div[class='l-dialog-content']"}
测试系统接收被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":{"ELEMENT":"0.8379943643230945-7"}}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明成功查找到信息提示框,获取信息提示框标识0.8379943643230945-7;否则表明未成功查找到信息提示框,退出当前测试。
步骤A7、获取信息提示框中内容并判断是否为‘锁定成功’,是则测试结果为成功,执行步骤1066;否则测试结果为失败,执行步骤1066。
获取信息提示框中内容,测试系统向被测系统发送的请求报文为:
GET/session/f5bd57f436aa79026e4f058b34919c23/element/0.8379943643230945-7/textHTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Connection:keep-alive
User-Agent:Pythonhttpauth
Content-type:application/json;charset="UTF-8"
Accept:application/json
GET:/session/f5bd57f436aa79026e4f058b34919c23/element/0.8379943643230945-7/text
测试系统接收被测系统返回的响应报文:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":"锁定成功"}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明成功获取到信息提示框内容且获取到的内容为"锁定成功";否则表明未成功获取到信息提示框内容,退出当前测试。
若当前进行的测试是登录测试,如图4所示,为图2中步骤1065的细化流程图,包括:
步骤B1、查找用户名输入框并将测试数据中的用户名填入用户名输入框;查找密码输入框并将测试数据中的密码填入密码输入框。
步骤B2、查找验证码图片,通过光学识别的方式识别验证码图片得到验证码。
步骤B3、查找验证码输入框并将识别到的验证码填入验证码输入框。
步骤B4、查找并触发登录按钮。
步骤B5、判断浏览器的当前页面是否可以查找到退出登录按钮,是则测试结果为成功,执行步骤1066,否则测试结果为失败,执行步骤1066。
若当前进行的测试是令牌导入测试,如图5所示,为图2中步骤1065的细化流程图,包括:
步骤C1、查找令牌地址输入框并将测试数据中令牌地址填入令牌地址输入框。
步骤C2、查找并触发导入按钮。
步骤C3、判断浏览器的当前页面是否可以查找到信息提示框,是则执行步骤C4,否则测试结果为失败,执行步骤1066。
步骤C4、获取信息提示框中的内容判断是否为‘导入成功’,是则测试结果为成功,执行步骤1066;否则测试结果为失败,执行步骤1066。
步骤1066、将测试结果写入测试报告文件,并判断测试结果是否与期望值变量相同,是则执行步骤1067,否则执行步骤107。
本实施例中,测试结果是一个元组类型的数据,例如:res=(True,"成功")或res=(fause,"失败"),取元组的第二个元素与期望值变量isSucceeded比较,若相同则执行步骤1067,若不相同则执行步骤107。
步骤1067、判断测试数据列表是否还有未被获取的测试数据,是则执行步骤1064,否则执行步骤107。
具体的,本实施例中,通过遍历数据列表,自动地调用迭代器的next方法获取下一条测试数据,当捕获StopIteration异常时,就结束循环,反之,继续调用next方法。
步骤107、判断测试用例列表是否还有未被获取的测试用例名,是则执行步骤108,否则返回步骤105。
具体的,本实施例中,通过遍历测试用例列表,自动地调用迭代器的next方法获取下一个测试用例,当捕获StopIteration异常时,就结束循环,反之,继续调用next方法。
步骤108、判断测试类列表是否还有未被获取的测试类名,是则执行步骤109,否则返回步骤103。
具体的,本实施例中,通过遍历测试类列表,自动地调用迭代器的next方法获取下一个测试类,当捕获StopIteration异常时,就结束循环,反之,继续调用next方法。
步骤109、退出浏览器。
在操作命令文件中查找退出浏览器操作对应的命令字键值对Command.QUIT:('DELETE','/session/$sessionId'),读取当前命令字键值对获取请求方法和请求访问的资源,所述请求方法为'DELETE',所述请求访问的资源为'/session/sessionId',获取SessionID值给请求访问的资源中的sessionId赋值,并获取工程配置文件中的HTTP版本字符串‘HTTP/1.1’,将请求方法、请求访问的资源和HTTP版本字符串顺序拼接请求行;根据本机IP地址和本机空闲端口号组成请求目的地,计算请求数据的长度,读取工程配置文件中被测系统的默认配置,根据请求目的地、请求数据的长度、被测系统的默认配置以及请求方法和请求访问的资源等信息组成请求头;将请求行和请求头顺序拼接得到请求报文。
以退出浏览器为例,测试系统给被测系统发送请求报文为:
DELETE/session/f5bd57f436aa79026e4f058b34919c23HTTP/1.1
Host:127.0.0.1:27532
Accept-Encoding:identity
Connection:keep-alive
User-Agent:Pythonhttpauth
Content-type:application/json;charset="UTF-8"
Accept:application/json
DELETE:/session/f5bd57f436aa79026e4f058b34919c23
测试系统接收被测系统返回的响应报文为:
{"sessionId":"f5bd57f436aa79026e4f058b34919c23","status":0,"value":null}
测试系统读取被测系统返回的响应报文中的状态项"status",判断状态项"status"是否为0,是则表明成功关闭浏览器;否则表明未成功关闭浏览器。
实施例二
本实施例提供一种基于网页的自动化测试装置,所述装置如图6所示,具体包括:
存储模块11,用于存储工程配置文件、启动脚本、测试类、操作命令文件、测试报告文件、测试数据文件和页面元素文件;
测试类列表生成模块12,用于读取存储模块11中存储的启动脚本中预设的测试类名形成测试类列表;
获取测试类模块13,用于在所述测试类列表生成模块12形成的测试类列表中获取一个尚未被获取过的测试类名;
测试用例列表生成模块14,用于根据获取测试类模块13获取到的测试类名在所述存储模块11中查找对应的测试类作为当前测试类,读取当前测试类中的测试用例名形成测试用例列表;
获取测试用例模块15,用于在所述测试用例列表生成模块14形成的测试用例列表中获取一个尚未被获取过的测试用例名;
执行测试用例模块16,用于启动浏览器,并根据获取到的测试用例名当前测试类中查找对应的测试用例作为当前测试用例,根据当前测试用例初始化被测页面以及在被测页面中查找并操作页面元素,在浏览器的当前页面中查找标识测试成功的页面元素,根据查找结果得到测试结果;
所述执行测试用例模块16具体包括:
测试数据列表生成子模块161,用于根据获取测试用例模块15获取到的测试用例名在当前测试类中查找相应的测试用例作为当前测试用例,根据当前测试用例在所述存储模块11中查找对应的测试数据文件,读取测试数据文件中的测试数据形成测试数据列表;
获取测试数据子模块162,用于在所述测试数据列表生成子模块161形成的测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
测试数据列表判断子模块163,用于判断所述测试数据列表生成子模块161形成的测试数据列表中是否还有未被获取的测试数据,是则触发获取测试数据子模块162,否则触发测试用例列表判断模块17;
启动浏览器子模块164,用于启动浏览器;
所述启动浏览器子模块164包括:
启动浏览器请求数据生成单元,用于读取工程配置文件中的浏览器配置信息,根据浏览器配置信息生成请求数据;
启动浏览器请求行生成单元,用于读取存储模块11中的预设的操作命令文件,在操作命令文件中查找启动浏览器的命令字键值对,并在工程配置文件中获取HTTP版本字符串,根据启动浏览器的命令字键值对和HTTP版本字符串组成请求行;
启动浏览器请求头生成单元,用于读取工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、被测系统的默认信息和启动浏览器的命令字键值对生成请求头;
启动浏览器请求报文发送单元,用于将启动浏览器请求行生成单元生成的请求行、启动浏览器请求头生成单元生成的请求头、空行以及启动浏览器请求数据生成的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
启动浏览器响应报文接收单元,用于接收被测系统的响应报文;并读取响应报文中的状态项,根据状态项判断是否成功启动浏览器,若成功启动浏览器则保存响应报文中的会话标识。
打开页面子模块165,用于根据当前测试用例打开被测页面;
填写输入框子模块166,用于根据获取测试数据子模块162中获取的当前测试数据在被测页面上查找并填写需填写测试数据的输入框;
所述填写输入框子模块166包括:
查找输入框请求数据生成单元,用于从测试数据中获取需填写测试数据的输入框的查找方式,根据会话标识和需填写测试数据的输入框的查找方式生成请求数据;
查找输入框请求行生成单元,在操作命令文件中获取查找页面元素的命令字键值对,获取会话标识给查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的查找页面元素的命令字键值对和HTTP版本字符串生成请求行;
查找输入框请求头生成单元,用于读取工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、被测系统的默认信息和查找页面元素的命令字键值对生成请求头;
查找输入框请求报文发送单元,用于将查找输入框请求行生成单元生成的请求行、查找输入框请求头生成单元生成的请求头、空行以及查找输入框请求数据生成单元生成的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
查找输入框响应报文接收单元,用于接收被测系统返回的响应报文,并读取响应报文中的状态项,根据状态项判断是否成功查找到需填写的测试数据的输入框,是则保存响应报文中的需填写的测试数据的输入框标识,否则结束测试;
填写输入框请求数据生成单元,用于在当前测试数据中获取需填写的测试数据,根据会话标识和需填写测试数据的输入框标识生成请求数据;
填写输入框请求行生成单元,用于在操作命令文件中获取发送数据的命令字键值对,获取会话标识给发送数据的命令字键值对中的第一字符串赋值,获取需填写测试数据的输入框标识给发送数据的命令字键值对中的第二字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的发送数据的命令字键值对和HTTP版本字符串生成请求行;
填写输入框请求头生成单元,用于读取工程配置文件中被测系统的默认信息;根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的发送数据的命令字键值对组成请求头;
填写输入框请求报文发送单元,用于将填写输入框请求行生成单元生成的请求行、填写输入框请求头生成单元生成的请求头、空行以及填写输入框请求数据生成单元的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
填写输入框响应报文接收单元,用于接收被测系统返回的响应报文,并读取响应报文中的状态项,根据状态项判断是否成功填写测试数据。
触发按钮子模块167,用于在存储模块11中的页面元素文件获取确定执行测试的按钮的查找方式,并根据查找到的确定执行测试的按钮的查找方式查找并触发确定执行测试的按钮;
所述触发按钮子模块167包括:
查找按钮请求数据生成单元,用于在存储模块11的页面元素文件中获取确定执行测试的按钮所对应的查找方式,根据会话标识和确定执行测试的按钮的所对应的查找方式生成请求数据;
查找按钮请求行生成单元,用于在操作命令文件中获取查找页面元素的命令字键值对,获取会话标识给查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的查找页面元素的命令字键值对和HTTP版本字符串生成请求行;
查找按钮请求头生成单元,用于读取工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、被测系统的默认信息和赋值后的查找页面元素的命令字键值对组成请求头;
查找按钮请求报文发送单元,用于将查找按钮请求行生成单元生成的请求行、查找按钮请求头生成单元生成的请求头、空行以及查找按钮请求数据生成单元生成的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
查找按钮响应报文接收单元,用于接收被测系统返回的响应报文;并读取响应报文中的状态项,根据状态项判断是否成功查找到确定执行测试的按钮,若成功查找到则保存响应报文中的确定执行测试的按钮标识,否则结束测试;
触发按钮请求数据生成单元,用于根据会话标识和所述确定执行测试的按钮标识生成请求数据;
触发按钮请求行生成单元,用于在存储模块中预设的操作命令文件中获取触发按钮的命令字键值对,根据会话标识给触发按钮的命令字键值对的第一字符串赋值,根据确定执行测试的按钮标识给触发按钮的命令字键值对中的第二字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的触发按钮的命令字键值对和HTTP版本字符串生成请求行;
触发按钮请求头生成单元,用于读取工程配置文件中被测系统的默认信息;根据请求目的地、请求数据的长度、被测系统的默认信息和赋值后的触发按钮的命令字键值对组成请求头;
触发按钮请求报文发送单元,用于将触发按钮请求行生成单元生成的请求行、触发按钮请求头生成单元操作请求头生成单元生成的请求头、空行以及触发按钮请求数据生成单元生成的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
触发按钮响应报文接收单元,用于接收被测系统返回的响应报文并读取响应报文中的状态项,根据状态项判断是否成功触发确定执行测试的按钮。
获取页面元素内容子模块168,用于从页面元素文件获取查找标识测试成功的页面元素的查找方式,根据标识测试成功的页面元素的查找方式浏览器的当前页面查找标识测试成功的页面元素;
所述获取页面元素内容子模块168包括:
查找请求数据生成单元,用于在页面元素文件中获取当前测试用例中预设的页面元素的查找方式,根据会话标识和预设的页面元素的查找方式组成请求数据;
查找请求行生成单元,用于在预设的操作命令文件中获取查找页面元素的命令字键值对,根据会话标识给查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的查找页面元素的命令字键值对和HTTP版本字符串生成请求行;
查找请求头生成单元;用于读取工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、被测系统的默认信息和赋值后的查找页面元素的命令字键值对生成请求头;
查找请求报文发送单元,用于将查找请求行生成单元生成的请求行、查找请求头生成单元生成的请求头、空行以及查找请求数据生成单元生成的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
查找响应报文接收单元,用于接收被测系统返回的响应报文报文并读取响应报文中的状态项,根据状态项判断是否成功查找到需获取页面元素内容的页面元素,是则保存响应报文中需获取页面元素内容的页面元素标识,否则结束测试;
获取内容请求行生成单元,用于在操作命令文件中查找获取页面元素内容的命令字键值对,根据会话标识给获取页面元素内容的命令字键值对中的第一字符串赋值,根据标识测试成功的页面元素标识给获取页面元素内容的命令字键值对中的第二字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的获取页面元素内容的命令字键值对和HTTP版本字符串生成请求行;
获取内容请求头生成单元,用于读取工程配置文件中的被测系统的默认信息;根据请求目的地、被测系统的默认信息和赋值后的获取页面元素内容的命令字键值对生成请求头;
获取内容请求报文发送单元,用于将获取内容请求行生成单元生成的请求行、获取内容请求头生成单元生成的请求头顺序拼接得到请求报文,并向被测系统发送请求报文;
获取内容响应报文接收单元,用于接收被测系统返回的响应报文并读取响应报文中的状态项,根据状态项判断是否成功获取页面元素内容。
测试报告子模块169,用于创建测试报告文件,将测试报告文件保存到存储模块11中;
测试结果断言子模块16A,用于等待预设时长并根据获取页面元素内容子模块168中页面元素的查找结果,根据查找结果得到测试结果并将测试结果写入测试报告子模块生成的测试报告文件。
比较子模块16B,用于将测试结果断言子模块16A得到的测试结果与当前测试数据中的期望值进行比较,并将比较结果写入存储模块11中的测试报告文件。
测试用例列表判断模块17,用于判断测试用例列表生成模块14形成的测试用例列表中是否有未被获取过的测试用例名,是则触发获取测试用例模块15,否则触发测试类列表判断模块18;
测试类列表判断模块18,用于判断测试类列表生成模块12形成的测试类列表中是否有未被获取过的测试类名,是则触发获取测试类模块13,否则触发关闭浏览器模块19。
关闭浏览器模块19,用于关闭浏览器。
所述关闭浏览器模块19包括:
关闭浏览器请求行生成单元,用于在操作命令文件中查找关闭浏览器的命令字键值对,根据会话标识给命令字键值对的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,将赋值后的关闭浏览器的命令字键值对和HTTP版本字符串生成请求行;
关闭浏览器请求头生成单元,用于读取工程配置文件中被测系统的默认信息,根据请求目的地、被测系统的默认信息和赋值后的关闭浏览器的命令字键值对生成请求头;
关闭浏览器请求报文发送单元,用于将关闭浏览器请求行生成单元生成的请求行、关闭浏览器请求头生成单元生成的请求头顺序拼接得到请求报文,并向被测系统发送请求报文;
关闭浏览器响应报文接收单元,用于接收被测系统返回的响应报文并读取响应报文中的状态项,根据状态项判断是否成功关闭浏览器,是则结束测试,否则结束测试。
当获取测试用例模块获取到令牌锁定测试用例时:
测试数据列表生成子模块161,具体用于根据获取测试用例模块15获取到的测试用例在存储模块11中查找对应的测试用例作为当前测试用例,在存储模块中查找令牌锁定测试用例对应的测试数据文件,读取测试数据文件中的测试数据形成令牌锁定测试数据列表;
获取测试数据子模块162,具体用于在令牌锁定测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
测试数据列表判断子模块163,具体用于判断测试数据列表中是否还有未被获取过的测试数据,是则触发获取测试数据子模块162,否则触发测试用例列表判断模块17;
启动浏览器子模块164,具体用于启动浏览器;
打开测试页面子模块165,具体用于根据测试用例打开被测系统的令牌管理测试页面;
所述打开页面子模块165包括:
打开页面请求数据生成单元,用于读取工程配置文件中的登录页面网址,根据会话标识和登录页面网址生成请求数据;
打开页面请求行生成单元,在操作命令文件中查找打开被测页面的命令字键值对,获取会话标识给打开页面的命令字键值对中的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的打开页面的命令字键值对和HTTP版本字符串组成请求行;
打开页面请求头生成单元,用于读取工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、被测系统的默认信息和赋值后的打开被测页面的命令字键值对生成请求头;
打开页面请求报文发送单元,用于将打开页面请求行生成单元生成的请求行、打开页面请求头生成单元生成的请求头、空行以及打开页面请求数据生成单元生成的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
打开页面响应报文接收单元,用于接收被测系统返回的响应报文并读取响应报文中的状态项,根据状态项判断是否成功打开登录页面;
页面跳转单元,用于读取工程配置文件中的用户名和登录密码信息,查找所述登录页面的用户名输入框和密码输入框,将读取到的用户名和登录密码分别填入定位到的用户名输入框和密码输入框,查找并识别验证码图片,将识别到的验证码填入验证码输入框,查找并触发登录按钮,页面跳转到令牌管理测试页面。
填写输入框子模块166,用于根据测试数据查找令牌号输入框,将当前测试数据中的令牌号填入令牌号输入框;
触发按钮子模块167,用于根据存储模块中的页面元素文件查找并触发搜索按钮;还用于查找并触发当前测试数据中的令牌号所对应的锁定按钮;
获取页面元素内容子模块168,用于查找并获取搜索结果总数文字并从搜索结果总数文字中取出搜索结果数量,还用于在浏览器的当前页面查找信息提示框并获取信息提示框中的内容;
测试报告子模块169,用于创建测试报告文件,将测试报告文件保存到存储模块11中;
测试结果断言子模块16A,用于判断在被测页面上是否查找到内容是‘锁定成功’的信息提示框,是则测试结果为成功,否则测试结果为失败,将测试结果写入存储模块11中的测试报告文件。
比较子模块16B,用于将测试结果断言模块16A产生的测试结果与获取测试数据子模块获取到的测试数据中的期望值进行比较,并将测试结果写入存储模块11中的测试报告文件。
当获取测试用例模块获取到登录测试用例时:
测试数据列表生成子模块161,具体用于根据获取测试用例模块15中获取的测试用例名在存储模块中查找对应的测试用例,并在存储模块11查找登录测试数据文件,读取登录测试数据文件中的测试数据形成登录测试数据列表;
获取测试数据子模块162,具体用于在登录测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
测试数据列表判断子模块163,具体用于判断测试数据列表生成子模块161形成的登录测试数据列表中是否还有未被获取过的测试数据,是则触发获取测试数据子模块162,否则触发测试用例列表判断模块17;
启动浏览器子模块164,具体用于启动浏览器;
打开页面子模块165,具体用于根据测试用例打开登录页面;
打开页面子模块165包括:
打开页面请求数据生成单元,用于读取工程配置文件中的登录页面网址,根据会话标识和登录页面网址生成请求数据;
打开页面请求行生成单元,用于在操作命令文件中查找打开页面的命令字键值对,获取会话标识给打开被测页面的命令字键值对中的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,根据赋值后的打开页面的命令字键值对和HTTP版本字符串组成请求行;
打开页面请求头生成单元,用于读取工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、被测系统的默认信息和赋值后的打开被测页面的命令字键值对生成请求头;
打开页面请求报文发送单元,用于将打开页面请求行生成单元生成请求行、打开页面请求头生成单元生成的请求头、空行和打开页面请求数据生成单元生成的请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
打开页面响应报文接收单元,用于接收被测系统返回的响应报文并读取响应报文中的状态项,根据状态项判断是否成功打开登录页面;
填写输入框子模块166,具体用于根据测试数据查找用户名输入框,并将当前测试数据中的用户名填入用户名输入框;查找密码输入框并将当前测试数据中的密码填入密码输入框;还用于查找验证码输入框并将获取页面元素内容子模块中获取到的验证码填入验证码输入框;
触发按钮子模块167,具体用于根据页面元素文件中登录按钮的查找方式查找并触发登录按钮,
获取页面元素内容子模块168,具体用于根据页面元素文件查找验证码图片,通过光学识别的方式识别验证码图片获取验证码;还用于在浏览器的当前页面上查找退出登录按钮;
测试报告子模块169,用于创建测试报告文件,将测试报告文件保存到存储模块11中;
测试结果断言子模块16A,具体用于判断在操作后的页面上是否查找到退出登录按钮,是则测试结果为成功,否则测试结果为失败,将测试结果写入存储模块11中的测试报告文件。
比较子模块16B,用于将测试结果断言模块16A产生的测试结果与获取测试数据子模块获取到的测试数据中的期望值进行比较,并将测试结果写入存储模块11中的测试报告文件。
当获取测试用例模块16获取到令牌导入测试用例时;
测试数据列表生成子模块161,具体用于根据获取测试用例模块15中获取的测试用例名在存储模块中查找对应的测试用例作为当前测试用例,并在存储模块中查找令牌导入测试数据文件,读取测试数据文件中的测试数据形成令牌导入测试数据列表;
获取测试数据子模块162,具体用于在令牌导入测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
测试数据列表判断子模块163,具体用于判断令牌导入测试数据列表中是否还有未被获取过的测试数据,是则触发获取测试数据子模块162,否则触发测试用例列表判断模块17;
启动浏览器子模块164,具体用于启动浏览器;
打开页面子模块165,具体用于打开令牌管理测试页面;
填写输入框子模块166,具体用于查找令牌地址输入框并将测试数据中令牌地址填入令牌地址输入框;
触发按钮子模块167,具体用于查找并触发导入按钮;
获取页面元素内容子模块168,具体用于在操作后的页面查找到信息提示框并获取信息提示框中的内容;
测试报告子模块169,用于创建测试报告文件,将测试报告文件保存到存储模块11中;
测试结果断言子模块16A,具体用于判断在浏览器的当前页面上是否查找到内容为‘导入成功’的信息提示框,是则测试结果为成功,否则测试结果为失败,将测试结果写入测试报告子模块169创建的测试报告文件。
比较子模块16B,用于将测试结果断言子模块16A得到的测试结果与获取测试数据子模块162获取到的测试数据中的期望值进行比较,并将比较结果写入测试报告子模块169创建的测试报告文件。
Claims (30)
1.一种基于网页的自动化测试方法,其特征在于,包括:
步骤101、测试系统读取预设的测试类名,形成测试类列表;
步骤102、所述测试系统在所述测试类列表中获取一个尚未被获取过的测试类名;
步骤103、所述测试系统根据获取到的所述测试类名查找对应的测试类作为当前测试类,读取所述当前测试类中的测试用例名,形成测试用例列表;
步骤104、所述测试系统在所述测试用例列表中获取一个尚未被获取过的测试用例名;
步骤105、所述测试系统根据获取到的所述测试用例名在所述当前测试类中查找对应的测试用例作为当前测试用例,根据所述当前测试用例初始化被测页面以及在所述被测页面上查找并操作页面元素,并在所述浏览器的当前页面中查找标识测试成功的页面元素,根据查找结果得到所述当前测试用例的测试结果;
步骤106、所述测试系统判断当前测试用例列表中是否还有未被获取过的测试用例名,是则返回步骤104,否则执行步骤107;
步骤107、所述测试系统判断所述测试类列表中是否还有未被获取过的测试类名,是则返回步骤102,否则结束测试。
2.如权利要求1所述的方法,其特征在于,所述步骤105具体包括:
步骤201、所述测试系统根据获取到的所述测试用例名在所述当前测试类中查找对应的测试用例作为当前测试用例,并查找所述当前测试用例对应的测试数据文件,读取所述测试数据文件中的测试数据形成测试数据列表;
步骤202、所述测试系统在所述测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
步骤203、所述测试系统根据所述当前测试数据在所述被测页面上查找并填写需填写测试数据的输入框;
步骤204、所述测试系统在预设的页面元素文件中获取确定执行测试的按钮的查找方式,根据查找到的所述确定执行测试的按钮的查找方式查找并触发确定执行测试的按钮;
步骤205、所述测试系统等待预设时长,判断在所述浏览器的所述当前页面上是否能够查找到所述标识测试成功的页面元素,若查找到,则测试结果为成功,执行步骤206,若没有查找到,则测试结果为失败,执行步骤206;
步骤206、所述测试系统判断所述测试数据列表中是否还有未被获取的测试数据,是则返回步骤202,否则执行步骤106。
3.如权利要求2所述的方法,其特征在于,所述测试系统根据所述当前测试用例初始化被测页面之前还包括启动浏览器,所述启动浏览器具体包括:
步骤301、所述测试系统读取预设的工程配置文件中的浏览器配置信息,根据所述浏览器配置信息生成请求数据;
步骤302、所述测试系统读取预设的操作命令文件,在所述预设的操作命令文件中查找启动浏览器的命令字键值对,并在所述工程配置文件中获取HTTP版本字符串,根据所述启动浏览器的命令字键值对和所述HTTP版本字符串组成请求行;
步骤303、所述测试系统读取所述工程配置文件中的被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述启动浏览器的命令字键值对生成请求头;
步骤304、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤305、所述测试系统接收所述被测系统发送的响应报文,并读取所述响应报文中的状态项,根据所述状态项判断是否成功启动所述浏览器,是则获取并保存所述响应报文中的会话标识,否则结束测试。
4.如权利要求3所述的方法,其特征在于,所述步骤203,具体包括:
步骤401、所述测试系统从所述当前测试数据中获取需填写测试数据的输入框的查找方式,根据所述会话标识和所述需填写测试数据的输入框的查找方式生成请求数据;
步骤402、所述测试系统在所述操作命令文件中获取查找页面元素的命令字键值对,获取所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
步骤403、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和赋值后的所述查找页面元素的命令字键值对生成请求头;
步骤404、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤405、所述测试系统接收所述被测系统返回的响应报文并读取所述响应报文中的状态项,根据所述状态项判断是否成功查找到所述需填写测试数据的输入框,是则保存所述响应报文中的需填写测试数据的输入框标识,执行步骤406,否则退出所述当前测试用例,执行所述步骤106;
步骤406、所述测试系统在所述当前测试数据中获取需填写的测试数据,根据会话标识、所述需填写的测试数据和所述需填写测试数据的输入框标识生成请求数据;
步骤407、所述测试系统在所述操作命令文件中获取发送数据的命令字键值对,获取所述会话标识给所述发送数据的命令字键值对中的第一字符串赋值,获取所述需填写测试数据的输入框标识给所述发送数据的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述发送数据的命令字键值对和所述HTTP版本字符串生成请求行;
步骤408、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息;根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的发送数据的命令字键值对组成请求头;
步骤409、所述测试系统将所述请求行、所述请求头、空行和请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤410、所述测试系统接收所述被测系统返回的响应并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功填写测试数据,是则执行步骤204,否则退出当前测试用例,执行所述步骤106。
5.如权利要求3所述的方法,其特征在于,所述步骤204,具体包括:
步骤501、所述测试系统在所述页面元素文件中获取所述确定执行测试的按钮所对应的所述查找方式,根据所述会话标识和所述确定执行测试的按钮所对应的所述查找方式生成请求数据;
步骤502、所述测试系统在所述操作命令文件中获取查找页面元素的命令字键值对,获取会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
步骤503、所述测试系统读取所述工程配置文件中所述被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对组成请求头;
步骤504、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤505、所述测试系统接收所述被测系统返回的响应报文,并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到所述确定执行测试的按钮,是则保存所述响应报文中确定执行测试的按钮标识,执行步骤506,否则退出所述当前测试用例,执行所述步骤106;
步骤506、所述测试系统根据所述会话标识和所述确定执行测试的按钮标识生成请求数据;
步骤507、所述测试系统在所述操作命令文件中获取触发按钮的命令字键值对,根据所述会话标识给所述触发按钮的命令字键值对的第一字符串赋值,根据所述确定执行测试的按钮标识给所述触发按钮的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的得到HTTP版本字符串,根据赋值后的所述触发按钮的命令字键值对和所述HTTP版本字符串生成请求行;
步骤508、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息;根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的触发按钮的命令字键值对组成请求头;
步骤509、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文并向所述被测系统发送所述请求报文;
步骤510、所述测试系统接收所述被测系统返回的响应并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功触发按钮,是则执行步骤205,否则退出当前测试用例,执行所述步骤106。
6.如权利要求3所述的方法,其特征在于,所述步骤205,具体包括:
步骤601、所述测试系统在所述页面元素文件中获取所述当前测试用例中预设的页面元素的查找方式,根据所述会话标识和所述预设的页面元素的查找方式组成请求数据;
步骤602、所述测试系统在所述操作命令文件中获取查找页面元素的命令字键值对,根据所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
步骤603、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对生成请求头;
步骤604、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤605、所述测试系统接收所述被测系统返回的响应并读取响应报文中的状态项,根据所述状态项判断是否成功查找到所述预设的页面元素,是则保存所述预设的页面元素标识执行步骤606,否则测试结果为失败,执行所述步骤206;
步骤606、所述测试系统在所述操作命令文件中查找获取页面元素内容的命令字键值对,根据所述会话标识给所述获取页面元素内容的命令字键值对中的第一字符串赋值,根据标识测试成功的页面元素标识给所述获取页面元素内容的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述获取页面元素内容的命令字键值对和所述HTTP版本字符串生成请求行;
步骤607、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据请求目的地、所述被测系统的默认信息和所述赋值后的获取页面元素内容的命令字键值对生成请求头;
步骤608、所述测试系统将所述请求行和所述请求头顺序拼接得到所述请求报文并向所述被测系统发送所述请求报文;
步骤609、所述测试系统接收所述被测系统返回的响应报文并读取响应报文中的所述状态项,根据所述状态项判断是否成功获取预设的页面元素内容,若没有获取到所述预设的页面元素内容则测试结果为失败,执行步骤206,若成功获取到所述预设的页面元素内容则判断获取到的页面元素是否为标识测试成功的页面元素,若获取到的页面元素是标识测试成功的页面元素则测试结果为成功,执行步骤206,若获取到的页面元素不是标识测试成功的页面元素则测试结果为失败,执行步骤206。
7.如权利要求3所述的方法,其特征在于,当前测试用例为令牌锁定测试用例时,所述步骤105具体包括:
步骤701、所述测试系统打开所述被测系统的令牌管理测试页面;
步骤702、所述测试系统查找令牌锁定测试数据文件,读取所述令牌锁定测试数据文件中的测试数据形成令牌锁定测试数据列表;
步骤703、所述测试系统在所述令牌锁定测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
步骤704、所述测试系统查找令牌号输入框,将所述当前测试数据中的令牌号填入所述令牌号输入框;
步骤705、所述测试系统查找并触发搜索按钮;
步骤706、所述测试系统查找并获取搜索结果总数文字并从所述搜索结果总数文字中取出搜索结果数量,判断所述搜索结果数量是否为0,是则测试结果为失败,执行步骤710,否则执行步骤707;
步骤707、所述测试系统查找并触发所述当前测试数据中的所述令牌号所对应的锁定按钮;
步骤708、所述测试系统等待预设时间,并判断所述浏览器的当前页面是否能够查找到信息提示框,若查找到则执行步骤709,若未查找到则测试结果为失败,执行步骤710;
步骤709、所述测试系统获取所述信息提示框中的内容,并判断所述信息提示框中的内容是否为‘锁定成功’,是则测试结果为成功,执行步骤710,否则测试结果为失败,执行步骤710;
步骤710、所述测试系统判断所述令牌锁定测试数据列表中是否还有未被获取过的测试数据,是则返回所述步骤703,否则执行所述步骤106。
8.如权利要求3所述的方法,其特征在于,当前测试用例为登录测试用例时,所述步骤105具体包括:
步骤801、所述测试系统打开所述被测系统的登录页面;
步骤802、所述测试系统查找登录测试数据文件,读取所述登录测试数据文件中的测试数据形成登录测试数据列表;
步骤803、所述测试系统在所述登录测试数据列表中获取一条未被获取过的测试数据作为当前测试数据;
步骤804、所述测试系统查找用户名输入框,并将所述当前测试数据中的用户名填入所述用户名输入框;查找密码输入框并将所述当前测试数据中的密码填入所述密码输入框;
步骤805、所述测试系统查找验证码图片,通过光学识别的方式识别验证码图片获取验证码,查找验证码输入框并将获取到的验证码填入所述验证码输入框;
步骤806、所述测试系统查找并触发登录按钮;
步骤807、所述测试系统等待预设时间,并在浏览器的当前页面查找退出登录按钮,若查找到则测试结果为成功,执行步骤808,若没有查找到则测试结果为失败,执行步骤808;
步骤808、所述测试系统判断所述登录测试数据列表中是否还有未被获取过的测试数据,是则返回所述步骤803,否则执行步骤106。
9.如权利要求8所述的方法,其特征在于,所述打开被测系统的登录页面具体包括:
步骤901、所述测试系统读取所述工程配置文件中的登录页面网址,根据所述会话标识和所述登录页面网址生成请求数据;
步骤902、所述测试系统在所述操作命令文件中查找打开页面的命令字键值对,获取所述会话标识给所述打开页面的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面的命令字键值对和所述HTTP版本字符串组成请求行;
步骤903、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的打开页面的命令字键值对生成请求头;
步骤904、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序拼接得到请求报文并向所述被测系统发送所述请求报文;
步骤905、所述测试系统接收所述被测系统返回的响应报文,读取所述响应报文中的所述状态项,根据所述状态项判断是否成功打开所述登录页面,是则执行所述步骤802,否则退出当前测试用例,执行所述步骤106。
10.如权利要求3所述的方法,其特征在于,当前测试用例为令牌导入测试用例时,所述步骤105具体包括:
步骤A1、所述测试系统打开令牌管理测试页面;
步骤A2、所述测试系统查找令牌导入测试数据文件,读取当前测试数据文件中的测试数据形成令牌导入测试数据列表;
步骤A3、所述测试系统在所述令牌导入测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
步骤A4、所述测试系统查找令牌地址输入框并将测试数据中的令牌地址填入所述令牌地址输入框;
步骤A5、所述测试系统查找并触发导入按钮;
步骤A6、所述测试系统等待预设时长,在所述浏览器的当前页面上查找信息提示框,若查找到则执行步骤A7,若没有查找到则测试结果为失败,执行步骤A8;
步骤A7、所述测试系统获取信息提示框中的内容,判断是否为‘导入成功’,是则测试结果为成功,执行步骤A8,否则测试结果为失败,执行步骤A8;
步骤A8、所述测试系统判断所述令牌导入测试数据列表中是否还有未被获取过的测试数据,是则返回步骤A3,否则执行步骤106。
11.如权利要求7或10所述的方法,其特征在于,所述打开所述被测系统的令牌管理测试页面具体包括:
步骤B1、所述测试系统读取所述工程配置文件中的登录页面网址,将所述会话标识和所述登录页面网址组成请求数据;
步骤B2、所述测试系统在所述操作命令文件中查找打开页面的命令字键值对,根据所述会话标识给所述打开页面命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面命令字键值对和所述HTTP版本字符串组成请求行;
步骤B3、所述测试系统读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的所述打开页面命令字键值对组成请求头;
步骤B4、所述测试系统将所述请求行、所述请求头、空行和所述请求数据顺序组成请求报文并向所述被测系统发送所述请求报文;
步骤B5、所述测试系统接收所述被测系统返回的响应报文并读取响应报文中的所述状态项,根据所述状态项判断是否成功打开登录页面,是则执行步骤B6,否则退出当前测试用例,执行所述步骤106;
步骤B6、所述测试系统读取所述工程配置文件中的用户名和登录密码信息,在所述登录页面查找所述登录页面的用户名输入框和密码输入框,将读取到的用户名和登录密码分别填入查找到的所述用户名输入框和所述密码输入框,查找并识别验证码图片,将识别得到的验证码填入验证码输入框,查找并触发登录按钮,页面跳转到令牌管理测试页面。
12.如权利要求1所述的方法,其特征在于,所述步骤107中所述测试系统判断所述测试类列表中没有未被获取过得测试类名时还包括关闭浏览器。
13.如权利要求12所述的方法,其特征在于,所述关闭浏览器具体包括:
步骤C1、所述测试系统在操作命令文件中查找所述关闭浏览器的命令字键值对,根据所述会话标识给所述命令字键值对的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,将赋值后的所述关闭浏览器的所述命令字键值对和所述HTTP版本字符串生成请求行;
步骤C2、所述测试系统读取所述工程配置文件中被测系统的默认信息,根据请求目的地、所述被测系统的默认信息和所述赋值后的关闭浏览器的所述命令字键值对生成请求头;
步骤C3、所述测试系统将所述请求行和所述请求头顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
步骤C4、所述测试系统接收被测系统返回的响应报文,并读取所述响应报文中的状态项,根据所述状态项判断是否成功关闭所述浏览器,是则结束测试,否则结束测试。
14.如权利要求2所述的方法,其特征在于,步骤105之前还包括创建测试报告文件,保存所述测试报告文件;步骤105中所述得到所述当前测试用例的测试结果还包括将得到的所述测试结果写入所述测试报告文件。
15.如权利要求14所述的方法,其特征在于,所述步骤205之后、所述步骤206之前还包括,所述测试系统将所述当前测试数据中的期望值与所述测试结果进行比较,并将比较结果写入所述测试报告文件。
16.一种基于网页的自动化测试装置,其特征在于,包括:
存储模块,用于存储测试类和预设的测试类名;
测试类列表生成模块,用于读取所述存储模块中预设的测试类名形成测试类列表;
获取测试类模块,用于在所述测试类列表生成模块形成的所述测试类列表中获取一个尚未被获取过的测试类名;
测试用例列表生成模块,用于根据获取到的所述测试类名在所述存储模块中查找对应的测试类作为当前测试类,读取所述当前测试类中的测试用例名形成测试用例列表;
获取测试用例模块,用于在所述测试用例列表生成模块形成的所述测试用例列表中获取一个尚未被获取过的测试用例名;
执行测试用例模块,用于根据获取到的所述测试用例名在所述获取测试类模块查找到的所述当前测试类中查找对应的测试用例作为当前测试用例,根据所述当前测试用例初始化被测页面以及在所述被测页面中查找并操作页面元素,在所述浏览器的当前页面中查找标识测试成功的页面元素,根据查找结果得到所述当前测试用例的测试结果;
测试用例列表判断模块,用于判断所述测试用例列表生成模块生成的测试用例列表中是否还有未被获取过的测试用例名,是则触发所述获取测试用例模块,否则触发测试类列表判断模块;
所述测试类列表判断模块,用于判断所述测试类列表生成模块生成的所述测试类列表中是否还有未被获取过的测试类名,是则触发所述获取测试类模块,否则结束测试。
17.如权利要求16所述的装置,其特征在于,所述执行测试用例模块具体包括:
所述存储模块中还用于存储测试数据文件和页面元素文件;
测试数据列表生成子模块,用于用于根据获取测试用例模块15获取到的测试用例名在当前测试类中查找相应的测试用例作为当前测试用例,在所述存储模块中根据所述当前测试用例查找对应的测试数据文件,读取所述测试数据文件中的测试数据形成测试数据列表;
获取测试数据子模块,用于在所述测试数据列表生成子模块形成的所述测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
填写输入框子模块,用于根据所述获取测试数据子模块获取的所述当前测试数据在所述被测页面上查找并填写需填写测试数据的输入框;
触发按钮子模块,用于在存储模块中的预设的页面元素文件中获取确定执行测试的按钮的查找方式,并根据查找到的所述确定执行测试的按钮的查找方式查找并触发确定执行测试的按钮;
获取页面元素内容子模块,用于从所述的页面元素文件获取查找标识测试成功的页面元素的查找方式,根据所述标识测试成功的页面元素的查找方式在操作后的页面查找标识测试成功的页面元素;
测试结果断言子模块,用于等待预设时长并判断在所述浏览器的当前页面上是否能够查找到标识测试成功的页面元素,根据查找结果得到测试结果,触发测试数据列表判断模块;
测试数据列表判断子模块,用于判断所述测试数据列表生成子模块形成的所述测试数据列表中是否还有未被获取的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
打开页面请求子模块,用于根据所述当前测试用例打开被测页面。
18.如权利要求17所述的装置,其特征在于,所述执行测试用例模块中还包括启动浏览器子模块,所述存储模块中还用于存储操作命令文件和工程配置文件;
所述启动浏览器子模块具体包括:
启动浏览器请求数据生成单元,用于读取工程配置文件中的浏览器配置信息,根据所述浏览器配置信息生成请求数据;
启动浏览器请求行生成单元,用于读取存储模块中的所述预设的所述操作命令文件,在所述操作命令文件中查找启动浏览器的命令字键值对,并在所述工程配置文件中获取HTTP版本字符串,根据所述启动浏览器的命令字键值对和所述HTTP版本字符串组成请求行;
启动浏览器请求头生成单元,用于读取所述工程配置文件中被测系统的默认信息,根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述启动浏览器的命令字键值对生成请求头;
启动浏览器请求报文发送单元,用于将所述启动浏览器请求行生成单元生成的请求行、所述启动浏览器请求头生成单元生成的请求头、空行以及所述启动浏览器请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
启动浏览器响应报文接收单元,用于接收所述被测系统的响应报文;并读取所述响应报文中的状态项,根据所述状态项判断是否成功启动所述浏览器,若成功启动所述浏览器则保存响所述应报文中的会话标识。
19.如权利要求18所述的装置,其特征在于,所述填写输入框子模块包括:
查找输入框请求数据生成单元,用于从所述测试数据中获取需填写测试数据的输入框的查找方式,根据所述会话标识和所述需填写测试数据的输入框的查找方式生成请求数据;
查找输入框请求行生成单元,用于在所述操作命令文件中获取查找页面元素的命令字键值对,获取所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
查找输入框请求头生成单元,用于读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述查找页面元素的命令字键值对生成请求头;
查找输入框请求报文发送单元,用于将所述查找输入框请求行生成单元生成的所述请求行、所述查找输入框请求头生成单元生成的所述请求头、空行以及所述查找输入框请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
查找输入框响应报文接收单元,用于接收所述被测系统返回的响应报文,并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到所述需填写测试数据的输入框,若成功查找到所述需填写测试数据的输入框则保存所述响应报文中的需填写的测试数据的输入框标识并触发填写输入框请求数据生成单元,否则触发所述测试用例列表判断模块;
填写输入框请求数据生成单元,用于在所述当前测试数据中获取需填写的测试数据,根据所述会话标识、所述需填写的测试数据的输入框标识和所述需填写测试数据的输入框标识生成请求数据;
填写输入框请求行生成单元,用于在所述操作命令文件中获取发送数据的命令字键值对,获取所述会话标识给所述发送数据的命令字键值对中的第一字符串赋值,获取所述需填写测试数据的输入框标识给所述发送数据的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述发送数据的命令字键值对和所述HTTP版本字符串生成请求行;
填写输入框请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息;根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的发送数据的命令字键值对生成请求头;
填写输入框请求报文发送单元,用于将所述填写输入框请求行生成单元生成的所述请求行、所述填写输入框请求头生成单元生成的所述请求头、空行以及所述填写输入框请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
填写输入框响应报文接收单元,用于接收所述被测系统返回的响应报文,并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功填写测试数据,是则触发触发按钮子模块,否则触发测试用例列表判断模块。
20.如权利要求18所述的装置,其特征在于,所述触发按钮子模块包括:
所述存储模块还用于存储页面元素文件;
查找按钮请求数据生成单元,用于在所述页面元素文件中获取所述确定执行测试的按钮所对应的所述查找方式,根据所述会话标识和所述确定执行测试的按钮的查找方式生成请求数据;
查找按钮请求行生成单元,用于在所述操作命令文件中获取查找页面元素的命令字键值对,获取会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
查找按钮请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对组成请求头;
查找按钮请求报文发送单元,用于将所述查找按钮请求行生成单元生成的所述请求行、所述查找按钮请求头生成单元生成的请求头、空行以及所述查找按钮请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
查找按钮响应报文接收单元,用于接收所述被测系统返回的响应报文;并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到所述确定执行测试的按钮,若成功查找到保存所述响应报文中的确定执行测试的按钮标识并触发触发按钮请求数据生成单元,否则触发测试用例列表判断模块;
触发按钮请求数据生成单元,用于根据所述会话标识和所述确定执行测试的按钮标识生成请求数据;
触发按钮请求行生成单元,用于在所述存储模块中所述预设的操作命令文件中获取触发按钮的命令字键值对,根据所述会话标识给所述触发按钮的命令字键值对的第一字符串赋值,根据所述确定执行测试的按钮给所述触发按钮的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述触发按钮的命令字键值对和所述HTTP版本字符串生成请求行;
触发按钮请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息;根据请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的触发按钮的命令字键值对组成请求头;
触发按钮请求报文发送单元,用于将所述触发按钮请求行生成单元生成的所述请求行、所述触发按钮请求头生成单元生成的所述请求头、空行以及所述触发按钮请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向被测系统发送请求报文;
触发按钮响应报文接收单元,用于接收所述被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功触发确定执行测试的按钮,是则触发获取页面元素内容子模块,否则触发测试用例列表判断模块。
21.如权利要求18所述的装置,其特征在于,所述获取页面元素内容子模块包括:
查找请求数据生成单元,用于在所述页面元素文件中获取所述当前测试用例中预设的页面元素的查找方式,根据所述会话标识和所述预设的页面元素的查找方式组成请求数据;
查找请求行生成单元,用于在所述预设的操作命令文件中获取查找页面元素的命令字键值对,根据所述会话标识给所述查找页面元素的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述查找页面元素的命令字键值对和所述HTTP版本字符串生成请求行;
查找请求头生成单元,用于读取所述工程配置文件中的所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的查找页面元素的命令字键值对生成请求头;
查找请求报文发送单元,用于将所述查找请求行生成单元生成的所述请求行、所述查找请求头生成单元生成的请求头、空行以及所述查找请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
查找响应报文接收单元,用于接收所述被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功查找到预设的的页面元素,若成功页面元素则保存响应报文中需获取页面元素内容的页面元素标识,触发获取内容请求行生成单元,否则触发测试用例列表判断模块;
获取内容请求行生成单元,用于在所述操作命令文件中查找获取页面元素内容的命令字键值对,根据所述会话标识给所述获取页面元素内容的命令字键值对中的第一字符串赋值,根据标识测试成功的页面元素标识给所述获取页面元素内容的命令字键值对中的第二字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述获取页面元素内容的命令字键值对和所述HTTP版本字符串生成请求行;
获取内容请求头生成单元,用于读取所述工程配置文件中的所述被测系统的默认信息;根据所述请求目的地、所述被测系统的默认信息和所述赋值后的获取页面元素内容的命令字键值对生成请求头;
获取内容请求报文发送单元,用于将所述获取内容请求行生成单元生成的所述请求行、所述获取内容请求头生成单元生成的所述请求头顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
获取内容响应报文接收单元,用于接收所述被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功获取页面元素内容,是则触发测试数据列表判断子模块,否则触发测试结果断言子模块。
22.如权利要求18所述的装置,其特征在于,所述获取测试用例子模块获取到令牌锁定测试用例名时:
所述测试数据列表生成子模块,具体用于根据所述获取测试用例子模块获取到的测试用例名在所述当前测试用例中查找相应的测试用例作为当前测试用例,在所述存储模块中查找令牌锁定测试用例对应的测试数据文件,读取所述令牌锁定测试数据文件中的测试数据形成令牌锁定测试数据列表;
所述获取测试数据子模块,具体用于在所述令牌锁定测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
所述测试数据列表判断子模块,具体用于判断所述令牌锁定测试数据列表中是否还有未被获取过的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
所述打开测试页面子模块,具体用于打开令牌管理测试页面;
所述填写输入框子模块,具体用于查找令牌号输入框,将所述当前测试数据中的令牌号填入所述令牌号输入框;
所述触发按钮子模块,具体用于查找并触发搜索按钮;还用于查找并触发所述令牌号所对应的锁定按钮;
所述获取页面元素内容子模块,具体用于查找并获取搜索结果总数文字并从所述搜索结果总数文字中取出搜索结果数量;还用于在所述浏览器的当前页面查找信息提示框并获取所述信息提示框中的内容;
所述测试结果断言子模块,具体用于判断搜索结果数量是否为0,是则测试结果为失败,触发测试数据列表判断子模块,否则触发触发按钮子模块;还用于等待预设时长,判断查找到信息框内容是否为‘锁定成功’,是则测试结果为成功,否则测试结果为失败。
23.如权利要求18所述的装置,其特征在于,当所述获取测试用例模块获取到登录测试用例名时:
所述测试数据列表生成子模块,具体用于根据所述获取测试用例子模块获取到的测试用例名在所述当前测试用例中查找相应的测试用例作为当前测试用例,在所述存储模块查找登录测试数据文件,读取所述登录测试数据文件中的测试数据形成登录测试数据列表;
所述获取测试数据子模块,具体用于在所述测试数据列表生成子模块形成的所述登录测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
所述测试数据列表判断子模块,具体用于判断所述测试数据列表生成子模块形成的所述登录测试数据列表中是否还有未被获取过的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
所述打开页面子模块,具体用于打开登录页面;
所述填写输入框子模块,具体用于查找用户名输入框,并将所述当前测试数据中的用户名填入所述用户名输入框;查找密码输入框并将所述当前测试数据中的密码填入所述密码输入框;还用于查找验证码输入框并将所述获取页面元素内容子模块中获取到的验证码填入所述验证码输入框;
所述触发按钮子模块,具体用于查找并触发登录按钮;
所述获取页面元素内容子模块,具体用于查找验证码图片,通过光学识别的方式识别验证码图片获取验证码,触发填写输入框子模块;还用于在所述浏览器的当前页面上查找退出登录按钮;
所述测试结果断言子模块,具体用于等待预设时长,判断在浏览器的当前页面是否查找到退出登录按钮,是则测试结果为成功,触发测试数据列表判断子模块,否则测试结果为失败触发测试数据列表判断子模块。
24.如权利要求23所述的装置,其特征在于,所述打开页面子模块包括:
打开页面请求数据生成单元,用于读取所述工程配置文件中的登录页面网址,根据所述会话标识和所述登陆页面网址生成请求数据;
打开页面请求行生成单元,在所述操作命令文件中查找打开页面的命令字键值对,获取所述会话标识给所述打开被测页面的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面的命令字键值对和所述HTTP版本字符串组成请求行;
打开页面请求头生成单元,用于读取所述工程配置文件中所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的打开页面的命令字键值对生成请求头;
打开页面请求报文发送单元,用于将所述打开页面请求行生成单元生成的所述请求行、所述打开页面请求头生成单元生成的所述请求头、空行以及所述打开页面请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
打开页面响应报文接收单元,用于接收被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功打开所述登录页面,是则触发所述测试数据列表生成子模块,否则触发测试用例列表判断子模块。
25.如权利要求18所述的装置,其特征在于,当所述获取测试用例模块获取到令牌导入测试用例名时:
所述测试数据列表生成子模块,具体用于根据所述获取测试用例子模块获取到的测试用例名在所述当前测试用例中查找相应的测试用例作为当前测试用例,在所述存储模块中查找令牌导入测试用例对应的测试数据文件,读取所述测试数据文件中的测试数据形成令牌导入测试数据列表;
所述获取测试数据子模块,具体用于在所述令牌导入测试数据列表中获取一条尚未被获取过的测试数据作为当前测试数据;
所述测试数据列表判断子模块,具体用于判断所述令牌导入测试数据列表中是否还有未被获取过的测试数据,是则触发所述获取测试数据子模块,否则触发所述测试用例列表判断模块;
所诉打开页面子模块,具体用于打开令牌管理测试页面;
所述填写输入框子模块,具体用于查找令牌地址输入框并将测试数据中令牌地址填入令牌地址输入框;
所述触发按钮子模块,具体用于查找并触发导入按钮;
所述获取页面元素内容子模块,具体用于在浏览器的当前页面查找到信息提示框并获取信息提示框中的内容;
所述测试结果断言子模块,具体用于等待预设时长,判断在浏览器的当前页面上是否查找到内容为‘导入成功’的信息提示框,是则测试结果为成功,触发测试数据列表判断子模块,否则测试结果为失败,触发测试数据列表判断子模块。
26.如权利要求22或25所述的装置,其特征在于,所述打开页面子模块包括:
打开页面请求数据生成单元,用于读取所述工程配置文件中的登录页面网址,根据所述会话标识和所述登录页面网址生成请求数据;
打开页面请求行生成单元,用于在所述操作命令文件中查找打开页面的命令字键值对,获取所述会话标识给所述打开页面的命令字键值对中的第一字符串赋值,并获取所述工程配置文件中的所述HTTP版本字符串,根据赋值后的所述打开页面的命令字键值对和所述HTTP版本字符串组成请求行;
打开页面请求头生成单元,用于读取所述所述工程配置文件中所述被测系统的默认信息,根据所述请求目的地、请求数据的长度、所述被测系统的默认信息和所述赋值后的打开页面的命令字键值对生成请求头;
打开页面请求报文发送单元,用于将所述打开页面请求行生成单元组成的所述请求行、所述打开页面请求头生成单元组成的所述请求头、空行和所述打开页面请求数据生成单元生成的所述请求数据顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
打开页面响应报文接收单元,用于接收被测系统返回的响应报文并读取所述响应报文中的所述状态项,根据所述状态项判断是否成功打开登录页面;
页面跳转单元,用于读取所述工程配置文件中的用户名和登录密码信息,在所述登陆页面中查找用户名输入框和密码输入框,将读取到的用户名和登录密码分别填入查找到的所述用户名输入框和所述密码输入框,查找并识别验证码图片,将识别得到的验证码填入验证码输入框,查找并触发登录按钮,页面跳转到令牌管理测试页面。
27.如权利要求16所述的装置,其特征在于,所述自动化测试装置还包括,关闭浏览器模块,用于关闭所述浏览器。
28.如权利要求27所述的装置,其特征在于,所述关闭浏览器模块包括:
关闭浏览器请求行生成单元,用于在操作命令文件中查找所述关闭浏览器的命令字键值对,根据所述会话标识给所述命令字键值对的第一字符串赋值,并获取工程配置文件中的HTTP版本字符串,将赋值后的所述关闭浏览器的命令字键值对和所述HTTP版本字符串生成请求行;
关闭浏览器请求头生成单元,用于读取所述工程配置文件中被测系统的默认信息,根据请求目的地、所述被测系统的默认信息和所述赋值后的关闭浏览器的所述命令字键值对生成请求头;
关闭浏览器请求报文发送单元,用于将所述关闭浏览器请求行生成单元生成的所述请求行、所述关闭浏览器请求头生成单元生成的所述请求头顺序拼接得到请求报文,并向所述被测系统发送所述请求报文;
关闭浏览器响应报文接收单元,用于接收被测系统返回的响应报文并读取所述响应报文中的状态项,根据所述状态项判断是否成功关闭所述浏览器,是则结束测试,否则结束测试。
29.如权利要求17所述的装置,其特征在于,所述执行测试用例模块还包括,测试报告子模块,用于创建测试报告文件,将测试报告文件保存到所述存储模块中;
所述存储模块,还用于保存所述测试报告子模块创建的所述测试报告文件;所述测试结果断言子模块还用于所述测试结果写入所述存储模块中的所述测试报告文件。
30.如权利要求29所述的装置,其特征在于,所述执行测试用例模块还包括比较子模块,用于将所述测试结果断子言模块得到的所述测试结果与所述获取测试数据子模块获取到的测试数据中的期望值进行比较,并将比较结果写入所述存储模块中的所述测试报告文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510829175.8A CN105260318B (zh) | 2015-11-25 | 2015-11-25 | 一种基于网页的自动化测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510829175.8A CN105260318B (zh) | 2015-11-25 | 2015-11-25 | 一种基于网页的自动化测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260318A true CN105260318A (zh) | 2016-01-20 |
CN105260318B CN105260318B (zh) | 2018-04-03 |
Family
ID=55100018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510829175.8A Active CN105260318B (zh) | 2015-11-25 | 2015-11-25 | 一种基于网页的自动化测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260318B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681344A (zh) * | 2016-03-11 | 2016-06-15 | 广东亿迅科技有限公司 | 一种验证码识别系统及方法 |
CN106598852A (zh) * | 2016-12-05 | 2017-04-26 | 广州唯品会信息科技有限公司 | 软件测试方法及系统 |
CN107085553A (zh) * | 2017-03-07 | 2017-08-22 | 深圳国泰安教育技术股份有限公司 | 一种输入框测试方法及装置 |
CN107122297A (zh) * | 2017-04-18 | 2017-09-01 | 上海雷腾软件股份有限公司 | 用于测试接口的请求消息生成的方法及设备 |
CN107179990A (zh) * | 2017-05-17 | 2017-09-19 | 郑州云海信息技术有限公司 | 一种实现测试校验的方法及装置 |
CN107423221A (zh) * | 2017-08-04 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种web应用可持续测试方法及系统 |
CN107707396A (zh) * | 2017-09-28 | 2018-02-16 | 平安科技(深圳)有限公司 | 一种乱码监控方法、存储介质和服务器 |
CN109800154A (zh) * | 2018-12-15 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
CN110825635A (zh) * | 2019-11-05 | 2020-02-21 | 京东数字科技控股有限公司 | 测试方法、装置和计算机可读存储介质 |
CN110912776A (zh) * | 2019-11-27 | 2020-03-24 | 中国科学院信息工程研究所 | 一种实体路由器管理协议的自动化模糊测试方法及装置 |
CN111159028A (zh) * | 2019-12-23 | 2020-05-15 | 望海康信(北京)科技股份公司 | 网页测试方法及装置 |
CN113094268A (zh) * | 2021-04-07 | 2021-07-09 | 中国工商银行股份有限公司 | 测试方法、装置、设备、介质和程序产品 |
CN113760730A (zh) * | 2021-01-27 | 2021-12-07 | 北京京东振世信息技术有限公司 | 一种自动化测试的方法和装置 |
CN113821451A (zh) * | 2021-11-24 | 2021-12-21 | 北京交研智慧科技有限公司 | 一种测试方法、装置、电子设备和可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130042222A1 (en) * | 2011-08-08 | 2013-02-14 | Computer Associates Think, Inc. | Automating functionality test cases |
CN103377127A (zh) * | 2012-04-28 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 网页产品的开发测试系统、测试方法及装置 |
CN103377123A (zh) * | 2012-04-25 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种网页代码自动化测试方法及装置 |
CN103823754A (zh) * | 2014-02-11 | 2014-05-28 | 深圳市同洲电子股份有限公司 | 一种实现自动测试的方法及装置 |
CN103902439A (zh) * | 2012-12-25 | 2014-07-02 | 北大方正集团有限公司 | 一种测试用例的管理方法、装置及系统 |
CN104820640A (zh) * | 2015-05-19 | 2015-08-05 | 广州华多网络科技有限公司 | 一种网页测试方法和装置 |
-
2015
- 2015-11-25 CN CN201510829175.8A patent/CN105260318B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130042222A1 (en) * | 2011-08-08 | 2013-02-14 | Computer Associates Think, Inc. | Automating functionality test cases |
US20150007149A1 (en) * | 2011-08-08 | 2015-01-01 | Ca, Inc. | Automating functionality test cases |
CN103377123A (zh) * | 2012-04-25 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种网页代码自动化测试方法及装置 |
CN103377127A (zh) * | 2012-04-28 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 网页产品的开发测试系统、测试方法及装置 |
CN103902439A (zh) * | 2012-12-25 | 2014-07-02 | 北大方正集团有限公司 | 一种测试用例的管理方法、装置及系统 |
CN103823754A (zh) * | 2014-02-11 | 2014-05-28 | 深圳市同洲电子股份有限公司 | 一种实现自动测试的方法及装置 |
CN104820640A (zh) * | 2015-05-19 | 2015-08-05 | 广州华多网络科技有限公司 | 一种网页测试方法和装置 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681344A (zh) * | 2016-03-11 | 2016-06-15 | 广东亿迅科技有限公司 | 一种验证码识别系统及方法 |
CN106598852A (zh) * | 2016-12-05 | 2017-04-26 | 广州唯品会信息科技有限公司 | 软件测试方法及系统 |
CN107085553A (zh) * | 2017-03-07 | 2017-08-22 | 深圳国泰安教育技术股份有限公司 | 一种输入框测试方法及装置 |
CN107085553B (zh) * | 2017-03-07 | 2020-05-19 | 深圳国泰安教育技术有限公司 | 一种输入框测试方法及装置 |
CN107122297A (zh) * | 2017-04-18 | 2017-09-01 | 上海雷腾软件股份有限公司 | 用于测试接口的请求消息生成的方法及设备 |
CN107179990A (zh) * | 2017-05-17 | 2017-09-19 | 郑州云海信息技术有限公司 | 一种实现测试校验的方法及装置 |
CN107179990B (zh) * | 2017-05-17 | 2020-09-08 | 浪潮云信息技术股份公司 | 一种实现测试校验的方法及装置 |
CN107423221A (zh) * | 2017-08-04 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种web应用可持续测试方法及系统 |
CN107707396A (zh) * | 2017-09-28 | 2018-02-16 | 平安科技(深圳)有限公司 | 一种乱码监控方法、存储介质和服务器 |
CN107707396B (zh) * | 2017-09-28 | 2020-01-24 | 平安科技(深圳)有限公司 | 一种乱码监控方法、存储介质和服务器 |
CN109800154B (zh) * | 2018-12-15 | 2022-04-05 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
CN109800154A (zh) * | 2018-12-15 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
CN110825635A (zh) * | 2019-11-05 | 2020-02-21 | 京东数字科技控股有限公司 | 测试方法、装置和计算机可读存储介质 |
CN110825635B (zh) * | 2019-11-05 | 2021-05-04 | 京东数字科技控股有限公司 | 测试方法、装置和计算机可读存储介质 |
CN110912776A (zh) * | 2019-11-27 | 2020-03-24 | 中国科学院信息工程研究所 | 一种实体路由器管理协议的自动化模糊测试方法及装置 |
CN111159028A (zh) * | 2019-12-23 | 2020-05-15 | 望海康信(北京)科技股份公司 | 网页测试方法及装置 |
CN113760730A (zh) * | 2021-01-27 | 2021-12-07 | 北京京东振世信息技术有限公司 | 一种自动化测试的方法和装置 |
CN113094268A (zh) * | 2021-04-07 | 2021-07-09 | 中国工商银行股份有限公司 | 测试方法、装置、设备、介质和程序产品 |
CN113821451A (zh) * | 2021-11-24 | 2021-12-21 | 北京交研智慧科技有限公司 | 一种测试方法、装置、电子设备和可读存储介质 |
CN113821451B (zh) * | 2021-11-24 | 2022-03-22 | 北京交研智慧科技有限公司 | 一种测试方法、装置、电子设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105260318B (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260318A (zh) | 一种基于网页的自动化测试方法及装置 | |
CN108650149B (zh) | 服务器的测试方法、装置、设备及计算机可读存储介质 | |
US6665634B2 (en) | Test system for testing dynamic information returned by a web server | |
CN104767775B (zh) | 网页应用消息推送方法及系统 | |
US20170185678A1 (en) | Crawler system and method | |
US20190268320A1 (en) | Dynamic web services server | |
CN110442756A (zh) | 数据校验方法、装置、计算机设备和存储介质 | |
CN107124430B (zh) | 页面劫持监控方法、装置、系统和存储介质 | |
US20100306833A1 (en) | Autonomous intelligent user identity manager with context recognition capabilities | |
CN103248525A (zh) | 配置网络资源的方法及装置 | |
CN113645224A (zh) | 一种网络攻击检测方法、装置、设备及存储介质 | |
US20190073600A1 (en) | Skipping maintenance mode of applications | |
US20170300129A1 (en) | Keypress processing method and apparatus for terminal | |
CN110636038A (zh) | 账号解析方法、装置、安全网关及系统 | |
CN108076017A (zh) | 一种数据包的协议解析方法及装置 | |
CN105487859A (zh) | 一种基于模板的大数据组件web部署方法 | |
CN105812481A (zh) | 一种超文本传输协议请求识别系统及方法 | |
US11768759B2 (en) | Method and system for automated testing of web service APIs | |
CN112363907A (zh) | Dubbo接口的测试方法、装置、电子装置和存储介质 | |
CN114546837A (zh) | 接口测试的方法、装置、设备及存储介质 | |
CN112235124B (zh) | 一种皮基站配置方法、装置、存储介质和电子装置 | |
CN111382051B (zh) | 一种api自动测试方法及测试装置 | |
CN107026854A (zh) | 漏洞验证方法及装置 | |
CN111737114A (zh) | 一种登录功能测试方法和装置 | |
CN107203714B (zh) | 数据校验文件的配置方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |