netdata

测试人员常用借口

こ雲淡風輕ζ 提交于 2019-12-20 12:07:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 无论我们试图建立一个网站多么完美,我们都一定会犯一些错误。错误是不可避免的,无论多么微小。这就是为什么我们不能保证没有错误的发布,甚至在进行了不同类型的全面测试之后,例如压力测试,跨浏览器测试,响应测试等。在投入生产环境之前,请考虑流程中涉及的各种类型的测试。依然可能在上线的版本中发现问题。 出了问题,就要解决问题,不管是测试过程中发现的还是上线以后用户反馈的。但在解决问题的过程中,测试人员需要起到积极的推动作用。当然理想很丰满现实很骨感,有的人总是能找到各种各样的理由逃避问题和责任。 下面分享一些测试人员经常遇到过或者使用过的各种接口,有些我自己也用过。 Chrome上没问题,其他浏览器上应该也没问题 因此,当你测试了一个网站,遇到了一些错误,然后将其转发给开发团队。他们修复了该问题,并将其转发给您或您的测试团队以供验证。您仔细地对整个网站进行回归测试,以检查更改是否影响了任何现有功能。一切都很好,您进行了确认,因为从系统(而不是浏览器)测试网站时,您没有发现任何错误。一旦更改生效并投入生产,客户使用与您不同的浏览器便开始抱怨UI和跨浏览器兼容性问题。 如果该软件在Google Chrome或任何其他浏览器上都能正常运行。但是请记住,就像人类对所有事物的理解不同一样,浏览器也是如此。如果代码与一个浏览器兼容

成功实施自动化测试的优点

久未见 提交于 2019-12-18 10:04:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文内容是群友在探讨“自动化价值”时候一些观点,整理加工,以供参考。 随着技术的发展,保证应用程序的质量变得越来越具有挑战性。由于敏捷开发和成本因素,导致了发现问题窗口时间有限,因此测试经常会忽略某些应该关注的地方。 测试工程师应该在发布产品之前发现其中存在的问题,但是任何软件都不可能是完美的!发现问题后,敏捷开发模式的做法通常是在生产后部署快速修复程序,然后再次进行回归测试。整体回归的测试而言非常耗时,很多时候是无法确定修改部分功能导致的影响范围到底多大。在这种情况下,很可能陷入了恶性循环。 与手动测试相反,自动化测试是提高测试过程的效率和覆盖范围的有效方法。它的出现是为了加快执行周期,使测试人员免于陷入重复性任务,减少人工工作并提供即时反馈。 什么是自动化测试? 自动化测试是使用自动化工具来对应用软件执行测试用例和检验响应功能是否符合产品设计的过程。测试工具获取实际结果,并将其与预期结果进行比较,以生成详细的测试报告。 自动化测试的好处 下面是群友在探讨“自动化价值”时候一些观点,收集整理,以供参考。 测试执行7*24 与手动测试相比,自动化测试的主要好处之一是可以随时随地从任何地方执行测试的灵活性。为了执行手动测试,您需要通过计算机、智能设备来测试应用程序。如果有需求在早上3:00进行某种测试测试

自动化如何选择用例

假装没事ソ 提交于 2019-12-17 09:58:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在开始实施测试自动化时,应该选择那些用例优先进行自动化? 问题来源于群里的一次聊天,在测试自动化实施中如何最大产出的问题。强调自动化覆盖率?太片面了不太行。自动化效率?由于稳定性和可靠性不给力,这一条好像也不行。BUG比率?这项更不行。 但是第一步都是需要将测试用例自动化,那么如何选择要自动化的测试以及将哪些测试留给手动测试? 在开始自动化测试之前,需要考虑到在自动化测试上投入的时间、精力和资源后,看看自动化测试可以带来什么好处。以下是确定哪些手动测试应该或不应该自动化应该考虑的问题。俗话说,仅仅因为您可以使某些东西自动化并不一定意味着应该这样做。 下面是一些观点,给各位解决这个问题提供一些参考: 应该自动化的测试: 业务关键路径:如果功能或用户操作失败,则会对业务造成损害。 需要针对应用程序的每个内部版本/发行版运行的测试,例如冒烟测试,健全性测试和回归测试。 需要针对多种配置(不同的OS和浏览器组合)运行的测试。 执行相同工作流程的测试在每次测试运行中使用不同的数据作为输入,例如数据驱动。 涉及输入大量数据的测试,例如填写很长的表格。 可用于性能测试的测试,例如压力测试和负载测试。 测试需要很长时间才能执行,并且可能需要在休息时间或通宵进行。 测试必须捕获图像的过程,以证明应用程序的行为符合预期

如何测试非固定型概率算法P=p(1+0.1*N)

天大地大妈咪最大 提交于 2019-12-10 13:53:27
在上一期讲到 如何测试概率型业务接口 之后,产品又提出了新的需求,总结来说是非固定性概率算法,有一套“算法”来计算用户下一次中奖的概率。 同样是一个概率获奖的活动,用户话费一定数额金币,有概率获奖,奖项不详细叙述了。 需求更改:用户获奖概率P=p(1+0.1*N),其中p表示原始的中奖概率,N表示连续不中奖的次数,N最大为5。还额外提出一条需求,用户不能连续中奖,为了简化过程每种礼物的中奖概率以1%位单位。 接口:三个接口:一、抽奖接口;二、获取活动配置接口(包括各类礼物配置和信息);三、个人活动详情(个人信息、抽奖次数、获奖情况) 测试工具:Java(不唯一),通过把三个接口提供的功能封装为方法,然后通过方法调用去获取数据,进而统计得到的结果。 测试时间:一天。 其中测试的重点还是概率,但是因为此次的概率有两项:不能连续中奖+不确定概率,所以难点在于如何测试用户获奖概率P=p(1+0.1*N)这个算式需求实现的正确性。 经过讨论大概给出了两个方案: 方案一 通过数学计算,获得用户综合中奖概率P和p对应关系,然后设定不同数值的p,进行大量抽奖测试,统计结果与理论计算结果比较,标准依然采用上一期概率型业务接口的相同的测试标准。 方案二 首先进行大量测试(比如1万次),记录每次用户抽奖的实际情况,比如1(中奖)和0(不中奖),然后计算P和p与N的关系表格,获取某一个p的情况下

Linux性能实时监测工具 Netdata

人走茶凉 提交于 2019-12-07 11:32:08
今天给大家推荐一款给力的Linux性能实时监测工具Netdata。上图是运行时的截图。Netdata是一个高度优化的Linux守护进程,它为Linux系统,应用程序,SNMP服务等提供实时的性能监测。 它用可视化的手段,将被监测者最细微的细节,展现了出来。这样,你便可以清晰地了解你的系统和应用程序此时的状况。 使用此软件,你可以得到: 1.优美的界面:bootstrap框架下的控制界面 2.自定义的控制界面:你可以使用简单的HTML代码去自定义控制界面(不需要使用javascript) 3.极其的快速而高效:程序使用C进行编写(默认安装下,预计只有2%的单核CPU使用率和少许的内存使用率) 4.零配置:你只需要去安装它,接着它就会自动地监测一切数据 5.零依赖:它的静态网络文件和网络接口拥有自己的网络服务器 6.可扩展:用它自身的插件API(可以使用许多方式来制作它的插件,从bash到node.js),你可以检测任何可以衡量的数据。 7.可嵌入:它可以在任何Linux内核可以运行的地方运行 监测内容: 这是它目前检测的内容(大多数都不需要进行配置,安装后即可开始监测) 1.CPU的使用率,中断,软中断和频率(总量和每个单核) 2.RAM,互换和内核内存的使用率(包括KSM和内核内存deduper) 3.硬盘输入/输出(每个硬盘的带宽,操作,整理,利用等) 4.IPv4网络(数据包

接口测试代码覆盖率(jacoco)方案分享

浪尽此生 提交于 2019-12-06 00:34:49
在做接口测试过程中,为了达到量化接口测试用例效果的目的,引入了代码覆盖率作为重要指标,在查阅相关文档和资料通过实践之后,大概得到了一个方案。如图: 备注:该方案略微复杂了一些,原因在于服务JVM所在的服务器和Jenkins构建服务器与测试脚本所在服务器分别在三台服务器上。 Jenkins机器:服务对应的Jenkins机器 测试项目Jenkins:服务对应的测试项目Jenkins机器 第一次画流程图,有点乱,这里在介绍一下思路,通过服务所在的Tomcat容器的启动脚本(JAVA_OPTS参数)引入jacoco配置,然后启动服务,通过ant配置build.xml读取exec的信息编译并生成报告(html格式)。最后使用web服务来查看相关报告。 最终页面展示情况如下: jacoco配置 jacoco配置 jacoco配置需要在jar项目启动参数里面添加如下信息: -javaagent:/home/jmsmanager/jacoco/lib/jacocoagent.jar=includes=com.noriental.*,output=tcpserver,address=127.0.0.1,port=12345 javaagent配置:jacocoagent.jar所在目录 includes配置:所包含的包路径 output配置:输出类型,默认tcpserver address配置

Cocos Creator 通用框架设计 —— 网络

霸气de小男生 提交于 2019-12-01 13:45:31
在Creator中发起一个http请求是比较简单的,但很多游戏希望能够和服务器之间保持长连接,以便服务端能够主动向客户端推送消息,而非总是由客户端发起请求,对于实时性要求较高的游戏更是如此。这里我们会设计一个通用的网络框架,可以方便地应用于我们的项目中。 使用websocket 在实现这个网络框架之前,我们先了解一下websocket,websocket是一种基于tcp的全双工网络协议,可以让网页创建持久性的连接,进行双向的通讯。在Cocos Creator中使用websocket既可以用于h5网页游戏上,同样支持原生平台Android和iOS。 构造websocket对象 在使用websocket时,第一步应该创建一个websocket对象,websocket对象的构造函数可以传入2个参数,第一个是url字符串,第二个是协议字符串或字符串数组,指定了可接受的子协议,服务端需要选择其中的一个返回,才会建立连接,但我们一般用不到。 url参数非常重要,主要分为4部分 协议://地址:端口/资源 ,比如 ws://echo.websocket.org : 协议:必选项,默认是ws协议,如果需要安全加密则使用wss。 地址:必选项,可以是ip或域名,当然建议使用域名。 端口:可选项,在不指定的情况下,ws的默认端口为80,wss的默认端口为443。 资源:可选性

使用 httpclient 上传文件方法的封装

孤者浪人 提交于 2019-11-30 17:57:40
本人使用 httpclient 进行接口测试的过程中,遇到了上传文件的接口,之前的文章已经完成了二进制流上传图片的代码,但是还没有封装成固定的使用方法,今天分享一下封装后的方法,供大家参考。 /** * 设置二进制流实体,params 里面参数值为 file * * @param httpPost * httpPsot 请求 * @param params * 请求参数 * @param file * 文件 */ public void setMultipartEntityEntity(HttpPost httpPost, JSONObject params, File file) { String fileName = getFileName(file); InputStream inputStream = null; try { inputStream = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } Iterator<String> keys = params.keys();// 遍历 params 参数和值 MultipartEntityBuilder builder = MultipartEntityBuilder.create();//

如何拼接GET请求的参数

北战南征 提交于 2019-11-30 09:37:23
本人在做接口测试的过程中,之前写了一个用字符串替换的方法来处理get接口的参数拼接,后来优化了这个方法,兼容了中文字符提示非法字符的情况,使用了java自带的urlencode方法。包括第一种方法,之前传的是json。分享代码,供大家参考。 更新: /** * 方法已重载,获取get对象 * <p>方法重载,主要区别参数,会自动进行urlencode操作</p> * * @param url 表示请求地址 * @param args 表示传入数据 * @return 返回get对象 */ public static HttpGet getHttpGet(String url, JSONObject args) { if (args == null || args.size() == 0) return getHttpGet(url); String uri = url + changeJsonToArguments(args); return getHttpGet(uri.replace(" ", "")); } /** * 方法已重载,获取get对象 * <p>方法重载,主要区别参数,会自动进行urlencode操作</p> * * @param url 表示请求地址 * @param args 表示传入数据 * @return 返回get对象 */ public static