51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【好消息】企业内训服务上线啦!项目为王,自动化测试提升加速器 !横扫BAT,Python全栈测试开发技能大全
【第122期】:如何入门接口自动化测试!参与调查问卷 缔造行业趋势 月薪15K+的测试开发必备技能? 【活动】为视频UP主打CALL,互动领福利!
查看: 3376|回复: 13

【你来问我来答第121期】:IT内卷时代,如何做好自动化测试技术?(活动结束)

[复制链接]
  • TA的每日心情

    2021-9-6 09:30
  • 签到天数: 537 天

    连续签到: 1 天

    [LV.9]测试副司令

    发表于 2021-8-2 09:52:17 | 显示全部楼层 |阅读模式

    论坛ID:jims55555
    现任公司:众安在线
    现任职位:测试负责人 51Testing网校兼职讲师
    项目经验: 在10年多的测试生涯中,有2年技术开发工作,先后服务了第三方支付公司、O2O电商公司、本地生活行业、农村电商等公司。
    擅长技术:测试开发、自动化测试、测试管理、测试策略等技术,使用appium,selenium等工具做UI自动化测试,擅长使用python、java语言做接口自动化测试,包括框架的搭建,脚本的编写、二次开发、测试平台开发等。
    本人比较喜欢将测试技术分享给他人,喜欢大型单机游戏,音乐,咏春拳。
    嘉宾网校课程
    接口自动化测试平台测试开发Locust实现性能测试实战Burp Suite实战web安全之大神养成手册


    各位会员可以在8.10日前以回帖的方式向客座专家提问。

    (请大家围绕本期客座专家的擅长领域进行提问、探讨)

    客座专家将在8月1日—8月31日为大家集中解答。

    机会难得,欢迎大家踊跃提问


    本帖子中包含更多资源

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

    x
    回复

    使用道具 举报

    该用户从未签到

    发表于 2021-8-9 13:48:33 来自手机 | 显示全部楼层
    wangwei12569 发表于 2021-8-7 15:38
    老师好!问下目前测试内卷到什么程度了?以及如何做好自动化测试技术?谢谢

    要做好自动化测试技术 首先需要掌握一门编程语言 比如Python或JAVA 其次 就是需要有一定的思路 比如怎么落地 持续集成 还有工具等
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-8-6 16:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2021-8-6 16:14:53 | 显示全部楼层
    你好,现在国内无论什么行业内卷化越来严重。我想问下如果按照这个发展趋势,对IT行业有利吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-7 15:38:45 | 显示全部楼层
    老师好!问下目前测试内卷到什么程度了?以及如何做好自动化测试技术?谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-9 13:46:39 来自手机 | 显示全部楼层
    一纸荒年 发表于 2021-8-6 16:14
    你好,现在国内无论什么行业内卷化越来严重。我想问下如果按照这个发展趋势,对IT行业有利吗?

    肯定是不利的啊 你想 如果越来越严重的话 大家就不会把精力放在技术上了 我们的IT行业怎么发展哈?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-9 17:33:31 | 显示全部楼层
    老师您好,不知道是不是该学自动化,会有种功能性能都还没玩透就要学自动化的感觉,怕步子迈大了 不好,但是看着大家都在说自动化,心里着急得很,希望老师能给给我些建议。谢谢。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-10 13:17:22 | 显示全部楼层
    本帖最后由 海鸥一飞 于 2021-8-10 13:19 编辑

    Appium+Python爬虫无法启动APP,非计算机专业,初学python和appium,需要抓取小红书APP的数据,连接夜神模拟器,但是无法启动APP,一直报错找不到原因,下面放上appium工作日志希望大神可以帮帮忙。谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-10 13:18:18 | 显示全部楼层
    1. [W3C] Calling AppiumDriver.createSession() with args: [{"platformName":"Android","deviceName":"127.0.0.1:62025","appPackage":"com.xingin.xhs","platformVersion":"5.1.1","appActivity":".activity.SplashActivity","noReset":true,"unicodeKeyboard":true},null,{"firstMatch":[{"platformName":"Android","appium:deviceName":"127.0.0.1:62025","appium:appPackage":"com.xingin.xhs","appium:platformVersion":"5.1.1","appium:appActivity":".activity.SplashActivity","appium:noReset":true,"appium:unicodeKeyboard":true}]}]
    2. [BaseDriver] Event 'newSessionRequested' logged at 1553679403156 (17:36:43 GMT+0800 (中国标准时间))
    3. [Appium] DeprecationWarning: 'automationName' capability was not provided. Future versions of Appium will require 'automationName' capability to be set for Android sessions.
    4. [Appium] Setting automation to 'UiAutomator1'.
    5. [Appium] Creating new AndroidDriver (v4.8.0) session
    6. [Appium] Capabilities:
    7. [Appium]   platformName: Android
    8. [Appium]   deviceName: 127.0.0.1:62025
    9. [Appium]   appPackage: com.xingin.xhs
    10. [Appium]   platformVersion: 5.1.1
    11. [Appium]   appActivity: .activity.SplashActivity
    12. [Appium]   noReset: true
    13. [Appium]   unicodeKeyboard: true
    14. [BaseDriver] W3C capabilities {"alwaysMatch":{"platformNa... and MJSONWP desired capabilities {"platformName":"Android","... were provided
    15. [BaseDriver] Creating session with W3C capabilities: {"alwaysMatch":{"platformNa...
    16. [BaseDriver] Session created with session id: 4aa3fc42-b895-499c-b714-aaaf47854f3a
    17. [AndroidDriver] Java version is: 1.8.0_201
    18. [AndroidDriver] Retrieving device list
    19. [ADB] Trying to find a connected android device
    20. [ADB] Getting connected devices...
    21. [ADB] 1 device(s) connected
    22. [AndroidDriver] Looking for a device with Android '5.1.1'
    23. [ADB] Setting device id to 127.0.0.1:62001
    24. [ADB] Getting device platform version
    25. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell getprop ro.build.version.release'
    26. [ADB] Current device property 'ro.build.version.release': 5.1.1
    27. [AndroidDriver] Using device: 127.0.0.1:62001
    28. [ADB] Setting device id to 127.0.0.1:62001
    29. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell getprop ro.build.version.sdk'
    30. [ADB] Current device property 'ro.build.version.sdk': 22
    31. [ADB] Device API level: 22
    32. [AndroidDriver] App file was not listed, instead we're going to run com.xingin.xhs directly on the device
    33. [AndroidDriver] Checking whether package is present on the device
    34. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell pm list packages com.xingin.xhs'
    35. [AndroidDriver] Starting Android session
    36. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 wait-for-device'
    37. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell echo ping'
    38. [AndroidDriver] Pushing settings apk to device...
    39. [ADB] Getting install status for io.appium.settings
    40. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell dumpsys package io.appium.settings'
    41. [ADB] 'io.appium.settings' is not installed
    42. [ADB] App 'C:\Users\zlp\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\io.appium.settings\apks\settings_apk-debug.apk' is not installed
    43. [ADB] Installing 'C:\Users\zlp\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\io.appium.settings\apks\settings_apk-debug.apk'
    44. [ADB] Skipping permissions grant option, since the current API level 22 does not support applications permissions customization
    45. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 install C\:\\Users\\zlp\\AppData\\Local\\Programs\\Appium\\resources\\app\\node_modules\\appium\\node_modules\\io.appium.settings\\apks\\settings_apk-debug.apk'
    46. [ADB] Install command stdout: pkg: /data/local/tmp/settings_apk-debug.apk
    47. [ADB] Success
    48. [ADB] Getting IDs of all 'io.appium.settings' processes
    49. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell 'pgrep --help; echo $?''
    50. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell 'pidof --help > /dev/null; echo $?''
    51. [ADB] Using ps-based PID detection
    52. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell ps'
    53. [AndroidDriver] Granting android.permission.SET_ANIMATION_SCALE, CHANGE_CONFIGURATION, ACCESS_FINE_LOCATION by pm grant
    54. [ADB] Granting permissions ["android.permission.SET_ANIMATION_SCALE","android.permission.CHANGE_CONFIGURATION","android.permission.ACCESS_FINE_LOCATION"] to 'io.appium.settings'
    55. [ADB] Got the following command chunks to execute: [["pm","grant","io.appium.settings","android.permission.SET_ANIMATION_SCALE",";","pm","grant","io.appium.settings","android.permission.CHANGE_CONFIGURATION",";","pm","grant","io.appium.settings","android.permission.ACCESS_FINE_LOCATION",";"]]
    56. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell pm grant io.appium.settings android.permission.SET_ANIMATION_SCALE \; pm grant io.appium.settings android.permission.CHANGE_CONFIGURATION \; pm grant io.appium.settings android.permission.ACCESS_FINE_LOCATION \;'
    57. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell am start -W -n io.appium.settings/.Settings -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000'
    58. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell settings put secure mock_location 1'
    59. [Logcat] Starting logcat capture
    60. [AndroidDriver] Enabling Unicode keyboard support
    61. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell settings get secure default_input_method'
    62. [AndroidDriver] Unsetting previous IME com.android.inputservice/.InputService
    63. [AndroidDriver] Setting IME to 'io.appium.settings/.UnicodeIME'
    64. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell ime enable io.appium.settings/.UnicodeIME'
    65. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell ime set io.appium.settings/.UnicodeIME'
    66. [ADB] Getting device platform version
    67. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell getprop ro.build.version.release'
    68. [ADB] Current device property 'ro.build.version.release': 5.1.1
    69. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell wm size'
    70. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell getprop ro.product.model'
    71. [ADB] Current device property 'ro.product.model': MI 6
    72. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell getprop ro.product.manufacturer'
    73. [ADB] Current device property 'ro.product.manufacturer': Xiaomi
    74. [AndroidDriver] No app sent in, not parsing package/activity
    75. [AndroidDriver] No app capability. Assuming it is already on the device
    76. [AndroidBootstrap] Watching for bootstrap disconnect
    77. [ADB] Forwarding system: 4724 to device: 4724
    78. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 forward tcp\:4724 tcp\:4724'
    79. [UiAutomator] Starting UiAutomator
    复制代码

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-10 13:18:33 | 显示全部楼层
    1. [UiAutomator] Moving to state 'starting'
    2. [UiAutomator] Parsing uiautomator jar
    3. [UiAutomator] Found jar name: 'AppiumBootstrap.jar'
    4. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 push C\:\\Users\\zlp\\AppData\\Local\\Programs\\Appium\\resources\\app\\node_modules\\appium\\node_modules\\appium-android-driver\\bootstrap\\bin\\AppiumBootstrap.jar /data/local/tmp/'
    5. [ADB] Attempting to kill all uiautomator processes
    6. [ADB] Getting IDs of all 'uiautomator' processes
    7. [ADB] Using ps-based PID detection
    8. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell ps'
    9. [ADB] No 'uiautomator' process has been found
    10. [UiAutomator] Starting UIAutomator
    11. [ADB] Creating ADB subprocess with args: ["-P",5037,"-s","127.0.0.1:62001","shell","uiautomator","runtest","AppiumBootstrap.jar","-c","io.appium.android.bootstrap.Bootstrap","-e","pkg","com.xingin.xhs","-e","disableAndroidWatchers",false,"-e","acceptSslCerts",false]
    12. [UiAutomator] Moving to state 'online'
    13. [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Loading json...
    14. [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Registered crash watchers.
    15. [AndroidBootstrap] Android bootstrap socket is now connected
    16. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell dumpsys window'
    17. [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Client connected
    18. [AndroidDriver] Screen already unlocked, doing nothing
    19. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell am start -W -n com.xingin.xhs/.activity.SplashActivity -S'
    20. [AndroidDriver] Shutting down Android driver
    21. [ADB] Running 'D:\android-sdk\sdk\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell am force-stop com.xingin.xhs'
    22. [BaseDriver] Event 'newSessionStarted' logged at 1553679571306 (17:39:31 GMT+0800 (中国标准时间))
    23. [W3C] Encountered internal error running command: Error: Cannot start the 'com.xingin.xhs' application. Visit https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md for troubleshooting. Original error: Error executing adbExec. Original error: 'Command 'D\:\\android-sdk\\sdk\\adt-bundle-windows-x86_64-20140702\\sdk\\platform-tools\\adb.exe -P 5037 -s 127.0.0.1\:62001 shell am start -W -n com.xingin.xhs/.activity.SplashActivity -S' timed out after 20000ms'. Try to increase the 20000ms adb execution timeout represented by 'adbExecTimeout' capability
    24. [W3C] at ADB.apkUtilsMethods.startApp (C:\Users\zlp\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-adb\lib\tools\apk-utils.js:144:11)
    25. [HTTP] <-- POST /wd/hub/session 500 168162 ms - 1794
    26. [HTTP]
    复制代码


    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-10 18:06:20 来自手机 | 显示全部楼层
    悠悠小仙仙 发表于 2021-8-9 17:33
    老师您好,不知道是不是该学自动化,会有种功能性能都还没玩透就要学自动化的感觉,怕步子迈大了 不好,但 ...

    你好 你可以抽时间看看boss或者其他招聘平台上看下对测试的职业要求 其实 现在大多数的大厂或者独角兽公司招聘的都是测试开发 所以说 建议你学习一门语言 比如Python JAVA 然后在学习其中的web开发框架 比如flask django sprintboot等 学习语言后才能开发测试框架 测试工具 测试平台 然后在掌握测试技术 那你可以在这个行业发展的更好 才能不太容易被淘汰
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-8-16 14:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2021-8-16 14:03:16 | 显示全部楼层
    您好,我想问下公司一般用哪些工具做接口测试?常用哪些,那种比较好?
    希望能得到回复,我看了下嘉宾貌似有问题选择性回复的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-16 20:03:36 来自手机 | 显示全部楼层
    Mario洁 发表于 2021-8-16 14:03
    您好,我想问下公司一般用哪些工具做接口测试?常用哪些,那种比较好?
    希望能得到回复,我看了下嘉宾貌似 ...

    如果是开源的工具的话 一般用Postman jmeter 多一些,但是现在很多大厂都是使用自主研发的测试平台来做接口测试,方便管理和执行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-8-16 14:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2021-8-17 11:05:09 | 显示全部楼层
    youle2015 发表于 2021-8-16 20:03
    如果是开源的工具的话 一般用Postman jmeter 多一些,但是现在很多大厂都是使用自主研发的测试平台来做接 ...

    好的多谢回复,不知道您这边有什么推荐的书籍和视频吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-8-18 15:33:15 | 显示全部楼层
    你好,我看到您有一门课程是关于locust的,有一个关于locust问题想请教下您。

    最近使用python locust对项目一个接口进行压测,由于被测接口使用的token进行用户凭证验证,大体实施思路是先请求登录接口获取响应头中的token,再将token拼接到被测接口的请求头中请求被测接口,实际运行时会有大概10%-20%的失败请求,初步验证是由于locuts模拟的token无效导致。

    1.代码实现:

       login方法和被测接口实现方法都属于继承了TaskSet的类下

    • 1获取token方法

    1. def login(self):
    2.         pw = '*****'
    3.         md = hashlib.md5()
    4.         md.update(pw.encode('utf-8'))
    5.         pwd5 = md.hexdigest()
    6.         url = "http://******:*****/login/login"
    7.         payload = json.dumps({
    8.             "code": "****",
    9.             "password": pwd5,
    10.             "username": "****"
    11.         })
    12.         headers = {
    13.             'Content-Type': 'application/json'
    14.         }
    15.         response = requests.request('post',url, headers=headers, data=payload)
    16.         return response.headers['x-auth-token']
    复制代码
    • 2.locust请求被测接口实现
    1.         token = self.login()
    2.         head={
    3.             'x-auth-token': token,
    4.             'Content-Type': 'application/json'
    5.         }
    6.         with self.client.post("/被测接口",headers= head,json=body,catch_response = True) as response:
    7.             code=response.json().get("code")
    8.             key=response.json().get("key")
    9.             request_header=response.request.headers
    10.             print("{0}--->:{1}".format(key,request_header),end="\n\n")
    11.             if code != 200 and key!= "SUCCESS":
    12.                 response.failure("未成功请求响应码:%dkey值:%s"%(code,key))
    复制代码

    由于被测接口对用户凭证验证成功或失败响应码都是200,所以通过if函数对响应体中的code值和key值进行判断,从而断言请求是否成功,响应中的code值不为200与key值不为SUCCESS直接将请求打为失败请求。print函数打印出响应体中的key值与请求头帮助验证。

    2. 结果

      设置20个虚拟用户每秒启动5个(其实不管怎么设置),运行都会有将近20%的请求是失败请求


    将控制台中print函数中的打印信息中响应key值为"NOT_LOGIN"的请求头中的token取出使用postman验证,code值依然为401,说明断言没问题

    对比:

      与jmeter比较正则提取出来的token,每次请求用的都是同一个token,但不会出现失败请求。

    结论:

    初步验证认为locust会去模拟第一次拿到的token,但模拟的带token的请求通过后端验证率并不高,不知是locust内部对token处理机制的缺陷还是本人实现的错误。希望您能够知道下,谢谢!


    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2021-9-21 07:36 , Processed in 0.068052 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2021 Comsenz Inc.

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