Performance step 1 - setup target app

JavaEE系统性能测试
本文介绍了一种通过构建大数据量数据库来测试JavaEE系统性能的方法。首先安装MySQL Server,然后创建名为sampledb的数据库及news表,并填充100万条新闻数据。
我准备从performance的角度出发,发掘一个JavaEE系统中的设计问题。第一步就要构建一个目标系统,用来压力测试。

[b]第一步准备考验我的DB功底[/b]
平台准备用mysql+jdbc构建一个大数据量DB。测试数据库以及sql的与性能相关的设计。
1. 首先安装mysql server
2. 创建sample db
3. 创建一张新闻表 news


create table news (id bigint not null auto_increment unique primary key, title varchar(512), content longtext, author varchar(128), release_time timestamp);


4. 到163上爬100万条新闻插到news表里。
这是我的一个用例文件,之前是在一个设备运行,大概的执行过程是循环读取指定目录的install.xlsx文件应用名称和包名,然后安装,打开,随机操作,打开,最后将结果汇总记录到一个xlsx表中,现在公共参数文件已实现从yaml文件读取N个设备SN和对应端口,然后建立N个appium服务链接,现在我要求根据实现的驱动个数,均分install.xlsx文件读取到的应用个数,例如A设备循环执行install.xlsx表中1-10行对应的应用安装,打开,随机操作,打开等一系列操作,B设备循环执行install.xlsx表中1-10行对应的应用安装,打开,随机操作,打开等一系列操作,其中install.xlsx文件第一行是列名称,从第二行开始才是有效内容,最后将N个设备执行的结果汇总记录到一个xlsx表中,请帮我修改用例文件内容,用例文件内容如下: force_tags = ['APP-Level_1'] class APP_ThirdApp_Top3000_0003: name = 'TOP3000兼容性挂测-APP_ThirdApp_Top3000_0003' def setup(self): global driver driver = None def teststeps(self): device_name = "ADR-AN00" platform_version = ADBHelper().get_android_version() # 初始化计数变量 crash_count = 0 anr_count = 0 flower_screen_count = 0 black_screen_count = 0 white_screen_count = 0 try: utils = AppiumAutomationUtils(device_name, platform_version, is_large_install=True) driver = utils.driver except Exception as e: print(f"获取驱动时出错: {str(e)}") return # 读取Excel文件 excel_path = "resource/ThirdApp/xlsx/install.xlsx" try: workbook = openpyxl.load_workbook(excel_path) sheet = workbook.active except Exception as e: print(f"读取 Excel 文件时出错: {str(e)}") return STEP(1, 'TOP3000兼容性挂测体系构建') specified_row = 6 for row in sheet.iter_rows(min_row=6, max_row=specified_row, values_only=True): if len(row) >= 3: # 每一行数据顺序为:序号, 应用名称, 包名 serial_number = row[0] app_name = row[1] package_name = row[2] print(f"序号: {serial_number}, 应用名称: {app_name}, 包名: {package_name}") apk_path = f"resource/ThirdApp/apk/{package_name}.apk" # 步骤1.安装应用 try: for i in range(2): driver.press_keycode(187) try: driver.find_element(By.ID, 'com.huawei.android.launcher:id/clear_all_recents_image_button').click() except: pass driver.press_keycode(3) except: pass install_result = False try: result = utils.install_app(apk_path) if result == True: install_result = True else: install_result = False utils.generate_report_even_failed(app_name, package_name, crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count, "", install_result, False, False) continue except: pass # 步骤2.启动应用 start_result = False try: start_success, crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count = utils.start_app( package_name, app_name) if start_success: if crash_count <= 0: start_result = True print(f"应用启动成功") else: start_result = True print(f"应用启动成功,但是发生闪退") app_version = utils.get_app_version(package_name) result = utils.uninstall_app(package_name) if result == True: uninstall_result = True else: uninstall_result = False utils.generate_report_even_failed( app_name, package_name, crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count, app_version, install_result, start_result, uninstall_result ) continue else: print(f"启动应用{app_name}失败") start_result = False app_version = utils.get_app_version(package_name) result = utils.uninstall_app(package_name) if result == True: uninstall_result = True else: uninstall_result = False utils.generate_report_even_failed( app_name, package_name, crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count, app_version, install_result, start_result, uninstall_result ) continue except : continue # 步骤3.去除隐私权限和协议 time.sleep(10) texts = ["同意", '同意并继续', '同意并使用', '我同意','一键开启','允许', '继续', '接受', '跳过', '确认', '关闭', '知道了', '我同意', '继续使用', '同意隐私政策', 'Agree', '下次提醒', '确定', 'Yes', 'OK', '我已阅读并同意', '同意并进入'] try: time.sleep(10) for i in range(2): utils.click_element_by_texts(texts) time.sleep(5) print(f"点击元素成功") except Exception as e: print(f"点击元素时出错: {str(e)}") # 步骤4.随机点击应用5分钟 print('开始进行随机操作') try: crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count = \ utils.random_operation(30, package_name,app_name) print('随机操作已完成') except Exception as e: print(f"随机点击时出错: {str(e)}!!!") pass # 步骤5.应用退出启动循环三次 skip_current_operation = False try: (crash_count_restart, anr_count_restart, flower_screen_count_restart, black_screen_count_restart, white_screen_count_restart) = utils.restart_app(3, package_name,app_name) crash_count += crash_count_restart anr_count += anr_count_restart flower_screen_count += flower_screen_count_restart black_screen_count += black_screen_count_restart white_screen_count += white_screen_count_restart except Exception as e: print(f"应用退出启动循环出错: {str(e)}!!!") pass # 步骤6.卸载应用 app_version = "" uninstall_result = "" try: app_version = utils.get_app_version(package_name) utils.get_current_activity() result = utils.uninstall_app(package_name) if result == True: uninstall_result = True else: uninstall_result = False except Exception as e: print(f"卸载应用时出错: {str(e)}!!!") pass # 步骤7.生成统计报告 try: utils.generate_report(app_name, package_name, crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count, app_version, install_result, start_result, uninstall_result) except Exception as e: print(f"生成报告时出错: {str(e)}") else: print(f"Row {list(row)} is incomplete, skipping.")
10-31
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值