软件测试进阶篇----移动端测试

一、移动端测试概述

移动端测试不是一个新的领域,所采用的测试的理论、原则和方法、技术和之前web的是一样的。

移动端的手工测试,和web端的点点点是一样的。

移动端的自动化测试,python+appium+unittest/pytest+ddt+BeautifulReport/allure+git/gitee+jenkins

1、移动端设备

当前大部分移动端测试是属于嵌入式测试范畴的,包括移动端的应用(app,小程序)测试以及移动端设备测试

  • 手机(手机终端测试)
  • 智能穿戴设备(手环、手表、眼镜、AR设备)
  • 车机交互、车载
  • pad、扫地机器人

2、移动端操作系统(os)

  • Android
  • ios
  • 鸿蒙os4
  • xiaomi澎湃os
  • 黑莓
  • windows phone
  • 塞班4、5/米狗

3、移动端应用(app)

这个是软件测试工程师的主要测试对象,以Android为例:

  • 原生app:以Android、iOS、鸿蒙提供的开发环境直接开发的app,数据处理能力比较强
  • 混合开发app:数据处理使用Android,页面展示用的H5技术(更好看)
  • web app:纯H5技术开发的app
  • 小程序:
    • 微信小程序:随用随装、不同卸载
    • 支付宝小程序
    • 今日头条小程序
    • 百度小程序

二、移动端测试的要点(重点)

1、安装和卸载测试

web端也是需要安装和卸载测试的:

  • 测试环境下,可以根据用户安装手册完成一次部署
  • 上线之前的预发布环境中,要完整的执行一次安装过程(预演),上线安装就安全了。
  • 内存不足的时候有没有提示
  • 是否安装在了指定的文件夹下、是否有多余的文件夹生成
  • 在安装过程中有电话打入、短信、消息、闹钟等事件的中断
  • 服务器端的安装:金丝雀发布/灰度发布的方式
  • 客户端app的安装:(重点)
    • Android:
      • 通过各种渠道获取apk文件,即可安装
    • iOS:
      • 安装包的后缀是ipa文件
      • app已经获取到苹果发的企业证书,是可以随便装的
      • **上线appstore,下载安装**
      • **在测试环境中,将iphone收集的udid编号,给开发,开发打包在app中,该iphone就可以安装了**
      • **testflight是苹果提供内测工具,开发组通过testflight给对应测试人员账号发邮件,获取验证码并下载安装**

web端的系统卸载:

  • 应用程序包(文件夹),直接删除即可
  • 对应的数据库也要手动卸载
  • redis软件支持,也需要删除

移动端的app卸载:

  • 直接卸载
  • 检查卸载是否完整、干净(不能有多余的文件夹、缓存数据)

2、UI测试点

在UI页面展示上的不合理的内容、测试点:

  • 要检查页面上是否有错别字
  • 要检查页面布局风格:横向上风格要一致,按钮、标签、图片大小和样式要相同
  • 页面颜色不能三种以上比较艳丽的颜色
  • 文字不能超出所在标签的位置:文字超出文本框的范围,overlap
  • 标签与标签之间叠加在一起了,cutoff
  • 不允许出现违法、敏感的文字和图片
  • 中文字符的支持
  • 一些英文单词不能过度翻译:logo

3、app功能性测试(重点)

  • app安装完成之后是否能正常启动
  • app启动时的广告页显示是否正常、倒计时、跳过功能是否正常
  • 注册功能
  • 登录功能
  • 注销功能
  • 前后端切换app,检查是否可用
    • 先正常使用app,切到后台,再从后台切回到前台
    • 先正常使用app,切到后台,锁屏,解开屏幕,再从后台切回到前台
    • 正常使用app,接电话,回来继续使用
    • 正常使用app,弹窗了,切回后台,再回来
  • 登录及免登录的测试
  • 数据更新
  • 软件更新
  • 相机、通讯录、录音机等功能的使用
  • push消息通知测试
  • 交叉事件测试
    • 打电话
    • 发短信
    • 发邮件
    • 闹钟

4、兼容性测试(重点)

做兼容性测试的目的是:app可以在不同的手机能正常使用(覆盖市场主流的50+手机以上)

1)需要兼容的要素

  • 和软件的兼容
  • 和硬件的兼容
    • 品牌(华为、小米、苹果等)
    • 屏幕大小不同:6.X
    • 网络制式
    • os系统兼容
      • iOS:14、15、16等最新三个版本
      • Android:13、14、15版本
      • 鸿蒙:1、2、3、4
      • 澎湃os:基于Android深度开发的

2)怎么做兼容性测试

兼容性测试一定要采用真实的设备进行测试。

  • 公司没钱买:借手机
  • 没钱不想借:租手机,在线的云测平台(20+自备和50+平台租赁)。
    • testin
    • 腾讯wetest
    • 优测
    • 蒲公英
  • 公司不差钱:买,买最新的(可以是二手的)

3)兼容性测试关注的三个主要问题

  • Exception:异常
  • ANR:应用程序未响应
  • Crash:崩溃、闪退

4)app专项测试数据(记住)

  • app耗电量测试
  • app流量测试
  • app内存占用
  • app的cpu占用
  • 游戏app测试关注帧率
  • 电池温度测试

三、Android系统概述

1、Android系统架构

  • 应用程序层:计算器、qq、微信、支付宝等,主要用的是Android、H5
  • 应用程序框架层:进行Android开发的支持的框架,java
  • 函数库层(c++、java)
  • Linux内核层
    • 进程调度(SCHED)
    • 内存管理(MM)
    • 虚拟文件系统(VFS)
    • 网络接口(NET)
    • 进行间通信(IPC)

2、Android app的四个组件

每一个Android的app都是由四部分组成的。

1)activity:活动

每个app的一屏内容就称之为活动,相当于web中的一个页面,负责页面展示效果

2)service:服务

在app第一次启动的时候启动起来,主要负责数据的处理

3)content-provide:内容提供者

Android系统中的一个数据中转站

4)broadcast receiver:广播接收器

消息推送到Android系统

四、移动端测试环境搭建

本章讲的是Android环境的搭建,实现对Android移动端app的手工测试环境和自动化测试环境。

  1. jdk环境和环境变量配置

    jdk:java开发工具包,是java语言开发的基础环境,也是java开发的程序运行的环境

    环境变量:jdk的bin目录;jdk下jre的bin目录配置到环境变量path里面

  2. adt工具

    adt:Android开发工具,包括Android模拟器和开发工具(adb的工具)

    解压压缩包即可使用。

  3. 安装夜神模拟器

    把夜神模拟器下的bin\adb.exe文件复制到adt-bundle-windows/sdk/platform-tooks下替换adb.exe

    验证环境:cmd输入adb—显示版本号1.0.36即成功

一、adb工具的使用

adb:android debug bridge,作用是通过电脑端控制Android设备端的一个工具。

通过adb,就可以在pc端方便地进行手机/模拟器的操作了

1、连接设备

设备可以是Android的模拟器、Android手机、Android的其他移动端设备,不能是iOS的,可以是鸿蒙的(兼容Android)

连接设备:adb connect 127.0.0.1:62001,提示—already connected to 127.0.0.1:62001

断开连接设备:adb disconnect 127.0.0.1:62001,提示—disconnected 127.0.0.1:62001

2、查看连接到adb的Android设备名称信息(必背)

adb devices,提示—List of devices attached
127.0.0.1:62001 device

127.0.0.1:62001:设备名,序列名

device:当前设备的状态,是正常连接状态

3、查看设备状态

adb get-state

设备的状态有4种,device,offline,unknown,unauthorizathion

  • device:设备正常连接
  • offline:连接出现异常,设备无响应
  • unknown:没有连接设备
  • unauthorizathion:未授权,连接手机的时候会出现

4、开启/关闭adb服务

adb start-server

adb kill-server

5、获取Android日志文件

  • adb logcat -v time *:E > d:\aa.log
  • -v time:在日志文件中添加日志记录的时间戳
  • *:E:过滤日志等级为Error等级以上
  • . > :重定向符号,是将cmd命令行的数据写入到外部文件

6、adb挂载到Android底层Linux内核上

adb shell

7、app的安装和卸载

安装的命令:从PC端通过adb的命令推送apk文件到Android设备并完成安装的过程

安装的命令:adb install PC端本地的apk文件的全路径

卸载的命令:adb uninstall 包名(在Android中包名就是指的进程、软件名)

8、文件推送(下载和上传)

将PC端本地文件上传到Android模拟器或者手机上、将模拟器、手机的文件下载到PC端。

上传命令:adb push 本地文件全路径 远程存放文件的目录

下载命令:adb pull 远程文件的全路径 本地存放目录(不要是根目录)

9、获取包名/activity名

1)adb shell —>cd /data/data

获取Android设备中安装的所有的api的包名

2)获取处于焦点状态的某个app的包名

需要先将app打开,并处于焦点状态

adb shell dumpsys window | findstr mCurrentFocus

3)获取Android设备安装的包名、第三方包名

adb shell pm list package

adb shell pm list package -3

10、启动app

adb shell am start -n 包名/活动名

二、monkey工具的使用

1、monkey简介

monkey测试:猴子测试、随机测试,在不清晰测试技术、不懂软件系统业务的情况的随意测试

monkey工具:其实是Android系统自带的一个小工具,也是可以通过adb命令启动,生成大量随机事件对Android设备的app页面进行操作,比如大量的点击事件、滑动事件、旋转事件、手势事件、按键等,最终想实现的是对app前端应用的稳定性测试(大量事件、长时间、不间断)、性能测试。

主要监控的指标:

  • Exception:异常
  • ANR:应用程序未响应
  • Crash:崩溃、闪退

2、monkey工具随机测试(掌握)

参考文章:https://zhuanlan.zhihu.com/p/133858779

1)查看monkey帮助文档

基本的格式:adb shell monkey 参数列表 随机事件数量

2)-p指定可以操作的包

  • 不指定-p:所有的包都可以被随机操作
  • 指定一个-p:只能操作指定的这个包名的应用
  • 指定多个-p:给指定的多个应用发送随机事件

3)-v日志详情

-v:显示注入事件比例及列表等

-v -v:显示更多的信息

4)-s:种子数

monkey是随机的,如果出现了bug,如何复现怎么搞?

如果指定固定的-s值,随机事件的类型和顺序就是固定了

5)–throttle 数字,单位ms

主要是在事件之间增加了延时作用。

下面的是事件比例调整的参数:

6)触摸事件调整参数:- -pct-touch 比例值(0~100)

触摸事件不单单是按键,它泛指发生在某一位置的一个down-up事件。

7)手势事件:- -pct-motion 比例值

手势事件是在屏幕上的滑动

8)- -pct-appswitch:更改用于切换app的不同页面的事件比例

9)- -pct-rotation 后面接屏幕旋转事件的比例值

10)- -ignore-timeouts

在monkey运行过程中如果出现超时异常,需要忽略异常,继续发送事件直到所有的事件发完

11)- -ignore-crashes

在monkey运行过程中如果出现闪退异常,需要忽略异常,继续发送事件直到所有的事件发完

三、monkey进行app的自动化测试(自定义脚本测试)了解

移动端自动化测试的常见测试工具:

  • Appium工具:非常主流的免费的自动化工具,支持Android和iOS端的自动化
  • uiautomator工具:录制脚本
  • airtest:网易的一个自动化框架,支持python语言,支持录制和编程

1、简介

  • appium包括两部分:
    • appium客户端:appium是封装了selenium(webdriver api)方法的一个客户端软件(专有的方法),支持多种语言的,python、java、js等
    • appium服务器端:处理客户端请求的,转交请求给Android设备的app去执行
      • windows版本
      • Linux版本
      • macOS版本

2、appium进行自动化测试的环境搭建

  1. node.js的安装

    是appium server的支持语言环境。安装指定版本即可

  2. appium的服务器端

    1. 配置jdk和sdk的家目录

    2. 设置host端口(127.0.0.1和4723)

    3. 启动服务

      最小化放在任务栏即可,不能关闭

  3. appium客户端的安装

    cmd—>pip install appium-python-client

  4. 夜神模拟器

  5. jdk环境安装和环境配置

  6. pycharm ide集成开发环境

3、自动化测试脚本开发

selenium+appium+jdk的版本不同可能导致执行结果不同。

1、老版本组合

selenium(4.9版本及以前)、appium-python-client(2.6.0及以前)、jdk8,appium-server管理员权限运行。

# android模拟器上的计算器app的自动化脚本:1+1=2
# 导包
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time
import appium# 实现逻辑代码
# 先定义测试对象的参数,定义在一个字典中
desired_capabilities = {# 定义被测对象所处的平台名是什么:Android、iOS、FirefoxOS"platformName":"Android",# 定义android系统的版本号"platformVersion":"5.1.1",# 定义你的被测对象是手机设备还是模拟器,也可以填adb devices"deviceName":"Android Emulator",# 不允许app重置数据"noReset":True,# 要操作的app的包名"appPackage":"com.lilysgame.calculatorjw",# 要操作的acitvity名"appActivity":"com.lilysgame.calculator.MainActivity"
}# 创建appiumdriver对象
# 将定义好des的参数发送给appium server,帮我们找到当前环境下是否有可用的设备和app并能连上设备
# 到目前位置,是可以实现模拟器上的app正常启动
driver = webdriver.Remote(r"http://127.0.0.1:4723/wd/hub",desired_capabilities= desired_capabilities)time.sleep(10)# 对app的操作:1+1=2
# 识别并点击按钮1
# 使用id属性定位按钮1,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnOne').click()
time.sleep(2)# 使用id属性定位按钮+,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnAdd').click()
time.sleep(2)# 使用id属性定位按钮1,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnOne').click()
time.sleep(2)# 使用id属性定位按钮=,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnEqual').click()
time.sleep(2)# 断言
yq = "2"
sj = driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/et_show').get_attribute("text")
assert yq==sj# 关闭appium driver对象
driver.quit()
2、新版本组合

selenium(4.9以后)、appium-python-client(3.1.0及以后)、jdk8,appium-server管理员权限运行。

# android模拟器上的计算器app的自动化脚本:1+1=2
# 导包
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time
from appium.options.common import AppiumOptions
import appiumoption = AppiumOptions()
option.set_capability("platformName","Android")
option.set_capability("platformVersion","5.1.1")
option.set_capability("deviceName","Android Emulator")
option.set_capability("noReset",True)
option.set_capability("appPackage","com.lilysgame.calculatorjw")
option.set_capability("appActivity","com.lilysgame.calculator.MainActivity")# 创建appiumdriver对象
# 将定义好des的参数发送给appium server,帮我们找到当前环境下是否有可用的设备和app并能连上设备
# 到目前位置,是可以实现模拟器上的app正常启动
driver = webdriver.Remote(r"http://127.0.0.1:4723/wd/hub",options=option)# 对app的操作:1+1=2
# 识别并点击按钮1
# 使用id属性定位按钮1,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnOne').click()
time.sleep(2)# 使用id属性定位按钮+,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnAdd').click()
time.sleep(2)# 使用id属性定位按钮1,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnOne').click()
time.sleep(2)# 使用id属性定位按钮=,并执行点击操作
driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/btnEqual').click()
time.sleep(2)# 断言
yq = "2"
sj = driver.find_element(AppiumBy.ID,'com.lilysgame.calculatorjw:id/et_show').get_attribute("text")
assert yq==sj# 关闭appium driver对象
driver.quit()
3、结合unittest框架实现
# selenium4.9以后版本AppiumOptions()\ChromeOpthons()
# appium-python-client用最新的3.1版本以上了
# jdk还是采用jdk8版本
# unittest框架from appium import webdriver
# selenium4.9以上需要
from appium.options.common import AppiumOptions
from appium.webdriver.common.appiumby import AppiumBy
import time
import unittestclass calctest02(unittest.TestCase):def setUp(self):# 创建option对象self.option = AppiumOptions()self.option.set_capability("platformName","Android")self.option.set_capability("platformVersion","5.1.1")self.option.set_capability("deviceName","Android Emulator")self.option.set_capability("noReset",True)self.option.set_capability("appPackage","com.lilysgame.calculatorjw")self.option.set_capability("appActivity","com.lilysgame.calculator.MainActivity")# 创建Appium服务器的对象self.driver = webdriver.Remote(r"http://127.0.0.1:4723/wd/hub",options=self.option)# 隐式等待self.driver.implicitly_wait(10)def test_01(self):'''实现计算器应用的加法运算'''self.driver.find_element(AppiumBy.ID,"com.lilysgame.calculatorjw:id/btnOne").click()time.sleep(2)self.driver.find_element(AppiumBy.ID,"com.lilysgame.calculatorjw:id/btnAdd").click()time.sleep(2)self.driver.find_element(AppiumBy.ID,"com.lilysgame.calculatorjw:id/btnTwo").click()time.sleep(2)self.driver.find_element(AppiumBy.ID,"com.lilysgame.calculatorjw:id/btnEqual").click()time.sleep(2)# 断言yq = "3"sj = self.driver.find_element(AppiumBy.ID,"com.lilysgame.calculatorjw:id/et_show").get_attribute("text")self.assertEqual(yq,sj)def tearDown(self):self.driver.quit()if __name__ == '__main__':unittest.main()
4、结合pytest框架实现
# selenium4.9以后版本AppiumOptions()\ChromeOpthons()
# appium-python-client用最新的3.1版本以上了
# jdk还是采用jdk8版本
# pytest框架实现代码from appium import webdriver
# selenium4.9以上需要
from appium.options.common import AppiumOptions
from appium.webdriver.common.appiumby import AppiumBy
import time
import pytest
import osclass Test_qq():def setup(self):# 创建option对象self.option = AppiumOptions()self.option.set_capability("platformName","Android")self.option.set_capability("platformVersion","5.1.1")self.option.set_capability("deviceName","Android Emulator")self.option.set_capability("noReset",True)self.option.set_capability("appPackage","com.tencent.mobileqq")self.option.set_capability("appActivity","com.tencent.mobileqq.activity.LoginActivity")# 创建Appium服务器的对象self.driver = webdriver.Remote(r"http://127.0.0.1:4723/wd/hub",options=self.option)# 隐式等待self.driver.implicitly_wait(10)def test_01(self):'''实现计算器应用的加法运算'''# 使用id定位,定位登录按钮# resource-id属性对应id定位方法self.driver.find_element(AppiumBy.ID,"com.tencent.mobileqq:id/btn_login").click()time.sleep(2)# content-desc属性对应的是ACCESSIBILITY_ID定位方法self.driver.find_element(AppiumBy.ACCESSIBILITY_ID,"请输入QQ号码或手机或邮箱").send_keys("2659160000")time.sleep(2)# xpath定位self.driver.find_element(AppiumBy.XPATH,'//android.widget.EditText[@content-desc="密码 安全"]').send_keys("1234567890")# id定位登录按钮self.driver.find_element(AppiumBy.ID,"com.tencent.mobileqq:id/login").click()time.sleep(10)# 断言yq = "验证码"sj = self.driver.find_element(AppiumBy.ID,'com.tencent.mobileqq:id/ivTitleName').get_attribute("text")assert  yq==sjdef teardown(self):self.driver.quit()if __name__ == '__main__':# pytest.main(["--alluredir","./testresult"])# os.system("allure generate ./testresult -o ./testreport --clean")pytest.main(["-v"])

五、ADB连接手机真机

每个品牌手机的设置不尽相同,

1)开启手机的开发者模式(设置-系统-全部参数-miui14,连续点击3次以上,显示已经开启了开发者模式)

2)进入开发者模式(设置中搜索:开发者)

3)开启USB调试,会弹出一个授权框,一定要确认授权。

4)PC端,就可以使用adb devices查看手机设备了

5)其他的adb命令就可以使用了(不是所有的,因为有手机的权限问题)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BGF-YOLO | 增强版YOLOV8 | 用于脑瘤检测的多尺度注意力特征融合

基于You Only Look Once(YOLO)的目标检测器在自动脑瘤检测中展现出卓越的准确性。在本文中,我们开发了一种新的BGF-YOLO架构,通过将双层路由注意力(BRA)、广义特征金字塔网络(GFPN)和第四检测头整合到YOLOv8中来实现。BGF-YOLO包含了一个注意力机制,用于更加关注重要的…

下载树莓派对应的64位Ubuntu系统步骤

说点废话:因为ros2需要安装在64位Ubuntu上面,所以安装64位最合适; 第一步打开https://cn.ubuntu.com/ 网站;选择下载--->iot----> 选择这个镜像文件下载。我觉得镜像文件是img格式的,跟iso文件区别是&#xff…

【Linux】 JumpServer 堡垒机远程访问

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpS…

基于北方苍鹰算法的无人机航迹规划-附代码

基于北方苍鹰算法的无人机航迹规划 文章目录 基于北方苍鹰算法的无人机航迹规划1.北方苍鹰搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用北方苍鹰算法来优化无人机航迹规划。 …

VERT900 Antenna

782773-01 VERT900 Vertical Antenna (824-960 MHz, 1710-1990 MHz) Dualband Includes one VERT900 824 to 960 MHz, 1710 to 1990 MHz Quad-band Cellular/PCS and ISM Band omni-directional vertical antenna, at 3dBi Gain.

LazyVim: 将 Neovim 升级为完整 IDE | 开源日报 No.67

curl/curl Stars: 31.5k License: NOASSERTION Curl 是一个命令行工具,用于通过 URL 语法传输数据。 核心优势和关键特点包括: 可在命令行中方便地进行数据传输支持多种协议 (HTTP、FTP 等)提供丰富的选项和参数来满足不同需求 kubernetes/ingress-n…

CSRF 和 XSS 是什么

在Web开发中,安全性是至关重要的。然而,随着网络攻击技术的不断演进,跨站请求伪造(CSRF)和跨站脚本攻击(XSS)成为了最常见和具有破坏力的网络安全威胁之一。本文将介绍CSRF和XSS的概念、原理以及…

Wampserver使用问题记录

前言 因为在使用PhpStom调用运行PHP文件时,需要到PHP解释器,所以就下载了Wampserver。Wampserver简单的来说运行后会启动PHP,MySQL,Apache服务,文件夹下也带有PHP的解释器。本来以为将PhpStom的PHP文件的解释器配置好后…

Python unittest单元测试框架 TestSuite测试套件

TestSuite 测试套件简介 对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,而且TestSuite也可以嵌套Tes…

【hcie-cloud】【1】华为云Stack解决方案介绍、华为文档获取方式 【上】

文章目录 华为文档获取方式前言云计算发展背景国家政策、社会发展驱动数字经济开启新时代深化数字化转型提升效率,国家数字主权云进入落地阶段从Cloud-Based到Cloud-Native,两种模式长期并存适合政企智能升级的云华为云Stack,政企智能升级首选…

如何利用AppScan扫描H5页面,进行安全测试?

前期项目组接触的都是Web安全测试,今天做安全测试的时候,有一个项目刚好有H5页面,用以前那种AppScan内置浏览器的探索方式是不行的,研究了下,可以使用外部设备进行探索。 AppScan有两种手动探索方式,一种是…

nnUNet 更改学习率和衰减优化器的方法

此为记录贴,逻辑混乱 仅供参考: 勿喷 nnUNet默认的学习率衰减方法为线性衰减,优化器为SGD,在.\nnUNet\nnunetv2\training\nnUNetTrainer\nnUNetTrainer.py文件中nnUNetTrainer基类中定义 如下: def configure_optimize…

ESP-IDF-V5.1.1使用websocket

IDF Component Registry (espressif.com) 在windows系统中,在项目目录下使用命令 idf.py add-dependency "espressif/esp_websocket_client^1.1.0"

C++ 动态规划。。。

#include <iostream> #include <algorithm> using namespace std; // 定义一个常量&#xff0c;表示无穷大 const int INF 1e9; int dp[1000 2];// 定义一个函数&#xff0c;计算数组中某个区间的和 int sum(int arr[], int start, int end) {int s 0;for (int …

react_14

动态路由 路由分成两部分&#xff1a; 静态路由&#xff0c;固定的部分&#xff0c;如主页、404、login 这几个页面 动态路由&#xff0c;变化的部分&#xff0c;经常是主页内的嵌套路由&#xff0c;比如 Student、Teacher 这些 动态路由应该是根据用户登录后&#xff0c;根…

LInux-0.11

文章目录 前言学习资料正文 前言 B站视频链接 linux 0.11 内核代码 学习资料 正文 一个山区512字节

二进制搭建 Kubernetes v1.20

这里写目录标题 二进制搭建 Kubernetes v1.20一.环境准备1.网络分配2.操作系统初始化配置 二.部署 etcd 集群1.etcd相关知识2.准备签发证书环境 三.部署 docker引擎四.部署 Master 组件五.部署 Worker Node 组件六.部署 CNI 网络组件1.部署 flannel2.部署 Calico3.部署 CoreDNS…

5G-DFS最新动态-产品不在需要走FCC官方测试

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 最近&#xff0c;FCC公布了最新版本的PAG&#xff08;Product Acceptance Group&#xff09;清单&#xff0c;即388624 D02 Pre-Approval Guidance List v18r04。这个清单的主要改变是将带有雷达侦测功能的…

第三方美颜SDK是什么?在直播平台中有哪些应用?

第三方美颜SDK已经成为许多应用和平台的核心功能之一&#xff0c;它们为用户提供了一种改善自己在直播和视频分享中外表的方式。本文将探讨第三方美颜SDK是什么&#xff0c;以及它们在直播平台中的各种应用。 一、什么是第三方美颜SDK&#xff1f; 第三方美颜SDK是一组软件工…

AWS组件使用

kafka或kinesis 做数据收集 S3redshift 做数仓 EMR做计算 RDS做数据市场 AWS Glue / AWS Data Pipeline 做数据集成 这些组件配合起来&#xff0c;几乎可以做各种方式的数据分析 kinesis还是比较推荐&#xff0c;延迟时间可以配置的算是实时的&#xff0c;而且功能会多一点&am…