11、如何处理WEB自动化测试中的跨域问题的?
。设置浏览器选项:在自动化测试中,可以通过设置浏览器选项来禁用跨域策略。这可以通过使用WebDriver的接口或设置浏览器选项的方法来实现。例如,对于Chrome浏览器,可以使用-disable-web-security参数来禁用跨域策略。
。使用代理服务器:通过在自动化测试中使用代理服务器,可以绕过浏览器的跨域限制。代理服务器可以将请求发送到目标服务器,并将响应返回给浏览器,从而解决跨域问题。常用的代理服务器工具有Selenium Proxy、BrowserMob Proxy等。
。配置后端服务︰有时候跨域问题是由后端服务引起的。在自动化测试中,可以通过在后端服务中进行相关配置来解决跨域问题。例如,在服务器端设置响应头(Access-Control-Allow-Origin)来允许跨域请求。
。使用插件或扩展:对于特定的浏览器,可以使用插件或扩展来处理跨域问题。这些插件或扩展可以模拟用户行为,执行跨域请求,并将响应返回给自动化测试脚本。
。使用WebDriver的跨域解决方案:一些WebDriver库和框架提供了特定的方法或选项来处理跨域问题。例如,SeleniumWebDriver提供了--disable-web-security参数,可以在启动浏览器时禁用跨域策略。
?
12、支付是否涉及到密码?密码在数据库中应该如何存储?什么是加密算法?常见的加密算法有哪些?
支付过程中涉及到密码的情况是比较常见的,例如用户在进行支付时需要输入密码进行身份验证。密码在数据库中应该以加密的方式存储,而不是明文存储。这是为了保护用户的密码安全,防止密码泄露后被恶意使用。
加密算法是一种将原始数据转换为密文的数学算法,通过密钥来实现数据的保密性。常见的加密算法有以下几种:
。对称加密算法:使用相同的密钥进行加密和解密,常见的对称加密算法有DES、3DES、AES等。
。非对称加密算法:使用一对密钥,公钥用于加密,私钥用于解密,常见的非对称加密算法有RSA、DSA、ECC等。
。散列算法:也称为哈希算法,将任意长度的数据转换为固定长度的哈希值,常见的散列算法有MD5、SHA-1、SHA-256等。
。消息认证码(MAC算法)︰结合了对称加密和散列算法的特点,用于验证数据的完整性和真实性,常见的MAC算法有HMAC.
?
13、Http和Https之间的区别是什么?
HTTP (Hypertext Transfer Protocol)和HTTPS (Hypertext Transfer Protocol Secure)是用于在客户端和服务器之间传输数据的协议,它们之间的主要区别如下:
。安全性:HTTP是明文传输的协议,数据在传输过程中不加密,容易被攻击者窃取和篡改。而HTTPS通过使用SSL(SecureSockets Layer)或TLS (Transport Layer Security) 协议对数据进行加密和认证,确保数据的机密性和完整性,提供更高的安全性。
·端口号:HTTP使用的是80端口,而HTTPS使用的是443端口。服务器监听不同的端口号来区分接收HTTP请求还是HTTPS请求。
。证书:HTTPS需要使用数字证书来进行身份验证。数字证书由可信的第三方机构(如CA)签发,用于验证服务器的真实性。这样可以避免中间人攻击和伪造服务器的情况发生。
。连接建立过程:HTTP是无状态协议,每个请求和响应之间是独立的,没有记忆功能。而HTTPS在建立连接时需要进行握手过程,包括客户端和服务器之间的密钥交换、数字证书验证等步骤。
。性能:由于HTTPS需要进行加密和解密操作,因此在性能上比HTTP略慢一些。但是随着硬件和加密算法的改进,这种差距已经逐渐减小。
?
14、什么是DDoS攻击?如何防范DDOS攻击?
DDos(Distributed Denial of Service)攻击是一种恶意行为,旨在使目标网络、系统或服务无法正常运行。攻击者通过占用目标资源的方式,使其无法响应合法用户的请求,从而导致服务不可用。
防范DDoS攻击可以采取以下措施:
。流量过滤:使用防火墙、入侵防御系统(IDS)或入侵防御系统(IPS)等设备,对进入的流量进行过滤和检测,屏蔽恶意的流量。
。负载均衡:通过使用负载均衡设备,将流量均匀地分发到多个服务器上,避免单个服务器被攻击导致服务不可用。
。增加带宽和网络容量:通过扩大带宽和增加网络容量,可以更好地抵御大规模的DDoS攻击。
。CDN (Content Delivery Network):使用CDN服务,将网站内容分发到全球各地的边缘节点,能够缓解DDoS攻击对网站的影响,并提高用户的访问速度。
。限制连接和访问频率:通过设置连接、请求或访问频率的限制策略,可以有效防止大量的恶意请求对目标系统造成过载。
?
15、描述一下Jekins pipeline的搭建过程?
。安装Jenkins:首先需要在服务器上安装Jenkins。可以从Jenkins官网下载适合你操作系统的安装包,按照官方文档的指引进行安装。
。安装必要插件:安装完成后,进入Jenkins的插件管理页面,安装Pipeline插件以及其他必要的插件,如Git插件、Credentials插件等。
。创建Pipeline项目:在Jenkins首页,点击"新建任务"创建一个新的Pipeline项目。为项目命名,并选择"Pipeline"类型。
。编写Jenkinsfle:在Pipeline配置页面中,可以选择将Pipeline的定义放在Jenkinsfile中。Jenkinsfile是用来定义Pipeline的脚本文件,可以使用Groovy语言编写。在Jenkinsfile中,可以定义流水线的各个阶段、步骤、触发条件等。
。配置源码管理:在Pipeline配置页面的"配置"部分,可以选择要使用的源码管理工具,如Git。配置好代码仓库的URL、认证信息等。
。配置构建触发器:在Pipeline配置页面的"构建触发器"抓部分,可以设置Pipeline的触发条件,如定时触发、代码提交触发等。
。配置构建环境:在Pipeline配置页面的"构建环境"部分,可以配置构建时所需的环境变量、构建参数等。
。保存并触发Pipeline:完成Pipeline的配置后,点击"保存"按钮。然后可以手动触发Pipeline的执行,或者等待触发条件满足自动触发。
。查看Pipeline执行结果:可以在Jenkins的Pipeline详情页面中查看Pipeline的执行结果、日志输出等信息。根据需要进行调试和优化。
?
16、Jenkins的常用插件有哪些?(至少3个以上)
Git Plugin:用于与Git版本控制系统集成,支持代码的拉取、提交和分支管理等操作。
GitHub插件:用于与GitHub集成,支持GitHub上的代码仓库的Webhooks、PR构建等功能。Pipeline插件:引入了Jenkins Pipeline功能,允许使用Jenkinsfile来定义和管理流水线。
Email Extension Plugin:用于发送电子邮件通知,支持自定义邮件内容、收件人、附件等。
Checkstyle插件:用于检查和报告Java代码的编码规范和风格问题。
Cobertura插件:用于生成代码覆盖率报告,帮助评估测试覆盖率。JUnit插件:用于生成和展示测试结果报告,支持JUnit测试框架。Docker插件:用于与Docker集成,支持构建和部署Docker容器。
?
17、什么是SSL/TLS协议?
ssL (Secure Sockets Layer)和TLS (Transport Layer Security)协议是一种加密协议,用于在计算机网络上保护通信安全。SSL是早期版本的协议,而TLS是其后续的更新版本。
SSLTLs协议的主要目标是提供通信的机密性、完整性和身份验证。它通过在通信双方之间建立安全连接,使用加密算法对数据进行加密和解密,防止数据被窃取、篡改或伪造。
?
18、MQ有哪些常见的应用场景
消息队列(Message Queue,简称MQ)是一种消息通信模式,常见的MQ应用场景包括:
异步处理:将耗时的任务和请求放入消息队列中,由消费者异步处理,提高系统的处理能力和响应速度。
解耦系统:通过消息队列作为中间件,不同的系统之间可以通过发布和订阅消息进行解耦,降低系统之间的依赖性。
流量削峰:在高并发情况下,将请求放入消息队列中,通过控制消费者的数量和速度来平滑处理大量的请求,防止系统崩溃。
日志收集和分析:将系统日志、应用日志等实时发送到消息队列中,然后由消费者进行日志收集和分析,帮助监控系统状态和故障排查。
分布式事务:通过消息队列的事务机制,实现分布式事务的一致性,确保多个系统之间的数据更新操作的原子性。
消息通知和推送:通过消息队列发送通知和推送消息给用户,如短信通知、邮件通知、APP推送等。
应用解耦和异步通信:不同的模块和组件之间通过消息队列进行通信,实现解耦,提高系统的可维护性和扩展性。
?
19、介绍一下测试出来的bug?
1.记录BUG:测试人员需要详细记录BUG的信息,包括BUG的描述、出现的场景、复现步骤、相关截图和日志等。这些信息将有助于开发团队更好地理解问题的本质,从而快速定位和修复问题。
⒉分类和优先级排序:测试人员需要对BUG进行分类和优先级排序,以便开发团队能够根据BUG的重要性和紧急程度合理安排修复工作。常见的分类方式包括功能缺陷、性能问题、兼容性问题等,而优先级则可以根据BUG的影响范围和严重程度来划分。
3.提交BUG:测试人员需要将记录好的BUG提交给开发团队,可以通过缺陷管理工具进行提交,并指明相应的开发人员或负责人。同时,测试人员需要与开发团队保持沟通,确保问题得到及时修复。
4.验证BUG:在开发团队修复BUG后,测试人员需要进行复测,确保问题已经得到解决并且没有引入新的问题。如果BUG已经修复,测试人员需要在测试报告中记录修复情况,以便后续跟踪和审计。
5.跟踪和总结:测试人员需要跟踪BUG的修复情况,确保所有提交的BUG都得到了及时修复。同时,测试人员需要定期对测试工作进行总结,分析BUG产生的原因和解决方案,以便提高测试质量和效率。
?
20、JMeter用于模拟用户并发访问如何去做?
。下载和安装JMeter:从JMeter官方网站(https:ljimeter.apache.org/))下载JMeter,并按照指南进行安装。
。创建测试计划:打开JMeter,创建一个新的测试计划,右键点击测试计划,选择"Ad ~> Threads(Users)-> Thread Group"来添加线程组。
。配置线程组属性:在线程组的属性中,设置线程数(模拟的并发用户数)、循环次数(每个用户执行的请求次数)和延迟时间等。
。添加HTTP请求:在线程组下添加HTTP Sampler (HTTP请求),设置请求URL、方法(GETIPOST等)和参数等信息。
。添加监听器:为了查看测试结果,可以添加监听器,如"View Results Tree"、"Aggregate Report等,用于查看请求响应、错误信息、吞吐量等。
。配置其他元件:根据需要,可以添加其他元件,如断言(Assertions)、定时器(Timers)、配置元件(Config Elements)等,来模拟真实的用户行为。
。运行测试计划:保存测试计划后,点击"运行"按钮来执行测试,JMeter将模拟并发用户访问目标网站,并记录相应的测试结果。
。分析测试结果:测试完成后,可以通过监听器、报告和图表等工具来分析测试结果,评估系统的性能和稳定性。