图形用户界面(简称 GUI)是你通过屏幕上的图标和菜单与计算机交互的方式,而不是在命令行提示符中输入命令。
GUI 框架为开发人员提供了各种窗口和其他图形元素,他们可以与之交互以提供用户友好的体验。随着 Python 的日益普及、平滑的学习曲线和在现实世界中的广泛采用,Python开发者数量也在不断攀升。在掌握 Python 编程基础后不久,初学者面临的下一个挑战是构建用户界面。
幸运的是,有很多 Python 框架可以帮助开发人员构建令人惊叹且高度直观的用户界面。
本文将介绍Python的5大GUI框架,如果你想用Python进行GUI编程,正在寻找合适自己的Python框架,那么本文会给你提供帮助。
PyQt 包是围绕 Qt 框架 构建的,这是一个跨平台框架,用于为各种平台创建大量应用程序。PyQt6 包包含一组详细的 Python 绑定,基于 Qt 应用程序框架的最新版本 v6。
通过利用 PyQt6 的强大功能,开发人员可以为 Windows、Mac、Linux、iOS、Android 等平台构建应用程序。在创建 GUI 时,PyQt6 武器库提供了令人印象深刻的QtGui和QtDesigner 模块,它们提供了许多视觉元素,开发人员可以通过简单的拖放来实现。
当然,也可以选择通过代码创建这些元素,让你轻松创建小型和大型应用程序。Python 的模块化以扩展的形式渗透到 PyQt6,为你提供更多功能,而不仅仅是 GUI 构建。
它有大量可供选择的小部件。
如果你要创建商业应用程序,则必须支付商业许可证费用。
由于它附带的所有组件,它有一个陡峭的学习曲线。
Tkinter(python自带) 是一个跨平台的小部件集,用于创建用 Python 编写的图形用户界面。Tkinter 模块提供了大量功能,包括几何管理器、自定义小部件、主题支持和Unicode 文本处理。Tkinter 旨在易于使用,同时仍提供与其他 GUI 工具包相当的功能。
对于没有 GUI 构建经验的开发人员,Tkinter 可能是开始使用 Python 构建自己的应用程序的好方法。它提供了许多开箱即用的功能,非常适合原型设计或小型项目,并且不需要你投入大量时间。但是,这是以自定义选项有限为代价的。
如果你的项目需要比 Tkinter 提供的更高级的功能,那么 PyQt6 等更高级的框架会更有帮助。
它随每个 Python安装一起提供,因此你无需安装任何额外插件。
它带有画布和文本小部件,可让你使用 GUI 执行强大的操作。
它具有简单的语法并且易于使用。
GUI 应用程序可能不像使用其他 GUI 框架构建的应用程序那样“漂亮”
Kivy 是一个跨平台的 GUI 库,用于在 Python 中使用多点触控界面开发多媒体应用程序。Kivy 允许小部件跨多个平台工作,而无需编写任何本机代码。
Kivy 的图形引擎基于 OpenGL ES 2 构建,使用现代且快速的图形管道,这使得该框架适用于 iOS 和 Android 应用程序的设计者。主要优点是用户界面可以用纯 Python 编写。这意味着不需要 C++ 知识,与其他框架相比,开销很小。
Kivy 最初是为在 Raspberry Pi 和其他低功耗和嵌入式设备上工作而开发的,现在,它的更多功能可以在更强大的台式计算机上使用。它的重点是图形渲染、动画、包装、用户交互等。Kivy 也是一个框架,它提供了大量用于显示数据和与用户交流的小部件。
要安装 Kivy,请在终端中运行以下命令:
它支持桌面和移动平台。
你只需编写一次代码,它就会为所有支持的平台编译应用程序。
这些小部件具有内置的多点触控支持。
Kivy 有自己的小部件,用它创建的应用程序看起来不像原生应用程序。
它不像此列表中的其他框架那样受欢迎,并且社区较小。
Kivy 包很大,因为 Python 解释器是内置的。
这个库的主要目标是为 Python 开发人员提供用于他们的 GUI 应用程序的高质量小部件。这包括文本框、复选框、按钮文本、列表视图和其他标准组件等原生控件,也包括框架或对话框等更复杂的组件。此外,还有许多其他可用功能,包括拖放支持、文件浏览、打印、剪贴板操作、国际化等。
该库还包括大量用于轻松构建 GUI 的入口小部件。此外,它还支持许多其他功能,例如事件处理、线程、国际化和其他许多其他框架中没有的高级功能。这些特性使 WxPython 成为当今最流行的 GUI 工具包之一。
要安装 wxPython,请在终端中运行以下命令:
它有大量可供选择的小部件。
用它构建的应用程序具有原生的外观和感觉。
由于 wxPython开发非常活跃,因此 API 经常会出现错误和更改。
PySide是Qt 官方的库,允许你使用 PyQt 或 PySide 组件编写应用程序。与 wxWidgets 等其他替代工具相比,该工具包的主要优势在于它能够嵌入到任何 C++项目中,而无需额外的依赖项。它还提供了许多有用的小部件来创建用户界面。
要安装 Pyside,请在终端中运行以下命令:
它具有 PyQt 的许多功能,无需商业许可。
它很受大型科技公司的欢迎和使用。
学习资料少(看PyQt的资料其实一样的)
另外你要知道的是,PyQt是GPLv3协议,PyQT 需要许可证才能在商业项目中使用它。而PySide是LGPL协议,可以自由使用。
PyQt和PySide都包装了同一个库 Qt6,因此它们有 99.9% 的API 是相同的,绝大部分时候,它们的代码是可以互相复用的。
如果刚开始学习,建议选用PyQt,资源丰富,文档健全,学习起来比较省心。后面如果要开发商业程序,转到PySide成本也很低。
最后,具体选择哪种 GUI 框架取决于你的需求和偏好。Tkinter 是最容易学习和使用的,具有适中的学习曲线和广泛的功能。wxPython 更复杂但也更强大。PyQt 和 Pyside 则介于两者之间。
注:以上内容整理自网络
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍: 这是国内首先使用tkinter设计GUI的中文Python书籍之一。 本书主要讲解如何在窗口内使用Python的内部模块tkinter设计图形用户接口(GUI)程序,使 用户可以利用图形接口与计算机沟通。tkinter模块是一个跨平台的窗口应用程序,使用它设计的 程序未来可以在Windows、Mac、Linux系统上执行。 同时也将应用扩充到设计文字编辑程序、计算器、动画与相关的游戏设计中。相信读者学完本书 可以轻松将GUI知识应用到未来职场,成为一位称职的软件工程师,并成为Python领域的高手。 |
·项目启动后,我们拿到需求规格说明书,产品人员对我们进行需求的澄清, 然后对需求规格书进行细化和分解,得到我们测试需求分析思维导图; ·测试组长根据测试需求分析结果和项目计划估算项目的工作量和人力,来编写测试计划,我们参与评审; ·根据测试需求分析要点,按照测试组长分配的模块进行测试用例编写,编写完成后进行组内测试用例的评审; ·开发完成编码,我们会拿到一个安装包,然后就搭建测试环境,搭建完成后首先进行冒烟测试, 冒烟测试通过后进行正式测试用例的执行,我们执行一般分三轮,第一轮执行测试用例,后两轮主要进行回归测试; ·等测试执行通过后,开发修改完bug,组长编写测试报告,项目准备上线 ·上线我们参与做上线后的功能验证。 每个公司,每个项目组 测试结束条件不一样,说一下我们公司的: 所有测试用例全部执行,版本稳定,缺陷遗留率达到预定质量目标 新建→确认(驳回)→解决(驳回)→验证→关闭(激活) 一个Bug(缺陷)的描述包含哪几部分?你觉得提交bug需要包含哪些因素才算完整?(代码错误,设计优化,设计缺陷,性能问题,测试脚本) 每个公司定义的bug 级别标准都不一样,我们公司把bug 分为 提示,一般,严重,致命四类 每个公司定义的标准不一样,我们公司一般分为 高 中 低 每个公司用的缺陷管理工具不尽相同,一般测试用例执行结果有: 测试用例的设计一般采用哪些方法?或者 换一个提问方式,黑盒测试技术设计测试方法有哪些?一般常用的测试用例设计方法有等价类,边界值分析方法,因果图法,场景法,错误推测法 最容易发现错误的是—— 边界值 测试计划你觉得有哪几部分比较重要?测试报告哪几部分比较重要?你写过测试报告吗?如何写? 系统测试的测试策略有哪些?/系统测试范围?你门公司的测试类型有哪些?16种测试策略:,性能测试,,容量测试,安全性测试,GUI测试,,安装测试,配置测试,异常测试,备份测试,,,在线帮助测试,网络测试,稳定性测试在:正常情况下测试; 功能测试,界面测试,安全测试,本地化/国际化测试,数据库测试,可靠性测试,集成测试,兼容性测试,自动化测试,性能测试,回归测试 你们公司兼容性测试怎么做的?答:兼容性测试(Compatibility Test Suite )简称CTS .是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操纵系统平台上、不同的网络等环境中是否能够很友好的运行的测试。 Web端 浏览器兼容性测试需要测试场景有: 搜狗和360 浏览器 不用再次进行测试因为用的是 IE 和 chrome 双内核 移动端 兼容性测试需要测试的场景有: 备注:主流分辨率: 普通机型 高端机型 冒烟测试,是对软件基本的功能进行测试 目的是确认软件基本的功能正常,保证软件系统能跑的起来可以进行后续的正式测试工作 回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。 (引入自动化回归测试将大幅降低、维护升级等阶段的成本)。 作为测试的话,你的优势在哪里?一名测试人员所具备的素质?其中有哪些是您认为最重要的我觉得最为测试人员,承担的是找出软件存在的问题,确保软件产品在发布之前达到一定的质量目标的职责,因此,他首先必须有很强的责任感,对软件质量负责,对客户的质量期望负责。拥有交强责任感的测试人员,才不会出现大面积的漏测,才能坚持重复地进行回归测试,持续全面的测试。 其他的素质也很重要,例如较强的沟通能力,刨根问底,不轻易放弃的精神等。 你们公司项目的工作量,人力 怎么估算的。我们公司 一般是按照 测试点对比 项目计划去规划的 测试点 分三个难易程度 难得测试点,根据经验我们预估是 4小时左右,中等程度测试点 为2小时,低的预估1小时。 难易程度 :业务流程复杂,测试场景难构造的 还有就是云测试你了解多少1、SIT、UAT测试都有做过吗?怎么做的? 2、回归测试怎么回归的?涉及到用自动化回归的,也会问到自动化回归的一些问题,怎么回归?策略、下发周期等 6、假如你是测试经理,你要怎么展开测试的工作?在这个过程中有哪些需要关注的点? 7、云测平台有了解吗?云测平台和用真机测试各自的优缺点? 10、那些因素会影响产品的质量? 你们公司Linux用的哪个版本?Linux常用命令 (先说高大上命令)pwd 显示当前目录的绝对路径 cd ~ 切换到家目录 ls -a 显示当前目录下的所有文件和目录 修改配置文件,或者 分析日志时候常用的命令 Linux下如何搭建测试环境? 细每个系统(项目)由于开发语言不同,服务器类型不同,服务器操作系统不同,使用数据库不同,搭建测试环境的方法不尽相同; 我在测试工作中搭建过 LAMP 模型测试环境; 根据开发人员给的《安装指导文档》启动测试环境的搭建; 搭建的顺序是 :先搭建平台包(apache,mysql,php),在搭建 业务包 首先 使用FTP 工具(xftp) 把从开发那边获取的平台包,业务包上传的linux 下指定目录里面 解压平台包,使用 rpm -ivh 命令依次安装 apache,mysql,php 安装的顺序,严格按照安装指导文档的要求来搭建 由于APACHE默认不支持PHP,需要修改配置文件才能支持,需要在配置文件 httpd.conf 下设置依赖关系 平台包是否搭建成功,我们可以重启对应的服务器来判断,比如 我想知道我的mysql 装的是否正确,那么我就启动一下mysql 只要不报错就证明安装成功(sevice mysqld start); 平台包搭建完毕后,启动搭建 业务包 赋予 业务包 755权限 LAMP 环境的搭建基本这样子 Linux 下搭建测试环境有没有遇到什么问题,如何解决的?在安装指导里面,解压安装包之后,给安装脚本赋予权限不足,导致安装脚本执行报错; 安装指导参数说明,上下位置调换了,导致参数错误。 测试环境下,防火墙没有关闭,导致环境搭建完毕后,去访问ecshop ,访问失败; 开发人员通宵归档,上传到SVN 上的对应版本 安装指导文档版本不匹配,导致我在搭建测试环境时候,无法进行操作。 Linux 如何截取日志?2. 去前台业务进行操作,后台生成日志 根据关键字定位, 查看上下文 如果系统运行运行着 突然崩溃了,此时你们处理?这种情况造成突然间系统崩溃的原因很多,我们还是从 查看后台日志,分析后台日志,来开启定位问题。 Linux下如何备份环境?使用tar 命令在家目录下把这个目录备份 Linux 是服务器上用操作系统,那么你们公司服务器的规格是啥?linux操作系统,哪个目录最耗内存,动态查看日志命令 查:写出查询的骨架 加分
oracle字符,数字,日期 转化成时间的格式你用过那些哪些oracle 函数 如:已左表为基准表,右表显示与左表有交集的数据 内连接,也被称为自然连接,等值链接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了表中有交集的数据 索引是创建在表上的表,是对数据库表中一列或者多列的值进行排序的一种结构。索引可以提高查询的速度; 优点:查找速度快 缺点:存储索引占用磁盘空间 存储过程是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程来执行已经定义好的SQL语句。存储过程可以避免开发人员重复的编写相同的SQL语句。 银行经常需要计算用户的利息了不同类别的用户的利率是不一样的聊着就可以将计算利率的SQL代码写成一个存储过程。 视图是是从一个或者多个表中导出来的表,是一种虚拟存在的表。 成绩表tb(字段有:姓名、课程、成绩) 请用你所知道的语言编写冒泡算法?Python你用到了哪些模块?这些模块的主要解决了那些问题?Python的标准的数据类型有哪些?Python常用的断言方式有哪些?断言我们一般在Unittest单元测试框架中使用,常用的有assertIn(模糊匹配)和assertEqual(完全匹配) 在python中主要有三大类: assert类:断言通过才执行下面的代码,失败则停止; waitfor类:等待断言的元素出现,可以设置等待时间; verify类:断言失败时会抛出错误异常,但不会影响代码的执行。 说一下你们公司自动化测试流程在项目成型基本稳定,不会出现大规模的需求变动之后,就可以考虑自动化的启动; 首先要考虑的就是自动化工具的选择,像常用的自动化工具就有QTP、selenium IDE、RobotFramework等,但是这样的工具使用起来不够灵活,一般为了与项目贴合,最好自己写一套框架, 然后在手工用例转化自动化用例之前,我们需要进行评审和决策,将能实现自动化或难度低的模块、用例优先进行自动化,不能实现自动化的用例给出具体原因,在回归时指派手工覆盖,防止漏测; 自动化用例我们要有一定的规范和要求,便于脚本的调用和后期的维护,比如一个功能的用例写在一个目录下,每一条用例写一个脚本,命名要统一格式; 我们用python的unittest框架加载测试用例,用HTMLTestRunner运行测试套并生成测试报告,报告出来后我们要第一时间去分析测试结果,对失败的用例要详细定位失败的原因,到底是脚本错误呢还是这就是bug?再进行处理,修改用例或者就是提交bug问题单; 自动化用例执行全部完成后,对测试结果进行汇总并给出测试结论。 我们公司自动化的流程大概就是这个样子!! 介绍下你们公司的自动化测试框架?我们公司的自动化框架基于python+Selenium,我们会有一个测试用例目录用于存放测试用例;一个公共的第三方lib库,因为我们实现自动化的过程中会有很多经常用到的方法,做成公共模块放在lib库里面,可以提高代码的复用率,便于代码的维护;还会有一个data数据目录,存放自动化测试中的数据,在进行数据驱动时,数据与代码分离,便于自动化用例数据的准备和脚本的维护;还会有一个执行和报告目录,执行的策略和报告的生成在这个目录下进行,可以调整自动化测试中的下发策略,查看运行的结果。 你们用的测试框架是自己写的吗?定位元素的方法有哪些?如果有个元素总是定位不到,怎么办?你在做自动化测试过程中遇到的最大的困难是什么?如何解决的?一般出现这种问题的话要先分析脚本中的代码是否与html源文件中元素的属性值一致,经常会因为空格、特殊字符、编码格式等问题导致脚本中代码与html源文件不一致;再查看HTML源文件中是否使用了frame,如果有了则需要特殊处理(使用switch_to_frame跳到frame再定位元素);如果都不是以上的情况,则要检查浏览器的配置,是不是拦截了一部分功能,导致需要定位的html页面的元素不能正常加载;还有一种情况是系统使用的协议不是标准的http协议,而是用了自定义的协议,那就没办法了。 你们公司自动化测试的流程是什么样的? 我们的项目是比较稳定的项目,做了好久了,现在主要是运维修改一些BUG和做一些新需求,所以我们公司的自动化测试是用于本次新版本上线前做回归测试用的。脚本是前两年就已经做好了的,每次新版本上线前一周会花两三天的时间进行脚本更新与维护,脚本调试通过再使用测试框架执行测试,测试完成会生成报告,我们再对测试结果进行分析,如果发现了BUG,进行BUG的跟进,关于BUG的跟进就跟手工测试试试跟进BUG是一样的了。 定位一组元素和定位单个元素有什么区别?定位单个元素返回的是一个元素对象,可以直接进行操作;而定位多个元素返回的是一个元素对象列表,需要做二次定位后才可以进行操作,如下拉框中的元素,需先定位到下拉框,再用Select方法进行二次定位 你们公司自动化用例大概多少条?会对那些进行自动化测试?占总系统测试用例的30%-50%左右,根据自己总用例数来估算吧!一般跳窗口,调第三方接口以及一些业务场景比较复杂的用例不适合实现自动化。 server解析请求,完成相应操作并返回response;客户端接受response,并分析其返回值来决定是接着执行下面的代码,还是停止操作。简单的说webdriver就是在自动化脚本与浏览器之间建立一种沟通(交互),脚本中的代码以请求的形式发给浏览器,浏览器执行后返回结果。 模拟对第一步定位到的元素进行点击、输入、选择等操作 元素的定位用的是什么方法? 定位元素有三种方式:通过属性定位、通过xpath定位、通过css定位 你觉得Selenium的缺陷是什么?首先Selenium是一种自动化测试框架,它就存在自动化测试的缺陷:不稳定、可靠性、不易维护、成本与收益;而且它只支持B/S架构的自动化。 开源、轻量级、支持多种语言、提供的SeleniumIDE工具录制脚本易于上手,支持多种浏览器,可以很好的测试兼容性。 如何去定位属性动态变化的元素?- xpath或者css通过同级、父级、子级进行定位 selenium中如何保证操作元素的成功率?如何提高selenium脚本的执行速度?1、减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们可以直接通过网址来打开,减少不必要的操作 2、中断页面加载,如果页面加载的内容过多,而加载的内容不影响我们测试,就设置超时时间,中断页面加载 3、在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后中断等待也可以提高速度(可以用try + isElementPresent,或者try + find_element_by) 4、多线程执行脚本,在编写测试用例的时候,要尽量实现松耦合,然后在服务器允许的情况下,设置多线程运行,提高执行速度(remote起多节点做分布式,需要先设置hub和node,threading做多线程) 怎么提高脚本执行的稳定性?- 多用 try 捕捉,处理异常 - 多线程的时候,用例之间相互影响,所以设计用例的时候,尽量降低用例的耦合度; - 多线程的时候,如果用例执行的先后数序有要求,那么在用例命名的时候要加0-9或a-z排序,因为用例的执行顺序是按照ASCII码表排列的(数字--》大写字母--》小写字母) 自动化测试的时候需要连接数据库做数据校验?- 接口测试会需要(修改了数据库中的数据就需要,也就是对数据库中的数据进行了增、删、改) 使用什么工具进行的自动化测试Selenium用的是哪个版本的的?Python用的是哪个版本的?你有自动化测试脚本吗?有写,因为一方面我们的系统每个版本都会有新功能上线,等这些新功能运行三四个月基本稳定后,这些功能会就会加入到自动化测试的范围内,所以我们几乎每个版本都会有新自动化脚本要写。另一方面,原有的功能总会有一些新的调整,所以每个版本都需要对原有的自动化脚本进行更新与维护。 我们一般是先使用selenium IDE进行录制后生成脚本,再对工具自动生成的脚本进行修改、优化。 Python常用的模块、函数有哪些你所测试的核心模块是怎么用自动化实现的,对于验证码的情况如何处理自动化实现原理 把自动化测试流程说了,对于验证码,验证码,我们用的是万能验证码,开发后台代码写死的。 你们公司的性能测试是如何开展的?介绍下你们公司的性能测试流程?你们公司性能测试通过的标准 (答案:第6条)1.首先明确哪些功能需要性能测试,我们测试 注册,登录,投保,充值,提现,添加购物车(结合自己项目里面的性能部分去展开说) 2.基本功能稳定后,我们使用LR工具进行性能测试,录制脚本; 3.录制脚本后,会做脚本增强,包括插入事务,检查点,参数化,设置集合点; 4.脚本录制完成后,我么会在controller模块加载脚本,设置运行模式,设置并发用户数,添加负载机,设置RTS,设置集合点策略; 5.运行脚本,运行结束后,对性能测试结果分析; 6脚本没有error,事务通过率100%,CPU,内存,资源小于80%,响应时间小于5s,性能测试通过; 7如果性能测试没有通过,让开发优化后继续测试,我们性能测试并发是在 100-300 之间 以上就是我们公司性能测试流程 在性能脚本开发中主要做了哪些事情?1、选择协议,录制脚本(一般多用于web架构的,选择http协议,基于url); 2、简介和注释,增强脚本的可读性; 3、事务(一般在录制的时候插入事务,注意事务的完整性); 4、检查点(现在多用文本检查,函数为lr_web_reg_find()); 5、关联(了解什么时候需要做关联,手动关联与自动关联的区别,需要关联的典型场景:登录的session动态变化,订票的订单号、交易流水号、账户的余额也是动态变化的); 6、参数化(两种参数文件属性:file、date/time,date/time类型的参数要注意时间的有效性,比如订票只能定当前时间以后的票,查询订单只能查询当前时间以前的订单;file类型的参数要注意参数的选择策略:顺序、随机和唯一,更新策略:每次迭代、每次出现、一直是,参数迭代超出时处理(只在参数做唯一选择时需要设置):停止迭代、参数循环迭代、参数以最后一个值迭代); 7、运行时设置(这里指的是脚本调试时的RTS,要与场景设置时的RTS区分开,关键是区别日志类型和迭代次数); 8.集合点(注意设置集合点的位置,在一个事务结束之后,下一个事务开始之前,要了解场景设置中集合点的三种策略:占总虚拟用户数的百分比、占运行总用户数的百分比、达到多少用户数时); 9、错误处理(一般对文本检查的结果进行处理,文本检查中会加一个计数,通过计数来做事务成功或失败的判断); 性能测试中主要的指标有哪些?系统指标:内存(70%以下)、CPU(70%以下)、网卡使用率、磁盘I/O速度 业务指标:TPS、吞吐量(业务不同,并发用户数不同,吞吐量会有很大的差异,所以单看吞吐量没有太大的意义,常用于配置调优时进行对比分析)、响应时间(3s,5s,10s)、事务成功率 你觉得可能存在性能瓶颈的地方有哪些?1.配置,web服务器作为前端与后台服务器交互的中轴,在整个系统运行中起着重要作用,它的最大进程数和活动进程数要合理配置,不能太多,也不能太少,太多则对服务器产生过大压力,太少则浪费资源;中间件的调优,如mysql数据库配置的调优,配置数据库连接池(与web服务器配置调优类似); 2.后台服务器代码调优:有逻辑上的算法调优和SQL语句调优; 3.提高服务器硬件配置(如CPU、内存等)或服务器数量:服务器集群和负载均衡。 如何判定cpu存在性能瓶颈?通过交叉结果来对比分析,也就是同样的并发场景,只改变系统配置中的CPU,对两次性能监控的指标进行对比分析,如果提高CPU配置后,cpu占比和系统的性能表现得到提高,那么可以判断cpu存在瓶颈(不一定是唯一的瓶颈,只能说是瓶颈之一,系统的性能是由多个因素共同决定的,要注意的是,性能的优化不一定只是代码上的优化,还可以是硬件上的优化,具体怎么做,还要分析成本与收益,毕竟代码的优化是有极限的)。 如果注册这个业务响应时间过长,你能想象到优化的方案有哪些?从前端来说:可以减少请求的次数,请求的次数越多,自然响应时间就越长;对传输的比较大的数据进行压缩处理; 从服务端来说:sql语句的调优,一个插入动作,可能插入的不仅仅是一张表,而是对多张有关联的表进行操作,那么可以从代码层面对sql语句进行优化; 从业务来说:对应请求的响应数据过大时,可以对响应数据进行分割,先响应一部分数据,如淘宝查询操作,每次只响应10条数据。 你们公司性能测试用的是什么工具?自动监控制定的URL或应用程序所发出的请求及服务器返回的响应。它作为一个第三方监视客户端与服务器的所有对话,然后把这些对话记录下来。生成脚本。再次运行时模拟成千上万的虚拟用户发出的请求,捕获服务器端的响应并监控性能指标数据。通过对性能指标数据的统计与分析输出报告。 录制脚本,脚本调试与优化、设置场景,执行场景,分析结果 脚本调试与优化包括:参数数、关联、检查点、集合点、思考时间、测试数据准备 做性能测试时候,有自己写过脚本吗?写过,我们测的一般功能都比较简单,比如新增数据、搜索、导入导出这些功能 导出、下载功能需要写脚本,使用C语言。首先使用关联函数将服务器返回的数据获取并保存,使用C语言中的fopen函数把数据保存到本地。 做的最多的是新增数据(需要关联,关联内容一般有时间、ID)、搜索(参数化、参数取值方式随机并且运行时需要设置清空缓存run-time settings)的脚本。 性能测试分析结果是怎么做的?我只做一个表象的分析,对比实际测试的性能指标数据与预期指标是否相符、观察测试结果中的图像是否稳定。 其他的交由开发人员处理,把报错的信息发到开发人员处,后续分析以及调优由开发人员处理 你做过性能测试,你有没有遇到什么问题?怎么处理的?1.我有测出过一个死锁,后来加了一个超时的设置,就可以处理这个问题了。 2. 测搜索功能的时候响应时间非常慢?怎么处理? 数据库加索引,这个是开发人员去处理的 性能测试中,并发用户数怎么估算?有两种情况 一种是新系统,需要产品人员去调研业务量,业务的峰值, 第二,得到这些数据后,在用8020原则计算系统当前业务强度(TPS、点击率等等) 第三,由产品部门或从数据库调研得出业务增长趋势(比如估算未来三年业务增长为现在的1.5倍),计算出本次测试的系统业务强度 第四,用目标场景估算并发用户数 你们公司的性能测试用多少用户并发?OA系统或者企业内部用的系统,一般是50~200并发用户数 淘宝双11一般是百万级别的并发用户数 APP(饿了么) 并发一般用几万 性能测试工作都干啥(初级测试):负责某某功能的性能测,主要工作内容有 场景的设置与执行,测试结果分析,并协助开人员优化系统,性能测试报告。 写脚本的过程当中经常用的函数有哪些?性能测试中监控服务器资源实现的原理LR 主要利用系统的服务和协议来监控,比如说RPC和tcp udp等 Jmeter 是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去 性能测试时候使用什么工具检测服务器性能指标Jmeter 用的是一个插件教 server agent ,原理是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去 说一下你们公司接口测试是怎么做的?其实接口测试流程和功能测试流程差不多,首先熟悉业务流程,熟悉接口需求,然后根据开发提供的接口测试文档,编写并评审接口测试用例,开发人员接口开发完毕,提测后我们执行接口测试用例,发现问题提交bug问题单,回归接口测试问题单,整理接口测试报告。 我们公司接口测试流程大体就是这样 说一下你们公司接口测试都测啥?如何进行接口测试用例设计?我们公司接口测试目前没有自动化起来,主要还是手工测试,测试重点主要围绕着,接口的 通过性验证,参数组合验证,接口安全,接口异常验证 以及结合 接口本身业务逻辑来,展开接口测试的: 通过性验证:严格按照接口文档里面的规定传参数以及参数类型进行传参,也就是正常场景,先保证接口流程是通的,接口是好使的; 参数组合验证:多个参数的时候,有些参数是必选项,有些是非必选项,这部分我们主要对参数必选项,非必选项组合场景验证; 比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成-3元【通过抓包工具篡改金额】,验证后端有没有对金额有效性做验证。 比如充值场景,我们要向合作银行传递 客户ID ,已经用户ID ,我们把客户ID 改成不存在的客户ID,或者其他网贷平台客户ID ,看后端是否错了判断处理; 比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解 也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验 根据你自己的业务逻辑来进行,接口测试 这部分会跟功能测试用例重复,但是通过接口测试可以发现很多在页面上操作发现不了的bug 你们主要测试哪些接口?基于什么协议,返回报文格式是什么样的?你们公司接口测试只测与第三方的外部接口吗?是否系统内部接口是否测试?接口分为程序内部接口,和程序外部接口,程序内部接口指的是:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口 ,例如 未登录状态浏览论坛,点击 '发帖子’,弹出 登录对话框,登录,发帖子两个模块,你要发帖子,就一定要先登录,那么这两个模块之间就要有交互,就会抛出一个接口,供内部系统调用 程序外部接口,主要是系统与第三方的接口常见的 是支付接口 与银行对接等; 我们公司 系统内部接口和外部接口都要测试 3.根据接口文档 ,配置 要测试接口对应 webservice请求消息报文 你用过哪些接口测试工具开发给的接口文档,包括哪几部分接口规范文档,也是我们测试最重要的一个依据 4、请求参数、参数类型、请求参数说明 说一下你们公司APP 怎么测的?这是我们公司研发的APP ,你怎么展开测试?APP 测试我们主要围绕这 安装卸载,功能测试,运行,登录,离线,消息推送,软件更新,异常测试,网络环境,兼容性,客户端性能 几个纬度展开测试,实际工作当中,我们对APP 测试主要聚焦点在 功能测试和兼容性测试 首先站在APP 的 安装卸载角度,考虑的测试点主要有: 站在功能测试的角度,考虑的测试点: 站在兼容性测试(适配测试)的角度,考虑的测试点主要有: 备注:主流分辨率: 普通机型 高端机型 站在APP 运行的角度,考虑测试点主要有: 站在APP 登录的角度,考虑测试点主要有: 站在APP 离线测试的角度,考虑测试点主要有: 站在APP 消息推送的角度,考虑测试点主要有: 站在APP 软件更新,考虑测试点主要有: 站在异常测试的角度,考虑的测试点主要有: 站在弱网测试的角度,考虑的测试点主要有: 站在APP 前台性能测试的角度,考虑的主要测试点有: 安卓与ios 系统区别什么原因会是CPU 占用率一下子飙升超过100%FPS(流畅度卡顿)造成 cpu,mem 单位是 %(百分比),流畅度 英文缩写:FPS 单位是: 帧 原生:云服务器+客户端 原生:APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上 web app:而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户 h5 app 安装包小巧,数据都存放在云端 你看过app的日志没有,app的崩溃类型有哪几种APP 接口类型,常用的就是URL 类型 内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用就会放生内存溢出 GT 客户端性能工具都监控哪些指标?对App 进行CPU、内存、流量、电量等进行测试 客户端性能测试报告扩张名什么结尾?我们一般通过纵横对比: 横向对比市场竞争对手产品APP 客户端各项性能指标 纵向对比产品之前的不同的版本 安卓的开发包 谷歌安卓官网上可以下载到的开源 ,没有二次开放之前的那个包 装一个 被测试APP 我们公司平日用真机测试的比较多,没怎么解除过Android 环境的搭建,但是 ,我知道大概的安装顺序是:先安卓 Android Studio ,然后在线 安装被测试版本的sdk,选择avd , 开启虚拟机,再安装 要测试APP 然后进行测试; 我必须要要使用安卓手机才能做手机测试吗?手机,安装APP 进行测试。工作中,还是真机上测得多,测得准,使用模拟工具测试场景,通常是客户要指定机型太老,市面上很难采购到,我们才会用模拟工具测试; adb (Android debug bridge) 是安卓开发的一个重要辅助工具,可以通过命令让PC机和手机通讯的,主要用于android 设备的控制; 常用的adb 命令有哪些?monkey 是android 中的一个 命令行工具,它可以向系统发送 伪随机 事件,是一款很好的 测系统稳定性,健壮性的测试工具 monkey 用来模拟的伪随机事件的类型有哪些?键盘事件 键盘弹出 和退出 常用的monkey 命令有哪些?-v 指定日志的详细程度 500 向应用发送500个伪随机事件 100次随机用户事件)。 二组 日志相关操作 说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 说明 提供较为详细的日志,包括每个发送到Activity的事件信息 说明 最详细的日志,包括了测试中选中/未选中的Activity信息 用于指定用户操作(即事件)间的时延,单位是毫秒 测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件 数目达到1000为止; 【参数解释】 用于指定当应用程序崩溃时(Force &Close错误),Monkey是否停止运行。 如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件 计数完成。 手机测试的时候,如果模拟弱网的场景?要实地跑到电梯里去测试吗?不用,现在手机里有'设置’ 里面'优先网络类型’在这个系统里面 可以设置切换的2G,3G,4G, 手机兼容性测试,机型如何选择的第二种就是 客户指定的机型 你如何保证测试的质量或者你如何判断是否达到上线的条件? 如果开发延期,测试要求如期上线,你会怎么做? 介绍下你们的测试流程? bug的生命周期有哪些? 项目的一个完整迭代要多久? 每一轮你们的侧重点是什么? 系统测试用例 功能 基本功能+这个版本新特性 一轮大概发现多少个bug? 你印象最深的bug有哪些? 你如何确定你发现的bug是有效的? 你觉得提交bug需要包含哪些因素才算完整? 作为测试的话,你的优势在哪里? 你觉得你们在测试的过程中有哪些是可以改进的地方? 针对某某(你项目中的)模块,你是怎么设计测试用例的?给你这样一个功能 你会怎么测试? 11.理财项目中涉及到的接口以及实现原理 12.提现模块是否将参数直接传给华瑞银行审核,那么华瑞银行审核的原理是怎样的 13.大致介绍一下最近的一个项目是用来干嘛的,你分几个维度进行测试 3、充值回调,银行这边超时了,怎么处理 我回答找到客服提供交易流水号,手动启动充值回调 面试官问如果是周末,你们怎么处理的? 4、金融类项目,安全测试一般面试官会问的比较多。 8、你觉得你们这个金融平台是靠什么挣钱的?客户为什么要选择你们的产品? 11、APP项目组有哪些开发? 测试过程中怎么判断是服务器出了问题,还是程序本身的问题? 404 找不到 — 服务器找不到给定的资源;文档不存在 500 内部错误 — 因为意外情况,服务器不能完成请求 501 未执行 — 服务器不支持请求的工具 502 错误网关 — 服务器接收到来自上游服务器的无效响应 301 已移动 — 请求的数据具有新的位置且更改是永久的 302 已找到 — 请求的数据临时具有不同 URI post提交数据原则没有大小限制,get有大小限制(200k) 1.当页面加载很慢的时候,不知道是什么原因导致页面加载很慢,我需要抓包分析一下; 2.我发现 我们测试的APP,web 图片无法显示,视频无法播放,抓包分析一下; 3.在做接口测试的时候,开发人员没有给我接口测试文档,我不知道请求参数,和返回参数都有哪些,支持的是什么协议,请求参数类型都是什么,这时候,我需要使用抓包工具 ,抓取接口报文信息,进行分析 ·根据返回的请求的后缀(扩展名),来判断请求的类型 ·通过返回码判断请求的状态,如果4xx和5xx需要提交bug ·查看请求的方式,是get还是post,如果post需要查看post的数据,是否加密 ·查看页面的大小,我们公司要求,如果图片超过200k 提交bug 界面加载的时候先加载html 在加载css 最后加载js 一个完整的html 网页应当包括列举出常用的10个HTML 标签十一、安全性测试是什么?用什么工具?如何测试? 答:安全性测试是验证有关应用程序的安全服务和识别潜在的安全性的缺陷的过程。此节包括一些重要的测试建议,用来验证已创建安全的应用程序。 1. 认证模块必须采用防暴力破解机制。例如:验证码或者多次尝试连接尝试登陆失败后锁定账号或IP,账号冻结后,管理员可以手动解冻 2. 对于每一个需要授权访问的页面或servlet的请求都必须核实用户的会话标识是否合法、用户是否被授权执行这个操作,以防止URL越权。 3. 登录过程中,往服务器传递传递用户名和口令时,必须采用HTTPS安全协议(也就是带服务器端证书的SSL) 6. 密码需要满足一定长度和复杂度,,并且以高级的加密方法保存在数据库。 10. 日志中的密码不能以明文显示 |