51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1935|回复: 2
打印 上一主题 下一主题

C/S 架构系统自动化测试入门

[复制链接]
  • TA的每日心情
    郁闷
    2022-8-29 14:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-2-6 15:32:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
          所谓C/S架构即Client/Server(客户端/服务器架构)。虽然近年来C/S架构产品越来越少,大有被
    B/S(Browser/Server 浏览器/服务器)架构超越的趋势,但C/S还是有B/S不可替代的优势(如系统速度
    快,用户体验好,处理能力强且可以实现复杂业务功能等)。

          本文以网易云音乐客户端为例,介绍C/S结构系统自动化测试方法,操作系统为Windows10,使
    用工具为Python2.7+AutoIT v3。

         1. AutoIT 介绍

         1.1 AutoIt 简介

         AutoIt是用以编写并生成具有BASIC语言风格的脚本程序的免费软件,它被设计用来在WindowsGUI
    (用户界面)中进行自动操作。通过它可以组合使用模拟键击,鼠标移动和窗口/控件操作等来实现自动
    化任务。AutoIt非常小巧,可以在所有windows操作系统上运行,且不需要任何运行库。官网:
    https://www.autoitscript.com

         1.2 AutoIt 下载安装

         直接从官网下载最新版本(v3.3.14.2)后安装即可,下载地址:
    https://www.autoitscript.com/site/autoit/downloads/
    同时,我也上传到了百度网盘,还有两本中文帮助文档,推荐大家下载。
    链接: https://pan.baidu.com/s/1bINz8i 密码: hjq9

         1.3 AutoIt 快速入门

        对于没有接触过AutoIt的同学,建议详细阅读下我上传的手册《AutoIt3CHS.chm》,里面有详细的入
    门教程。这里只做简单的介绍:

        1) 首先安装完成之后,你会看到AutoIt v3安装目录如下:

         其中AutoIt Help File是帮助手册,AutoIt Window Info是窗口信息工具(x64或x86分别代表64位或32
    位版本),Compile Script to .exe是打包工具(打包au3脚本为exe文件),Run Script是运行脚本工具,
    SciTE Script Editor是脚本编辑器即IDE。

         2) 我们运行SciTE Script Editor,输入如下代码(弹出消息框,输出Hello World)
    MsgBox(0,'Hello World','AutoIt Demo by Lovesoo')

         3) Ctrl+S保存当前文件

         4) F5运行,结果如下

        2. C/S架构客户端自动化测试

        下面我们以网易云音乐客户端为例,详细介绍C/S架构客户端如何实现自动化测试。

        首先我们设想一个基本的测试流程如下:运行网易云音乐-> 搜索歌曲并播放 -> 校验播放歌曲是否正确

        下面我们使用AutoIT及Python+AutoIt分别实现相应的自动化测试:

       2.1 AutoIt版   2.1.1 运行网易云音乐 运行网易云音乐客户端命令非常简单,如下我们定义了
    网易云音乐客户端路径,使用Run函

    数运行即可,并使用Sleep函数等待5秒至客户端启动完成:


    1. ;定义相关参数
    2. $cloudmusic_path="C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe"

    3. ;运行网易云音乐
    4. Run($cloudmusic_path)
    5. Sleep(5000)
    复制代码
          下面,我们使用WinWaitActive函数,等待网易云音乐客户端窗口弹出并成为激活
    状态,这时我们首先需要使用AutoIt Window Info获取窗口信息:


         2)运行AutoIt Window Info (x64)

          3) 使用快捷键Ctrl+Alt+F激活窗口信息工具

          4) 鼠标点击网易云标题栏,并使用快捷键Ctrl+Alt+F锁定窗口信息工具,可以看到此时我们获取的
    网易云音乐客户端的窗口信息包括Title,Class等

          5) 这里我们使用Class:OrpheusBrowserHost作为WinWaitActive参数 (因为Title不固定是“网易云音
    乐”,当播放歌曲时为歌曲信息)
    1. $cloudmusic_title="[CLASS:OrpheusBrowserHost]"

    2. ;等待网易云音乐窗口激活
    3. WinWaitActive($cloudmusic_title)
    复制代码
        2.1.2 搜索歌曲并播放

        下面我们在等待激活网易云音乐客户端窗口后,去搜索栏输入歌曲名称完成搜索及播放,同样我们使用窗
    口信息工具尝试获取搜索栏控件信息,发现无法正常获取搜索栏控件信息(鼠标云音乐标题栏移动至搜索栏
    时,Control Info没有任何变化)

          这是由于AutoIt只支持标准的Microsoft控件,这样我们就只能使用模拟键盘鼠标操作的方法了。我们发现,
    在打开网易云音乐后,按TAB键5下会切换到搜索栏,此时输入歌曲名,再按向下键3下会选中第一首搜索歌
    曲,按回车即可播放,实现代码如下:
    1. $song="红玫瑰"

    2. ;按5下TAB切换至搜索框
    3. Send("{TAB 5}")

    4. ;搜索歌曲
    5. Send($song)
    6. Sleep(1000)

    7. ;按3下向下键选择第一首歌曲
    8. Send("{DOWN 3}")
    9. Sleep(1000)

    10. ;按回车键播放歌曲
    11. Send("{ENTER}")
    12. Sleep(1000)
    复制代码
         2.1.3 校验播放歌曲是否正确

          下面我们校验播放的歌曲是否为我们搜索的歌曲,此时只需校验网易云音乐客户端标题即可,代码如下:
    1. ;校验当前窗口标题是否含有搜索歌曲名
    2. $title = WinGetTitle($cloudmusic_title)
    3. if StringInStr($title,$song) Then
    4.    MsgBox(0, "测试通过", $song&" in "&$title,2)
    5. Else
    6.    MsgBox(16, "测试失败", $song&" not in "&$title)
    7. EndIf
    复制代码
          2.1.4 关闭网易云音乐窗口

           最后我们使用WinClose函数即可关闭网易云音乐窗口:
    1. ;关闭窗口
    2. WinClose($cloudmusic_title)
    复制代码
           2.1.5 完整AutoIt代码

            使用AutoIt进行网易云音乐客户端自动化测试,完整版示例demo如下:
    1. ;定义相关参数
    2. $cloudmusic_path="C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe"
    3. $cloudmusic_title="[CLASS:OrpheusBrowserHost]"
    4. $song="红玫瑰"

    5. ;运行网易云音乐
    6. Run($cloudmusic_path)
    7. Sleep(5000)

    8. ;等待网易云音乐窗口激活
    9. WinWaitActive($cloudmusic_title)

    10. ;按5下TAB切换至搜索框
    11. Send("{TAB 5}")

    12. ;搜索歌曲
    13. Send($song)
    14. Sleep(1000)

    15. ;按3下向下键选择第一首歌曲
    16. Send("{DOWN 3}")
    17. Sleep(1000)

    18. ;按回车键播放歌曲
    19. Send("{ENTER}")
    20. Sleep(1000)

    21. ;校验当前窗口标题是否含有搜索歌曲名
    22. $title = WinGetTitle($cloudmusic_title)
    23. if StringInStr($title,$song) Then
    24.    MsgBox(0, "测试通过", $song&" in "&$title,2)
    25. Else
    26.    MsgBox(16, "测试失败", $song&" not in "&$title)
    27. EndIf

    28. ;关闭窗口
    29. WinClose($cloudmusic_title)
    复制代码




    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-8-29 14:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2018-2-6 15:37:17 | 只看该作者
           2.2. Python+AutoIt
           Python中同样有AutoIt lib库PyAutoIt,我们使用pip命令安装即可
    1. pip install -U pyautoit
    复制代码
          官方示例demo(打开notepad记事本,输入hello world,然后不保存退出notepad )如下:
    1. import autoit

    2. autoit.run("notepad.exe")
    3. autoit.win_wait_active("[CLASS:Notepad]", 3)
    4. autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}")
    5. autoit.win_close("[CLASS:Notepad]")
    6. autoit.control_click("[Class:#32770]", "Button2")
    复制代码
           同样我们将上面的AutoIt脚本改为Python版本(注意:autoit函数全部改为小写,以autoit.打头,
    且多个单词以_分割)如下:
    1. # coding:utf-8
    2. import autoit
    3. import time

    4. #定义相关参数
    5. cloudmusic_path="C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe"
    6. cloudmusic_title="[CLASS:OrpheusBrowserHost]"
    7. song=u"红玫瑰"

    8. #运行网易云音乐
    9. autoit.run(cloudmusic_path)
    10. time.sleep(5)

    11. #等待网易云音乐窗口激活
    12. autoit.win_wait_active(cloudmusic_title)

    13. #按5下TAB切换至搜索框
    14. autoit.send("{TAB 5}")

    15. #搜索歌曲
    16. autoit.send(song)
    17. time.sleep(1)

    18. #按3下向下键选择第一首歌曲
    19. autoit.send("{DOWN 3}")
    20. time.sleep(1)

    21. #按回车键播放歌曲
    22. autoit.send("{ENTER}")
    23. time.sleep(1)

    24. #校验当前窗口标题是否含有搜索歌曲名
    25. title = autoit.win_get_title(cloudmusic_title)
    26. assert song in title,song.encode('utf-8')+' not in '+title.encode('utf-8')

    27. #关闭窗口
    28. autoit.win_close(cloudmusic_title)
    复制代码
            2.3 Python + AutoIt +Nosetests

             我们还可以把上述脚本改为使用Nosetests框架的脚本,如下:
    1. # coding:utf-8
    2. import autoit
    3. import time


    4. class test_cloudmusic(object):

    5.     # 定义相关参数
    6.     cloudmusic_path = "C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe"
    7.     cloudmusic_title = "[CLASS:OrpheusBrowserHost]"
    8.     song = u"红玫瑰"

    9.     def test_search(self):
    10.         # 运行网易云音乐
    11.         autoit.run(self.cloudmusic_path)
    12.         time.sleep(5)

    13.         # 等待网易云音乐窗口激活
    14.         autoit.win_wait_active(self.cloudmusic_title)

    15.         # 按5下TAB切换至搜索框
    16.         autoit.send("{TAB 5}")

    17.         # 搜索歌曲
    18.         autoit.send(self.song)
    19.         time.sleep(1)

    20.         # 按3下向下键选择第一首歌曲
    21.         autoit.send("{DOWN 3}")
    22.         time.sleep(1)

    23.         # 按回车键播放歌曲
    24.         autoit.send("{ENTER}")
    25.         time.sleep(1)

    26.         # 校验当前窗口标题是否含有搜索歌曲名
    27.         title = autoit.win_get_title(self.cloudmusic_title)
    28.         assert self.song in title, self.song.encode('utf-8') + ' not in ' + title.encode('utf-8')

    29.         # 关闭窗口
    30.         autoit.win_close(self.cloudmusic_title)
    复制代码
            使用nosetests -v test_xxx.py即可运行测试,结果如下:

             至此我们使用Python + AutoIt,并结合Nosetests框架完成了一个C/S架构客户端的自动化测试示
    例demo,此外还可以集成相关插件完成测试报告输出及邮件发送等功能。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 10:49 , Processed in 0.070198 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表