最近一直做UI自动化,使用Ranorex软件最软件进行录制。(对于使用录制功能对自己来说是失望的。因为公司考虑快捷高效,没有时间去让你了解代码)我对于UI自动化是持否定态度的,因为我觉得UI耗时耗力,只有一种行为动作,界面测试我倾向于随机测试,这只能保证一种程序化的操作的界面功能是没有问题。

由于公司软件是属于功能型软件。业务的偏重点其实具体明确。根据软件具体问题具体分析。Ranorex是根据软件控件Xpath定位。

录制心得。根据被测软件先进行模块化分析,减少各个测试步骤之间的联系(专业名词好像是耦合),减少各个测试项之间的联系。

然后进行参数化,能够更高效利用各个录制视频,不仅对text选项可以进行参数化,而且还可以对XPath里的某些参数进行参数化。创建套件的变量以及各个测试用例的变量。套件的变量相当于是整体变量,而各个测试用例的变量可以绑定到套件变量,然后可以修改套件变量的值,来修改各个测试用变量。

当然各个测试用也可以导入数据,新建数据,CSV,Excel文件。

判断测试结果,使用vidate空间,来判断测试界面反应的结果是否正确。

最后由于遇到问题,由于前一个测试用例出现问题,导致下一个测试用例无法正常运行,需要添加判断条件,由于我天资聪颖,不会C#的我居然知道语言的也是有if语句。自己添加函数,田间判断条件,如果测试不成功则killprogress 这个软件。这让我觉得我真是能力强大,善于解决疑难杂症。

需要学习新知识:XPath,UI

用python来编辑RobotFamework测试用例

#-*-coding:utf-8 -*-
from robot.api import TestSuite
from robot.api import ResultWriter
from robot.model import Keyword
class BaiduSearchTest:
    #baidu SearchTest
    def __init__(self , name , librarys=["SeleniumLibrary"]):
        #create test_suite
        self.suite= TestSuite(name)
        # import seleniumliabrary
        for lib in librarys:
            self.suite.resource.imports.library(lib)
    #define var
    def create_variables(self):
        variables = {
            "${baidu}":"http://www.baidu.com",
            "${browser}": "Firefox",
            "${search_input}":"id=kw",
            "${search_btn}":"id=su"
        }
        for k,v in variables.items():
            self.suite.resource.variables.create(k,v)
    #testcase:open brower
    def open_Brower(self):
        test_01 = self.suite.tests.create("Open_browser")
        test_01.keywords.create("Open Browser",args =["${baidu}","${browser}"])
        test_01.keywords.create("Title Should be",args =["百度一下,你就知道"])
    #testcase:baidu_search
    def search_word(self):
        test_02 = self.suite.tests.create("Test_baidu")
        test_02.keywords.create("Input Text",args = ["${search_input}","测试教程网"])
        test_02.keywords.create("Click Button",args = ["${search_btn}"])
        test_02.keywords.create("Sleep",args = ["5s"])
    #测试用例:断言验证搜索结果标题
    def assert_title(self):
        test_03 =self.suite.tests.create("验证")
        test_03.keywords.create("Title Should Be",args = ["测试教程网_百度搜索"])
    #测试用例:关闭测试用例
    def Close_Borwser(self):
        test_04 = self.suite.tests.create("Close_Borwser")
        test_04.keywords.create("Close All Browsers")
    #运行
    def run(self):
        self.create_variables()
        self.open_Brower()
        self.search_word()
        self.assert_title()
        self.Close_Borwser()
    #运行套件
        result = self.suite.run(critical ="baidu_search",output = "output.html")
    #生成日志,报告文件
        ResultWriter(result).Write_results(report = "report.html",log = "log.html")
if __name__ == '__main__':
    print("用Python写RobotFramework测试")
    suite = BaiduSearchTest("baidu_search")
    suite.run()

测试结果

此代码是看别人博客代码里照着写的,找思路,但是现在还没有看出RobotFamework框架的作用。

test_01=suite.tests.creates("测试"):创建测试用例

test_01.keywords.create("关键字",args =["变量",“参数”)