字*跳动1. Android,ios测试与web端的测试区别三者测试的共同点:都是为了保证软件系统的质量,满足客户需求,测试的设计方法都相同。异同点:web测试是pc端考虑电脑系统和浏览器的兼容多些,Android和iOS在手机,平板等终端考虑手机版本和网络多些,而Android与ios一个是开源的,一个不是开源的,测试考虑的终端型号一个多些,ios就只对苹果终端的测试其他的不会考虑。2. 什么样的测试用例是一个好的测试用例1) 用例覆盖程度:毫无疑问,这一点应该是最重要的,覆盖率最大化是一套测试用例的最重要的评价标准,如果漏测就麻烦了。核心需求需全部覆盖;功能点基本要求包含完;对业务产生影响的场景尽可能多的考虑到。2) 用例是否已经达到工作量最小化:在满足用例覆盖程度最大化的前提下,应该尽量减小执行用例所需要的工作量。3) 用例的分类以及描述是否足够清晰:用例的分类,是指相同类型的用例是否放在一起了;用例的描述,是指描述的清晰程度是否能够形成文档。4) 用例是否表明了测试目的:写明测试用例的测试目的,对文档的易于理解性和工作交接的好处不言而喻,现代软件工程不可能只有一个人在做事情,项目与人员的变动也是在所难免的。在过程中留下足够的信息,可以在后续工作提高很多效率。5) 测试用例的易于维护性: 如果被测对象有所升级,测试用例的说明或者脚本是不是容易维护6) 易执行: 一个测试点一条用例,用例的执行步骤,预期结果明确。可读性: 用词规范,字体版面一致,清晰确切;保证他人能容易阅读,使用;7) 复用性: 复用性高,复用模块只需稍作修改即能使用;利用率高,回归测试时,需求改动不大时用例稍作修改即能使用。8) 自动化:用例书写一开始就考虑,在需要进行自动化测试时能很快转变。3. 测试中都写了哪些测试文档1) 测试计划;为了描述软件特性的测试而编写的文档计划,为了规范化测试内容,测试需要用到的资源等。2) 测试用例;用于描述测试用例的具体细节工作,测试用例一般根据测试计划及测试策略来编写。3) 测试缺陷;描述测试过程中相关缺陷信息,让团队成员更好的了解测试缺陷类型。4) 测试报告;一份完整的描述测试结果的报告,对测试结果进行统计分析及总结。4. 一个项目的流程一个完整的项目流程是:项目启动、项目计划、项目实施、项目收尾、项目维护、项目管理。1) 需求分析阶段:在拿到一个项目之后首先要知道客户需要的是什么,在这个阶段要完成需求分析设计书和基础的框架2) 系统设计阶段:要对项目整体进行设计,在这个阶段要设计出数据库,完成类图和序列图3) 编码阶段:搭框架、填代码4) 测试阶段:单体测试(单体测试在编码的过程中就可以进行,每完成一个类就进行一个测试,确认这个类一定是正确的);总体测试(在所有的代码完成之后进行测试。在这个阶段最重要的是用户体验,要站在用户的角度上进行测试)5. 测试的流程1) 需求评审2) 设计评审3) 制定测试计划4) 测试用例评审5) 冒烟测试6) 一轮二轮测试执行7) 上线前的回归测试8) 最后会进行项目总结作*帮1. http协议的方法 get post还有什么1) GET 请求指定的页面信息,并返回实体主体。2) POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。3) HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。4) PUT 从客户端向服务器传送的数据取代指定的文档的内容。5) DELETE 请求服务器删除指定的页面。6) TRACE 回显服务器收到的请求,主要用于测试或诊断。7) CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。8) OPTIONS 允许客户端查看服务器的性能。2. get和post的区别1) get是从服务器上获取数据,post是向服务器传送数据。2) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。3) 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。4) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。3. 前端框架怎么搭建的?常用的web服务器有两个,微软的信息服务器IIS,Apache的Tomcat1) 下载Tomcat.先将其解压2) 里面有很多文件,例如BIN文件夹放置各种脚本文件,里面的startup.bat是启动服务,shutdown用于停止服务3) conf是主要存放配置文件,lib存放jar包,webapps主要是用于我们发布的web程序,work主要存放tomcat工作是产生的文件4) Tomcat默认的端口号是8080,如果此端口被占用要进行修改,只需要进入conf文件夹,打开server.xml,在里面的第67行,将8080数字进行修改就可以了5) 启动Tomcat服务,只需要双击bin文件夹的start.bat文件6) 验证Tomcat是否真正启动完成在浏览器地址栏输入:http://localhost:8080/会进入一个Tomcat页面,这就证明启动Tomcat成功,其中8080是设置的端口号,我们也可以根据自己设置的端口号修改7) 关闭Tomcat,只需要双击shutdown.bat8) 部署网站到Tomcat,只需要将我们 做好网站的这个目录复制到webapps文件夹,然后启动Tomcat服务,访问http://localhost:8080/加目录名,例如我放入了个books目录,则访问http://localhost:8080/books即可4. 数据是怎么交互的数据从页面提交到contoller层,数据从controler层传送到jsp页面来显示。简单点说,就是前端技术与后端技术沟通,根据业务定义交互接口,交互接口的的形式可能包含:1) 后端将数据输出到HTML页面,在JS控制逻辑中需要访问数据时可以从HTML中取得,如下:// 将后台数据输出到html中,可以通过获取div的innerHTML获取数据<div id="div1">content............</div>// 将动态数据输出到input中<input type="hidden" value="content" />// 定义一个window下的全局变量,在JS需要使用时,可以随时取得window.Configs = {username: 'xxxx'};2) 还有一种,使用cookie进行数据的交互,但是cookie的限制就比较多,所以应用场景会受到限制。定义前后端请求的接口,一般是AJAX接口,如果存在跨域问题或一些特殊的业务场景,可能也会使用JSONP或者其他方式,总之,不论是何种方式请求,目的都是动态的请求数据,然后根据返回数据刷新页面内容。返回数据的格式现在主流是使用JSON格式,但是也不排除一些特殊的业务场景需要是使用XML或其他格式的数据。3) 总之,前端后端交互无非就是,前端如何取到后台数据,然后控制页面的显示与操作,使用什么方式获取数据其实无所谓,目的只有一个就是获取到数据用于展示。5. 项目中socket协议怎么通信的6. socket协议怎么通信的1) socket即为套接字,在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一的标识网络通讯中的一个进程,“IP地址+TCP或UDP端口号”就为socket。2) 在TCP协议中,建立连接的两个进程(客户端和服务器)各自有一个socket来标识,则这两个socket组成的socket pair就唯一标识一个连接。3) socket本身就有“插座”的意思,因此用来形容网络连接的一对一关系,为TCP/IP协议设计的应用层编程接口称为socket API。7. 自动化selenium浏览器的兼容性如何测试1) HTML、xHTML、jQUERY、CSS、JS、AJAX的验证2) SSL证书的验证3) HTML字符的编码和日期格式4) 在不同的屏幕分辨率下,呈现响应式应用5) 不同浏览器中布局的一致性,包括:字体样式、色彩渲染、导航、客户端表单验证、缩放功能等6) 各种效果与功能,包括:动画、链接、插件、脚本等7) 持续迭代测试和开发8. UI层是什么UI层主要功能是显示数据和接受传输用户的数据,可以在为网站的系统运行提供交互式操作界面,表示层的应用方式比较常见,例如Windows窗体和Web页面。在项目中增加WinForm应用程序,结构如下添加引用最佳答案:B/S架构是一种架构。Browser/Client,也就是浏览器/客户端。三层架构可以看成一个方法。做B/S架构的软件可以用三层架构,也可以用多层架构,也可以用单层。9. selenium的框架原理Selenium 是目前主流的用于Web应用程序测试的工具,可以直接运行在浏览器中,就像真正的用户在操作一样。Selenium IDE是一个用于构建脚本的初级工具,其实是FireFox的一个插件,拥有一个易于使用的界面。它拥有记录功能,能够记录用户执行的操作,并可以导出为可重复使用的脚本。10. TCP/IP协议怎么理解,几层?分别是什么TCP/IP传输协议是一个四层的体系结构,应用层、传输层、网络层和数据链路层。1) TCP/IP协议是Internet最基本的协议2) 应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;3) 传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;4) 网络访问层,也叫网路接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。11. UDP和TCP的区别1) 基于TCP连接与UDP无连接;2) 对系统资源的要求(TCP较多,UDP少);3) UDP程序结构较简单;4) TCP流模式与UDP数据报模式 ;5) TCP保证数据正确性,UDP可能丢包;6) TCP保证数据顺序,UDP不保证。12. 三次握手怎么理解TCP三次握手过程第一次握手:主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B,向主机B 请求建立连接,通过这个数据段, 主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我。第二次握手:主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用那个序列号作为起始数据段来回应我第三次握手:主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了,这样3次握手就完成了,主机A和主机B 就可以传输数据了。3次握手的特点没有应用层的数据 ,SYN这个标志位只有在TCP建立连接时才会被置1 ,握手完成后SYN标志位被置0。TCP建立连接要进行3次握手,而断开连接要进行4次第一次: 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求 ;第二次: 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1;第三次: 由B 端再提出反方向的关闭请求,将FIN置1 ;第四次: 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.。由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式, 大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互, 为数据正式传输打下了可靠的基础。13. Http协议怎么理解1) HTTP协议是无状态的就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。2) 多次HTTP请求在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。3) 基于TCP协议HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。现在使用的版本当中是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。14. 使用的Linux虚拟机是什么redhat ubuntu15. redis数据库的使用Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。启动sudo service redis start停⽌sudo service redis sto重启sudo service redis restart启*星辰1. wireshark怎么抓包,看哪些内容,举个例子1) 打开wireshark2) 选择菜单栏上Capture -> Option,勾选WLAN网卡(这里需要根据各自电脑网卡使用情况选择,简单的办法可以看使用的IP对应的网卡)。点击Start。启动抓包3) wireshark启动后,wireshark处于抓包状态中。4) 操作完成后相关数据包就抓取到了。为避免其他无用的数据包影响分析,可以通过在过滤栏设置过滤条件进行数据包列表过滤2. fiddler怎么抓包,看哪些内容,举个例子;1) 首先需要你打开Fiddler, 清空抓到的其他包,方便我们观察。2) 随便在网页中打开一个网址,这时Fiddler就会抓取到网络请求了。3) 标示框部分是网络请求的地址,右侧部分会有请求的详细内容---头文件 ,返回文本,cookies 等等。4) 软件也可以锁定某个窗口,抓取指定的数据包。将图片中标示的准星拖动到右侧浏览器窗口上,就可以单独抓取浏览器的数据包3. fiddler响应代码的含义,200,404,500含义区别200 - 确定。客户端请求已成功302 - 临时移动转移,请求的内容已临时移动新的位置404 - 未找到文件或目录500 - 服务器内部错误响应码大全1.该类型状态码表示接收到请求并且继续处理100:客户端必须继续发出请求。101:客户端要求服务器根据请求转换HTTP协议版本。2.该类型状态码表示动作被成功接收、理解和接受。200,表明该请求被成功地完成,所请求的资源发送到客户端。201,提示知道新文件的URL。202,接受并处理,但处理未完成。203,返回信息不确定或不完整。204,收到请求,但返回信息为空.205,服务器完成了请求,用户必须复位当前已经浏览过的文件。206,服务器已经完成了部分用户的GET请求。3.该类型状态码表示为了完成指定的动作,必须接受进一步处理。300,请求的资源可在多处获得。301,本网页被永久性转移到另一个URL。302,请求的网页被重定向到新的地址。303,建议用户访问其他URL或访问方式。304,自从上次请求后,请求的网页未修改过。305,请求的资源必须从服务器指定的地址获得。306,前一版本HTTP中使用的代码,现已不再使用。307,声明请求的资源临时性删除。4.该类型状态码表示请求包含错误语法或不能正确执行。400,客户端请求有语法错误。401,请求未经授权。402,保留有效ChargeTo头响应。403,禁止访问,服务器收到请求,但拒绝提供服务。404,可连接服务器,但服务器无法取得所请求的网页,请求资源不存在。405,用户在Request-Line字段定义的方法不被允许。406,根据用户发送的Accept,请求资源不可访问。407,类似401,用户必须首先在代理服务器上取得授权。408,客户端没有在用户指定的时间内完成请求。409,对当前资源状态,请求不能完成。410,服务器上不再有此资源。411,服务器拒绝用户定义的Content-Length属性请求。412,一个或多个请求头字段在当前请求中错误。413,请求的资源大于服务器允许的大小。414,请求的资源URL长于服务器允许的长度。415,请求资源不支持请求项目格式。416,请求中包含Range请求头字段,在当前请求资源范围内没有range指示值。417,服务器不满足请求Expect头字段指定的期望值。5.该类型状态码表示服务器或网关错误。500,服务器错误。501,服务器不支持请求的功能。502,网关错误。503,无法获得服务。504,网关超时。505,不支持的http版本。4. 如何使用selenium定位动态对象一般看到元素属性里有拼接一串数字的,就很有可能是动态的。想要分辨,刷新一下浏览器再看该元素,属性值中的数字串改变了,即是动态属性了1) 根据其他属性定位:如果有其他固定属性,最先考虑的当然是根据元素的其他属性来定位2) 根据相对关系定位:根据其附近的父节点、子节点、兄弟节点定位,关于这方面,微信之前有文章做介绍。3) 根据DOM顺序index定位:这个很简单,找到该元素在主文档或某级父节点中的index,然后根据index可轻松定位,不过这种方式可能不够稳定,如果可以,还是用其他的方法定位更加合适。4) 根据部分元素属性定位:xpath中提供了三个非常好的方法来为我们定位部分属性值:driver.find_element_by_xpath("//div[contains(@id, 'btn-attention')]")driver.find_element_by_xpath("//div[starts-with(@id, 'btn-attention')]")driver.find_element_by_xpath("//div[ends-with(@id, 'btn-attention')]")5. selenium定位的方法1) find_element_by_id()2) find_element_by_name()3) find_element_by_class_name()4) find_element_by_tag_name()5) find_element_by_link_text()6) find_element_by_partial_link_text()7) find_element_by_xpath()8) find_element_by_css_selector()6. 手机转账的用例1) 转账按钮是否可用2) 转账成功后对方账户是否到账3) 工作日转账4) 节假日转账5) 24小时到账6) 3天到账7) 是否会转错账户



