测试面试点

测试面试题

 

三、问答题

1、在您以往的工作中,一条BUG记录都包含了哪些内容?如何提交高质量的bug记录?

 

答:a)包含内容:bug编号,bug标题,bug模块、具体描述,bug等级,重现步骤,bug出现的版本号、测试环境,指派给的人,修复等级,bug状态、开发接口人员及版本号,相关附件等

  1. 每条bug里只包括一个bug、不可重现的bug也要报告、描述要简明准确、根据bug问题的图片捕捉。

 

2、测试分为那几个阶段?

 

答:开发阶段:单元测试 -> 集成测试时 -> 系统测试 -> 验收测试

单元测试:针对每个单元的测试,以确保每个模块能正常工作为目标

集成测试:对已经测试过的模块进行组装,进行集成测试。目的就是在于检验与软件设计相关的程序结构问题。

系统测试:检验软件产品能够与系统的其他部分(比如:硬件、数据库及操作人员)协调工作。

验收测试:检验软件产品质量的最后一道工序,主要突出用户的作用,同时软件开发人员也有一定程度的参与。

 

  1. 了解哪些测试工具?你是用过和知道的测试工具有哪些?各有什么用途?

 

Bug管理:禅道、QC(收费)

接口测试:postman、Jmeter、soapui

单元测试:JUnit

自动化测试:Selenium

性能测试:Jmeter 、LoadRunner

管理linux系统:xshell、xftp

抓包工具:谷歌自带、

ixia:网络收发、网络流量测试工具

SmartBits可测试路由器性能和防火墙抗攻击能力
Fluke进行布线验收测试
Chariot可进行特定应用性能测试和链路稳定性测试
LoadRunner是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试.
WinRuner是企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行,自动执行重复任务并优化测试工作,从而缩短测试时间。
局域网络测试工具——QCheck

 

4、先有一个程序,页面提供3个输入框a、b、c,一个输出框d,根据a、b、c的输入判断数据层是否只能组成一个三角形(三角形两边之和大于第三边),在d中输出:是,否

 

答:等价类划分法:有效等价类:a、b、c的值都大于0 、a+b>c且b+c>a且a+c>b

无效等价类:a/b/c为0或负数、a/b/c为空、a/b/c为非数字、a+b<=c b+c<=a a+b<=b

 

5、一个完整的测试方案包含哪些要素?

 

写明将要如何进行测试的文档,包括测试计划、测试环境、测试数据、工具、测试方法、风险依赖等方面。

备注:测试方案和测试计划的区别:

组织方式:

 

测试计划

测试方案

组织方式

管理文件 -管理者角度

技术文件---技术角度

目的

强调“做什么”

强调“怎么做”

内容

组织架构、工作任务分配、工作量估计、人力物力资源的分配、进度的安排、风险的估计和规避、各任务通过准则等

测试需求的细化、测试组网图的设计、自动化测试框架的设计、测试数据和测试脚本的设计、测试用例设计的原则等

 

6、查看接口的工具有哪些?说出一个工具的操作

 

答:jmeter与postman都支持

jmeter的用法:新建一个线程组,添加http类型的请求→填上接口地址和数据→添加查看结果树→进行运行→查看结果、进行分析

Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入

 

7、如何定位BUG,是前端还是后端的问题,用什么工具,还是利用别的?

 

答:前端是主要体现在页面的视觉效果以及交互设计上。比如说一个网站的页面风格、页面跳转等,最简单的例子就是一个注册界面:前端设计界面风格,约束输入的字符类型、长度以及合法性校验等,不涉及到与数据库之间的信息交流。

 

后台,则侧重于更深层面的东西,关于逻辑,关于数据,关于平台的稳定性与性能。后台主要负责实现具体的功能,举个例子,还是那个注册界面,前端写好了界面,规定了你能输入哪些数据,不能输入哪些数据,而后台则会把你输入的信息与数据库进行比对,如果是新用户,则顺势在数据库中插入一条信息。

关于数据有些是前台校验,有些后台校验,有些前后台都检验。

 

工具:fiddler/谷歌F12 、或检查标签的排查工具idea.exe

备注:判断前端问题的方法

F12, 打开错误控制台console

区分前后台交互:查看网络请求

a) Html中如果有链接,有相应的情况下,基本可以定位到是属于前端的问题

b) 如果为空,或者有出现error错误信息,我们就可以定位到属于后台开发的问题

TMS对应的VM模板,出现的一些截断控制,转换功能都属于前端的问题

后端判断bug的问题方法

(1)查看报错日志。查看报错日志,通过日志分析,需要有一定的经验,并且有一定的代码基础,才能更好地定位问题。

(2)查看数据库的数据。了解所测功能的数据表结构,测试过程中,查看数据库的数据,确认数据的正确性。

(3)查看缓存(如Memcache、apc、redis等缓存)是否正确

前后bug例子:

前端: 

在console中查看报错信息,一般浏览器都会显示报错的jS ,对于出错的js可以在Sources下查看对应报错的资源文件,

  1. JS语法错误
  2. 页面元素之类的错误、图片尺寸、图片分辨率(需要产品经理确认)

3.光标的几种形态 (输入框_工字形光标、链接or按钮_食指竖起的白手套、白色箭头)

4.按钮点击没反应、下拉框层级关系没有动态变化、输入框校验(长度、非法字符)不严格

5.面包屑导航条:不准确、不能跳转、跳转404错误、提示语:不友好,不符合用户场景

6.图片加载不出来:如果是静态图片就是打包的时候少了文件、如果是动态图片就是后台返回的数据有问题

7.前端写死了数据,没有动态读取后台返回的数据,

8.后台接口应答异常码,前端要有合理提示语

9.后台接口无应答or应答超时,前端要有超时提示语,

10.同一个接口,用户正常操作的时候有没有必要同时发送N个?

11.网络异常的时候,多次刷新页面,接口顺序怎么控制,

12.多个接口(例如:A接口必须在B接口前面),导致网络延迟的时候,顺序有点乱了,有偶现BUG

1.返回的报文不符合接口文档:参数是否区分大小写、字母拼写错误、INT或者String与接口文档不一致(INT不需要“”引号,string需要“”引号)

2.返回的值前端识别不了,协商后,后台配合扩充字段满足前端需求

3.应该返回0条记录的,但是返回了全部。应该返回1条记录的,但是返回了多条记录

4.应该返回有序的数据,但是返回了无序的数据

5.分页结果不正确(每页条数,第1页,第2页,第3页)

 

8.假设京东有一个web API: http://p.jd.com?p1=90&p0=100,输入打折价p1和原价p0,返回折扣信息0.9,请设计测试用例进行测试。

 

因为无法得知接口实现细节,所以只能进行黑盒测试。这个接口有两个输入参数p1和p0,一个返回参数折扣信息。

首先在正常工作情况下,采用等价类划分法测试,分为p1小于p0,p1等于p0, p1大于p0:

1. p1和p0都取大于0的数值,而且p1小于p0的值,正常结果返回p1/p0的值;

2. p1和p0都取大于0的数值,而且p1等于p0的值,正常结果返回1或者不打折的信息;

3. p1和p0都取大于0的数值,而且p1大于p0的值,正常结果返回p1/p0或者输入错误或者涨价了的信息;

然后采用边界值分析法,考虑输入参数的特殊情况:

4. 当p1小于0或p0小于0时,正常返回输入错误的信息;

5. 当p1等于0并且p0大于0时,正常返回当前免费的信息;

6. 当p1等于0并且p0等于0时,正常返回一直免费的信息;

7. 当p1大于0并且p0等于0时,正常返回涨价了的信息;

然后进行异常测试,考虑输入参数非法的情况:

8. 当p1或者p0输入不是整数,而是浮点数时,正常处理逻辑应该和都是整数的情况一致;

9. 当p1或者p0输入不是整数也不是浮点数,而是字符或字符串等其他类型时,正常结果应该是报输入非法错误;

然后进行安全测试

  1. 考虑支不支持https,使用https://p.jd.com?p1=90&p0=100,如果支持的话测试一遍上述的测试用例;

 

9.以windows对文件的复制粘帖功能为例,尽可能多地写出测试思路。

 

1. 基本功能测试: 文件的复制粘贴功能,首先关键字“文件”,文件有不同的分类(图片、视频、音频、文档等),每个分类又有不同的类型(文档类型:txt doc execl pdf等),每个文件又有不同的大小,而且文件还有很多权限,是不是隐藏,是不是只是管理员可执行。选择不同分类的不同类型,不同大小的文件做测试资源。比如:文档类型里面txt文件可以分为 1.KB的txt文件、1MB的txt文件、1GB的txt文件。。。。下一个关键字 复制粘贴 复制有多种方式 右击选择、Ctrl+C、 拖动复制,对应粘贴也有各种方式。然后从哪复制,粘贴到哪,比如 可以有本机硬盘、移动硬盘、优盘、内存卡、软盘、光盘、连接手机存储,复制到网络地址等等。复制粘贴后文件是不是可用,文件权限是不是有变化。复制过去容量不够怎么处理?复制过后有重名文件怎么处理?复制过程中取消、关机、拔优盘怎么处理?复制过程能不能执行文件?

2.性能测试:复制粘贴功能性能怎么样?复制文件的速度可不可以接受?同时复制多个文件是不是可以完成?复制文件过程中占用CPU资源大不大,耗电量大不大?

3.兼容性测试 Windows XP, Windows 7, Windows 8 , Windows 8.1, Windows 10等各种windos版本是不是都支持这个功能。

4.交互测试; 复制粘贴文件时,使用windows存储的其他功能是否有影响?比如播放本地的音频、视频、等同时复制文件是不是有影响。一边复制,一边粘贴是不是有影响。

5.界面测试:复制粘贴时进度条的显示界面是否与系统的设计风格一致?显示界面是否有文字性错误?显示界面的布是否合理?界面上的按钮是否可用(如:是否可以选择中止?是否可用最小化?)

6.本地化测试:不同语言环境下的显示正常

7.辅助性测试:高对比度下能否显示正常

 

  1. 已知String convert(String page)作用是将WEB页转码为方便移动设备查看的页面,为了确保转码的正确性,请设计相应测试策略。

 

(1)使用不同的移动设备查看转换后的页面,检查内容是否正确;

  (2)输入正确的网址,进行转码,检查内容是否正确;

  (3)输入错误的网址,进行转码,系统是否有相应的提示;

  (4)测试转码的速度,或者系统的相应时间;

  (5)测试转码后,页面显示是否美观;

  (6)输入的web的page为空,是否抛出异常;

 12.测试淘宝站内的搜索系统

 

  1. 功能方面,

输入关键字,查看: 返回结果是否准确,返回的文本长度需限制

结果显示:标题,卖家,销售量。。。。单行/多行,是否有图片。。. 

结果排序:价格 销量 评价 综合。。。

返回结果庞大时,限制第一页的现实量,需支持翻页

多选项搜索:关键字  品牌 产地 价格区间  是否天猫 是否全国购。。 

是否支持模糊搜索,支持通配符的查询 

网速慢的情况下的搜索

搜索结果为空的情况

未登录情况和登录情况下的搜索(登录情况下 存储用户搜索的关键字/搜索习惯)


2.性能方面,

可利用测试工具或各种测试手段考虑功能在各方面的表现,具体:
压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)
负载测试:看极限能承载多大的用户量同时正常使用
稳定性测试:常规压力下能保持多久持续稳定运行
内存测试:有无内存泄漏现象
大数据量测试:如模拟从庞大的海量数据中搜索结果、或搜索出海量的结果后列示出来,看表现如何等等。

4.兼容性方面,

跨平台、多语言等多样性环境组合情况下测试使用的正常性,具体:
WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用
IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用
SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试
简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试
IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试
与各相关的监控程序的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用

5.安全性方面,往往容易被忽视的环节,具体:
被删除、加密、授权的数据,不允许被查出来的,是否有安全控制设计;
录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生漏洞,如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。
通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;
对涉及国家安全、法律禁止的内容是否进行了相关的过滤和控制;

6.异常性测试,各种破坏性的操作的影响测试,具体:
查询过程中断网、关机
查询过程中强行中断关闭页面
查询过程中强行杀死相关进程等

  1. 编写测试用例有哪些方法

 

答:等价类、边界值、错误推测法、场景法,因果图/判定表、正交排列法

 

13、Beta测试与alpha测试的区别?

 

alpha测试是公司内部在模拟实际操作环境下进行的一种验收,公司内部会组织内部员工、也仍然需要需用的参与,alpha测试不能由程序员或者测试完成。

Beta测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试,beta测试不能由程序员或测试员完成。

 

  1. 上家公司有多少测试,你们是怎么分配工作的?

 

测试3人,老大负责分配我们的任务,每个人负责对应的模块或者是不同的客户端,完成自己的一端时间的任务就行。

 

  1. 为何从上家辞职?

 

1、上家公司比较清闲,不利于我的长期发展,所以离职了

2、上家公司的业务比较少,基本上是事情比较少的情况,年轻人要多奋斗下,

所以我选择离职,去更加忙一点的公司。(2选1)

 

  1. 能不能说下你们公司的项目流程或者说介绍下你们公司的工作流程?在每个阶段的输出有哪些?

 

先会召开需求分析会议,参加人员有产品、开发和测试,主要是探讨需求主要的一些功能点;

然后开发就排期进行开发,主管开始编写测试计划,对我们进行任务分配。

我们参考需求规格说明书及原型图编写测试用例,

写完之后会进行用例评审,有评审修改的就修改整理形成最终的用例版本;

开发人员版本编译完成后,我们会先进行预测(冒烟),主要对主功能业务进行测试,如果主业务流程不通过,直接返回给开发进行修改。

预测通过(冒烟),依据测试用例进行系统测试。测试过程中,提交bug,跟踪bug,进行回归测试直至不存在严重bug,满足用户需求,

测试完后编写测试报告;产品发布上线后,关注web是否正常运行,要进行常规的维护性测试。

 

  1. 写过测试计划或者是测试报告么?测试计划包括哪些主要步骤和信息?测试报告包括哪些内容?测试报告交付文档有哪些?

 

1、测试计划包括:项目信息、参与文档、测试范围、测试策略、测试时间人员安排、测试环境;

  1. 测试报告包含:项目背景、参考资料、测试范围、测试结果及缺陷分析、测试结论与建议,风险评估;

3、交付文档:主要是测试用例、测试计划、测试报告。

  1. 对于重现率不高的BUG怎么处理?

 

先在出现问题的环境上尽量重现,保持浏览器环境、出现问题的特定账号等的一致,多次尝试仍然不能重现,也要记录到bug平台,将出现问题的特征步骤尽量描述清楚,附带问题截图及日志截图、注明偶现

如果项目时间允许,bug等级高,需要开发协助重现;如果时间不允许,记录到BUG平台后续在跟进。

 

  1. bug的生命周期?

 

Bug的生命周期,就是一个bug被发现到这个bug被关闭的过程,生命周期中一般缺陷状态:新建、指派、已解决、待验、关闭

如果待验证的bug在验证是没有解决好,我们需要重新打开(激活)→指派→已解决→待验,循环这个过程,中间其他状态:重新打开、拒绝、延期

 

  1. 当你提了一个bug,开发认为这不是bug,怎么处理?

 

首先确认开发环境是否跟自己测试环境一致,

确认在测试环境能重现,如果确认是缺陷跟开发保持有效沟通,

如果是级别较低的建议性bug,可以先记录到bug平台,先保留沟通。

如果是bug级别较高的问题,对应需求文档的预期结果跟开发说明,更有说服力;耐心讲解BUG的危害,不行就找产品确认,确实是BUG注明情况并再次指派给开发

 

  1. 有没有你印象深刻的bug,bug的原因?

 

身份证末尾X结尾的, 实名认证显示成功,但是在后面提现的时候,会报错,后面发现是保存到库里面的,都是小写X的,导致提现这边不识别,印象深刻的原因是因为花了一定的时间去找到这个bug,并且自己尝试定位到原因,所以印象深刻。

回去再多哦想想

 

  1. 你对加班的看法?

 

如果公司项目要求需要加班,我会积极参与,我们之前公司也有加班,所以这种情况我了解。也能完成好工作。

  1. 如何识别系统瓶颈?

 

从TPS指标分析,TPS即系统单位时间内处理事务的数量。当前随着用户数的增长期系统每秒可处理的事务数是否也会增长。

 

  1. think_time的作用是什么?

 

  1. 降低当前运行时压力,环节对应用服务器所造成的压力;
  2. 模拟真实生产用户操作,考察对服务器所造成的影响。

 

  1. 性能测试开始的前提是什么?

 

被测系统的正常业务流程通过,即集成测试通过后。性能测试前提是客户对性能有明确要求,产品中所使用协议为性能测试工具所支持

 

26.进行参数化的目的是什么?

A、减少脚本的大小;B、便于脚本的维护,从而更加真实的模拟生产环境的数据。

1. 模拟真实情况,比如各种账号  2. 某些数据在真实环境中不可同时使用,否则会造成死锁,比如有些系统设定同一个用户只能在一次通讯中交易  3. 如果总是使用相同数据,某些服务器或者数据库有缓存机制,第一次跑可能慢一点,后面会大大加快响应速度,这样就无法测试出真实的系统情况

 

27.容量测试方法中为什么要以逐步递增的方式进行?

虚拟用户数随着负载时间的延长而增加,可以帮助确定系统响应时间减慢的准确时间以及准确的用户数。

 

  1. 假设在测试过程中某些事务的响应时间过长,但分析应用服务、数据库以及网络都属于正常现象,问题可能出现的原因有哪些?

 

A、LoadRunner客户机器是否已无法承载当前运行压力导致LoadRunner无法及时获取从服务端返回的信息;

B、Tink_time是否已忽略;

C、确定当前被测系统架构,是否为在每次测试过程中清楚缓存所导致。

 

27.如何发现应用服务器的相关问题?

A、通过某些事务的运行,判断是否在应用代码层未进行调优导致事务响应事件过长;

B、通过实时监控工具(nmon等)监控分析:

a、系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;

b、在系统运行过程中其内存是否存在内存泄漏现象;

c、打开相应日志、分析在运行过程中是否存在交易报错并获取错误原因查看是否由于代码原因导致交易错误发生。

 

28.如何发现数据库的相关问题?

A、通过运行某些相应的已获取的SQL语句,判断是否由于数据库索引所导致的事务响应过长的问题发生。

B、通过实时监控工具(nmon等)监控分析:

a、系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;

b、在系统运行过程中其内存是否存在内存泄漏现象;

 

29.简述LoadRunner的工作原理?

 

 

答案:loadrunner会自动监控指定的URL或应用程序所发出的请求及服务器返回的响应,它做为一个第三方(Agent)监视客户端与服务器端的所有对话,然后把这些对话记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。

 

30.根据什么来编写的?如何保证用例的覆盖度?

测试用例编写和方法,工具,对业务需求的把握

参考答案:

我们是根据需求(需求说明书、之前的产品、同品、软件规范、经验值)

编写用例(UI、功能、兼容性、安全、性能、稳定性、易用性)

用到的方法(测试用例设计方法)。

如果把上述的点都考虑并测试到了,那么覆盖度就达到要求。需求评审后确定测试点

 工具:表格、Xmind思维导图、禅道

 

31.测试项目:电梯

需求测试:查看电梯使用说明书、安全说明书等

界面测试:查看电梯外观

 

功能测试:测试电梯能否实现正常的上升和下降功能.电梯的按钮是否都可以用;

电梯门的打开,关闭是否正常;报警装置是否可用,报警电话是否可用;

通风状况如何.突然停电时的情况;是否有手机信号;

比如说上升途中的响应。电梯本来在 1 楼,如果有人按 18 楼,那么电梯在上升到 5 楼的时候,有人按了 10 楼,这时候是否会在 10 楼先停下来;

电梯下降到 10 层时显示满员,此时若 8 层有人等待电梯,是否在 8 层停;

 

可靠性:门关上的一刹那出现障碍物,同时按关门和开门按钮,点击当前楼层号码,多次点

击同一楼层的号码等等;同时按上键和下键会怎样;

 

易用性:电梯的按钮的设计符合一般人使用的习惯吗.

用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

 

压力测试:看电梯的最大限度的承受重量.在负载过重时报警装置是否有提醒.在一定时间

内不断的让电梯上升,下降.最大负载下平稳运行的最长时间。

 

32.测试项目:杯子

需求测试: 查看杯子使用说明书

界面测试: 查看杯子外观

功能度:用水杯装水看漏不漏;水能不能被喝到

安全性:杯子有没有毒或细菌

可靠性:杯子从不同高度落下的损坏程度

可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用

兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等

易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

疲劳测试:将杯子盛上水(案例一)放 24 小时检查泄漏时间和情况;盛上汽油(案例二)

放 24 小时检查泄漏时间和情况等

压力测试:用根针并在针上面不断加重量,看压强多大时会穿透

跌落测试: 杯子加包装( 有填充物), 在多高的情况摔下不破损

震动测试: 杯子加包装( 有填充物), 六面震动, 检查产品是否能应对恶劣的铁路\ 公路\ 航

空运输

测试数据:测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、等价

类划分法、因果图法、错误推测法、边界值法等方法

期望输出:该期望输出需查阅国标、行标以及使用用户的需求

 

33.测试题目:桌子

 

需求测试:查看国家相关标准。

功能:桌子是办公,或者放置用的,首先考虑桌子的面积大小是否适度.

界面:桌子的版面是否平滑,桌子有没有凹凸不平的地方

安全:桌子肯定有它的支撑点,若支撑点不稳,容易摔坏物品,使用起来也不方便.

易用:桌子的移动性好不.它的重量是否合适

可靠性:将桌子推倒后,再检查桌子是否很容易被损坏.

性能:将很重的物品放在桌子上,看它最大承受的重量是多少...

 

34.测试题目:洗衣机

 

功能测试:该洗衣机是否能正常的洗衣服

需求测试:查看洗衣机的使用说明书和安全说明书等

性能测试:使用时用电量如何,是否满足用户需求

界面测试:洗衣机的外观是否满足客户的需求

易用测试: 该洗衣机是否容易操作

兼用性测试:该洗衣机除了能洗衣服以外还能洗别的吗

安全性测试:该洗衣机通电以后人接触以后是否有电

负载测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,

以此获得系统能提供的最大服务

压力测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,

以此获得系统能提供的最大服务级别的测试。

稳定性测试:加到一定的衣服然后过一段时间看洗衣机是否正常洗

 

35.支付测试场景简单总结一下测试的思路:

 

从金额上:包括正常金额的支付,最小值的支付,最大值的支付,错误金额的输入(包括超限的金额、格式错误的金额、不允许使用的货币等等);

从流程上:包括正常完成支付的流程,支付中断后继续支付的流程,支付中断后结束支付的流程,支付中断结束支付后再次支付的流程,单订单支付的流程,多订单合并支付的流程等等;

从使用的设备上:包括PC端的支付、笔记本电脑的支付、平板电脑的支付、手机端的支付等;

从支付接口上:包括POSE终端机支付、银行卡网银支付、支付宝支付、微信支付、手机支付等;

从产品容错性上:包括支付失败后如何补单或者退单、如何退款等;

从后台的账务处理上:成功订单的账务处理、失败订单的账务处理、退款订单的账务处理、差错账处理等等。

 

36.项目中碰到的需求问题,能够直接和客户沟通吗?

 

不能,我们需要将问题整理到一起,由项目经理和测试经理作为接口人和客户进行沟通;我们的需求是产品线提的,关于需求问题我们直接找产品线。

 

37.需求确定中不确定的需求怎么解决?

 

项目组内讨论解决,如果还是得不到解决,需要找用户确认

 

38.需求文档是谁编写的?

 

客户、产品线。

 

39.怎么进行需求测试?

 

会议讨论评审

 

40.什么是测试点,测试点包含哪些内容?

 

就是针对功能细分的点,我们写的测试点类似于测试用例,是说什么功能的什么情况。

 

41.测试方案是谁编写的?

 

有经验的测试工程师、分给谁谁写,自己写自己负责的那一部分,一般除了新员工都会写。

 

42.测试方案编写的输入条件是什么?

 

需求规格说明书,测试需求分析表

 

43.测试用例内容有哪些?

 

ID 、标题、 优先级、 预置条件 、操作步骤 、预期结果、 实际结果、测试人、测试时间。

 

44.什么是好的测试用例?

 

我觉得不遗漏的测试用例就是好的测试用例

45.测试用例的颗粒度划分?

 

颗粒度的大小就是用例的粗细程度,每个项目组的尺度应该有所不同吧!

 

46..测试用例为什么需要有优先级,有哪一些优先级?

 

因为在不同阶段执行的用例数目是不同的,用例对应的功能的重要程度也是不同的,我们用的是高中低三级。

 

47.你们以前一天能够编写多少条测试用例?

 

30条左右吧,没怎么统计过,大概是这个数,没怎么统计过。

 

48.你们项目一共有多少条测试用例?

 

500-------到2000,具体项目具体分析,和项目大小颗粒度大小都有关系。

 

49.高中低优先级的测试用例的比例占多少?

 

3:4:3 的比例吧!

 

50.测试用例需要哪些人来评审?

 

我们是项目组全体来评审的额,毕竟测试是保证软件质量的最后一个环节,测试用例是测试执行的依据,所以测试用例十分重要,项目组非常重视测试用例的评审,希望把漏测的降到最低,所以我们的测试用例是项目组全体成员来评审的

 

51.一个项目需要写多少测试用例怎么估算?

 

这个在需求分析之后根据测试点来评估的,我们的测试点写的很细,所以测试用例的数目几乎等于测试点的数目。

 

52.测试用例是谁写的?

 

测试人员。

 

53.不能发现BUG的测试用例不是好的测试用例吗?

 

我不这样认为,我觉得在执行之前,每个用例都可能发现缺陷,好的测试用例是一套完整的不遗漏的测试用例,是能够被其他的测试人员执行的测试用例。不能因为是否找到BUG来说明用例是否好。

 

54.为什么要进行交叉测试?

因为自己执行自己设计的用例,会按照设计用例的思路来执行用例,可能会忽略一些偶然或异常的情况,交叉执行可能会发现新的BUG,当然如果用例已经写得很细,颗粒度很小吗,输入输出写得很全面交叉执行的结果都会差不多,无论谁来执行结果都是一样的。

 

55.测试环境是谁搭建的?

 

我们老大、CMO/测试人员

 

56.你们测试版本实在哪获取的?

 

开发搞定之后提交到git上,我们去git上获取。

 

57.什么叫预测试,预测试是怎么进行的,预测试一般为多长时间?

 

预测试就是开放刚刚开发完成,测试环境刚搭建起来,这时我们要对系统的各种功能能不能跑通,业务流程能不能完成进行测试,就是冒烟测试,这就是转测试,我们转测试大概需要一天的时间。

 

58.你的测试职业发展是什么?

 

测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不断更新自己改正自己,做好测试任务。

 

59.你认为测试人员需要具备哪些素质

 

做测试应该要有一定的协调能力,因为测试人员经常要与开发接触处理一些问题,如果处理不好的话会引起一些冲突,这样的话工作上就会不好做。还有测试人员要有一定的耐心,有的时候做测试很枯燥乏味。除了耐心,测试人员不能放过每一个可能的错误。

 

60.你为什么能够做测试这行

 

虽然我的测试技术还不是很成熟,但是我觉得我还是可以胜任软件测试这个工作的,因为做软件测试不仅是要求技术好,还有有一定的沟通能力,耐心、细心等外在因素。综合起来看我认为我是胜任这个工作的。

 

61.测试的目的是什么?

 

测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。当然软件测试是不可能找出全部错误的。

 

62.测试分为哪几个阶段?

 

一般来说分为5个阶段:单元测试、集成测试、确认测试、系统测试、验收测试

63.单元测试的测试对象、目的、测试依据、测试方法?

 

测试对象是模块内部的程序错误,目的是消除局部模块逻辑和功能上的错误和缺陷。测试依据是模块的详细设计,测试方法是采用白盒测试。

 

64.怎样看待加班问题

 

 加班的话我没有太多意见,但是我还是觉得如果能够合理安排时间的话,不会有太多时候加班的。

 

65.结合你以前的学习和工作经验,你认为如何做好测试。

 

根据我以前的工作和学习经验,我认为做好工作首先要有一个良好的沟通,只有沟通无障碍了,才会有好的协作,才会有更好的效率,再一个就是技术一定要过关,做测试要有足够的耐心,和一个良好的工作习惯,不懂的就要问,实时与同事沟通这样的话才能做好测试工作。

 

66.selenium中如何判断元素是否存在?

 

isElementPresent

 

67.selenium中hidden或者是display = none的元素是否可以定位到?

 

不能

 

68.selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

 

添加元素智能等待时间 driver.implicitly_wait(30)

- try 方式进行id,name,clas,x path, css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种

-Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的。但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的。需要开发人员规范开发习惯,如给页面元素加上唯一的name,id等,这样就能大大地提高元素定位的准确性。当然如果开发人员开发不规范,我们在定位元素的时候尽量使用相对地址定位,这样能减少元素定位受页面变化的影响。只要我们元素定位准确,就能保证我的每一个操作符合我的预期

 

69.如何提高selenium脚本的执行速度?

 

Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程数等。所以不能单方面追求运行速度的,要确保稳定性,能稳定地实现回归测试才是关键。

我们可以从以下几个方面来提高速度:

 

一,减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们就可以直接通过网址来打开,减少不必要的操作。

二,中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的内容不影响我们测试,就设置超时时间,中断页面加载。

三,在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后中断等待也可以提高速度。

四,配置testNG实现多线程。在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,尽量设置多线程运行,提高执行速度。

 

70.用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?

 

time.sleep( )

-driver.implicitly_wait(30)

- 多用 try 捕捉,处理异常

-此时我们要分析出不稳定的原因,然后有针对性的去解决问题。主要有以下几个方面 :

一,网速问题:有的时候网页加载的比较慢,在程序执行的时候要操作的元素没有显示出来。这种情况比较常见,运行一次网速好的时候通过了,再运行一次,页面没有打开,就不通过了。为了提高稳定性,我们只能牺牲运行时间了,在经常检测失败的元素前加上等待时间,等要操作的元素出现之后再执行下面的操作。

二,Selelnium的原因:Selenium1.0和2.0还是有区别的,有些儿函数在2.0下运行确实有时而有效,时面无效。如果mouseover()函数,就是这种情况, 我们需要避免使用这类的函数。

三,多线程的时候,测试用例间相互影响。虽然多线程的时候运行速度比较快,但是如果用例之间的耦合性没有设计好,也会影响的,如果用例A先于用例B执行的时候,就会影响到用例B;反之则没有问题。这种情况,如果你的自动化测试工程打算多线程的时候,提前就要把测试用例测试的耦合度比较松,尽量没有任何关系,因为多线程的执行顺序是不受控制的。

 

71.你的自动化用例的执行策略是什么?

 

-自动化测试用例的执行策略是要看自动化测试的目的,通常有如下几种策略:

一,自动化测试用例是用来监控的,在此目的下,我们就把自动化测试用例设置成定时执行的,如果每五分钟或是一个小时执行一次,在jenkins上创建一个定时任务即可。

二,必须回归的用例。有些儿测试用例,如BVT测试用例,我们在公司产品任何变动上线之前都需要回归执行。那我们就把测试用例设置成触发式执行,在jenkins上将我们的自动化测试任务绑定到开发的build任务上。当开发人员在仿真环境上部代码的时候,我们的自动化测试用例就会被触发执行。

三,不需要经常执行的测试用例。像全量测试用例,我们没有必要一直回归执行,必竟还是有时间消耗的,有些非主要业务线也不需要时时回归。这类测试用例我们就采用人工执行,在jenkins创建一个任务,需要执行的时候人工去构建即可。

 

72.什么是持续集成?

持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。持续集成,最简单的形式是包括一个监控版本控制(SVN等等)变化的工具。当变化被发觉时,这个工具可以自动的编译并测试你的应用。

 

73.自动化测试的时候是不是需要连接数据库做数据校验?

 

 UI自动化不需要

- 接口测试会需要

 

74.id,name,class,xpath, cssselector这些属性,你最偏爱哪一种,为什么?

 

- css 、xpath 几乎所有的元素都可以定位到

 

75.如何去定位页面上动态加载的元素?

 

-触发动态加载元素的事件,直至动态元素出现,进行定位

 

76.如何去定位属性动态变化的元素?

 

- xpath或者css通过同级、父级、子级进行定位

 

77、点击链接以后,selenium是否会自动等待该页面加载完毕?

-

会的

 

78、webdriver可以用来做接口测试吗?

 

有难度,不推荐

 

79.get和post 的区别?(感觉可能答案不对)

 

第一点:

get重点在从服务器上获取资源,post重点在向服务器发送数据;
第二点:
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
第三点:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
第四点:
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
第五点:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。

 

 

80.公司内一直在使用的测试系统(B/S架构)突然不能访问了,需要你进行排查并恢复,说出你的检查方法

 

答:一、网站输入域名直接无法访问,网站之前还正常,突然就无法访问

1. 测试FTP是否正常可以登录,不能登录的直接问空间商那是空间商的问题直接联系他们。

2. 空间赠送的三级域名是否能够访问网站打开网站(空间都赠送三级域名),如果也不能访问应该是空间问题。

3. 在电脑的开始菜单运行中输入cmd,在弹出的黑框中输入:ping 你的域名;然后回车,如果看不到IP或IP地址与你的主机地址不符,则说明域名解析有误,是域名的问题得重新解析域名。

二、访问报404错误(无法找到该页)。说明是网站内容都正常是程序出现问题,看看程序是否完整。

三、访问网站出现MySQL Server Error 这个是数据库链接错误,查看数据库连接文件和数据库是不是错误。

四、访问网站出现500错误。

1. 请登录FTP查看是否多了异常文件或丢失文件,说明网站被侵入了,马上联系网站制作进行进行排查故障。

如果空间且FTP程序目录没有缺失文件或刚刚安装就出现500错误,请确认空间已开启scandir()函数,查看是不是禁止了这个函数。

 

 

81.我们公司的测试流程是这样子的:

 

1. 我们的产品经理会提前1天把需求文档发下来,给我们看,熟悉熟悉。一般第二天会开一个需求澄清会议,要对需求的理解达成一致,以及弄清楚模块与模块之间的关联,产品经理还会讲解一下测试的重点。澄清会议之后,我们测试就会开个小会,主要是进行人员的分配和测试模块的初步分工。

2. 接下来就是编写测试计划,这个是我们经理写的。我们测试人员,会根据经理分派的模块仔细研究和评估测试需要多少时间。然后会开一个测试计划评审会议。主要是明确分工,确定时间进度安排,明确测试策略,测试风险分析。

3. 下一步就是需求分析。我们一般会用xmind罗列测试点。然后一般会开一到两次评审,主要是为了集思广益,确保更全面的罗列出测试点。

4. 然后就是写测试用例。根据罗列的测试点,写测试用例。一般都会有两轮的测试用例评审。第一轮评审完,修改完成之后,还再做第二轮评审。有时候还要根据第二轮的情况,决定还做不做第三轮的评审。目的是为了查漏补缺,让测试用例更好的覆盖测试点。

5. 接下来,下一步就是执行测试用例了。当然,开发要给到我们一个UT(user test)报告,我们才会开始测试的。先做一个冒烟,把主体业务流程跑一遍,做个评估,没问题的话,就开始执行测试用例:发现bug,提交bug,回归测试,以及写测试报告。我们是用禅道这个工具来对bug进行管理的。对bug的管理也比较简单。一般我们的bug是直接提交给开发的,他们修复完成之后,直接重新指派给我们,我们就做回归测试,通过的话就关闭,不通过就继续修复。

6. 然后就是写测试报告。我们测试人员,就是自己把自己的测试情况做总结。把留档的证据截图、自己模块的测试情况(发现了多少bug,修复了多bug,还有哪些没修复的等等)发给经理,他会做一个汇总。等bug修复完成了,经理就会把报告出出来。

7. 产品上线:一般会在半夜一两点的时候进行。因为这样的话就不会对客户的使用造成影响了。

8. 最后,我们会做一个测试总结。总结一下这个项目测试的情况,有没有遇到什么问题,下次应该如何避免,怎么解决等等。

 

83.接口测试流程:

 

接口测试的流程跟功能测试的流程是类似的。

首先要根据接口文档,对请求参数进行测试点分析,罗列测试点(用xmind),开评审会议,根据测试点写测试用例,测试用例评审,然后是执行测试用例。因为我们公司是用的postman这个工具,所以我们的测试用例都是在postman工具上执行的:

在上面输入参数和查看返回值。然后的话,一样是要做测试报告,然后是产品上线以及测试总结。

接口测试与界面功能测试的区别,一个是接口测试它是没有界面输入数据的地方的,所有的数据输入都是在postman工具上执行的。另外一个就是,功能测试针对的是功能点的实现情况来测试的。接口测试的话,针对的是请求参数来测试。

 

84.性能测试流程:

 

1.接到需求,先把接口功能调通 参数化(常用的参数化方法),关联(正则表达式),检查点(我们要检查哪些),看需不需要集合,如果这个接口依赖上一个接口,那么这个需要用到参数的传递,看接口需不需要用到cookie session等,请求头等

2.设置并发数和循环次数,线程组和循环控制器都有循环次数,可以用时间来控制,报错怎么处理,并发数太多了,如果PC机性能不够好,分布式部署(负载均衡)

3.查询接口的测试,要考虑db中表的数据量,一般保证10W左右数据量,造10W数据的目的是看这个查询sql语句有没有性能问题,插入数据使用存储过程造数据

4.我们性能测试最重要的是看聚合报告,聚合报告有很多参数,我最主要的是关注平均响应时间

5.结果分析(聚合报告,图形报告),分析的是报告,要看哪些指标

 

85.属于性能分析,看哪些指标,怎么分析

 

看报告的同时我们还有看服务器的硬件资源使用情况,cpu 内存,磁盘读写,网络 nmon(收集服务器的资源使用情况) top free (实时查看的命令,使用这个命令要边压测边看)

如果超过85%,要分析是哪一进程占用资源比较多,把进程名给开发,告诉开发占用资源(具体是哪一个资源)很高,改完之后我们要再压测一次

 

并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存都没上去(说明服务器资源很空闲,

代表我们的请求在排队,说明的的连接数太少了,(3种情况:1.db连接数,2.httpd连接数太少(apache中间件),3.你的请求没有发送到服务器,这个

原因要么是你的pc性能不行,网络带宽不够))。响应时间长,可能是db连接池过小,导致线程等待时间长。

 

并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存/磁盘读写很大,很高,性能瓶颈出现在服务器硬件问题

要看哪一个进程使用硬件资源比较大,把进程名给开发,告诉开发占用资源(具体是哪一个资源)很高,开发分析下,如果开发分析不出来了,并发数往下调

看硬件资源使用率在合理的范围之内后,我们的并发数和响应时间是多少,如果客户一定要求200并发,开发也尽力了,经过多天的技术攻克,都搞不定了

只能和老板,或者客户说加硬件资源

 

并发量很大(200),TPS上不去(平均响应时间上不去),响应时间比较长,但是app服务器和db服务CPU/内存都没上去,查看过了,连接数都没问题(1.db连接数,2.httpd连接数)

排除PC机,网络,服务器资源都没问题,最终的可能,就是代码问题

 

86.性能总结

 

1.做第一次压测 要保存报告

2.做性能调优(肯定是出了问题,才做调优) 比以前的报告的数据要好,服务器资源没有问题,在合理范围,就可以了

3.并发数,看你们公司业务使用情况,一般一个单个接口做80-100个并发足够了 响应时间快的0.几秒就返回,慢一点的是1.几秒

服务器都有两台的,注意:上面所述的硬件资源使用情况都需要看两台服务器的

APP服务器,数据库服务器

APP要调用数据库服务器,数据库服务器肯定提供了通道,这个通道就叫做连接池

查看连接池mysql sql语句:

SELECT ds.session_id, 

ds.status, 

Db_name(dr.database_id) AS database_name, 

ds.login_name, 

ds.login_time, 

ds.host_name, 

dc.client_net_address, 

dc.client_tcp_port, 

ds.program_name, 

dr.cpu_time, 

dr.reads, 

dr.writes, 

dc.num_reads, 

dc.num_writes, 

ds.client_interface_name, 

ds.last_request_start_time, 

ds.last_request_end_time, 

dc.connect_time, 

dc.net_transport, 

dc.net_packet_size, 

dr.start_time, 

dr.status, 

dr.command, 

dr.blocking_session_id, 

dr.wait_type, 

dr.wait_time, 

dr.last_wait_type, 

dr.wait_resource, 

dr.open_transaction_count, 

dr.percent_complete, 

dr.granted_query_memory 

FROM Sys.dm_exec_requests dr WITH(nolock) 

RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock) 

ON dr.session_id = ds.session_id 

RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock) 

ON ds.session_id = dc.session_id 

WHERE ds.session_id > 50 

ORDER BY ds.program_name 

----用户连接数 

SELECT login_name, 

Count(0) user_count 

FROM Sys.dm_exec_requests dr WITH(nolock) 

RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock) 

ON dr.session_id = ds.session_id 

RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock) 

ON ds.session_id = dc.session_id 

WHERE ds.session_id > 50 

GROUP BY login_name 

ORDER BY user_count DESC

 

87. 请说出一个你以前参与项目,对你测试经验提升很高的,具体是哪方面?

 

  1. 请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

 

黑盒测试:把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。

白盒测试:把测试对象当成一个透明的盒子,允许测试人员利用程序内部逻辑结构及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。

单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。

集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。

系统测试:在所有都考虑的情况下,对系统进行测试。

验收测试:第三方进行的确认软件满足需求的测试。

 

  1. 您认为做好测试计划工作的关键是什么?

 

答:1. 明确测试的目标,增强测试计划的实用性

2. 坚持“5W”规则,明确内容与过程,'what''why''when''where''how'

3. 采用评审和更新机制,保证测试计划满足实际需求

4. 分别创建测试计划与测试详细规格、测试用例

 

  1. 你感兴趣的测试工作是什么,你想在哪方面有所发展?

 

个人里有4个会说是自动化测试,3个会说性能测试,2个会说是管理,一个会说是白盒测试。并希望提供相应培训。只有极少数人能够说出具体的思路和技术项。

 

  1. 问:你有看过哪一本测试书籍?哪些技术博客?哪些网站?

·

50%的人会说看过QTP的书(QTP的真正使用率已经快赶上诺基亚的使用率了!),并且没有真正在工作中使用过,然后就没有别的了。有少一半人最近几年一本技术书籍也没有看过。

 

  1. 为什么测试用例标题中要把测试点描述清楚?

 

判断是否满足覆盖率,以及方便交叉测试,及测试版本管理

 

 

 

 

 

1.测试工程师如何沟通

 

第一个话题

报 bug 的礼仪:

如果你委婉的说:嗨!哥们,你这个程序和预期结果不一致,你过来帮我看看是不是我使用的方法有问题,还是数据搞错了。他本能的会想,操,是不是出现 bug 了

 

第二个话题 

需求沟通问题: 一定弄明白需求

你如果比如说这个要写数据到 A 系统,这个写的点怎么写的,我不清楚,老司机,来带我飞一下(幽默点),这个别人就好说了是吧,沟通起来心情也好了。

 

第三个话题:

用例评审:

这个话题很简单,给别人指出缺点时候,不要他坦率,要委婉点,例如用例步骤不清楚,你应该说,美女,这个有点不太清晰,我怕后面的人不知道怎么执行,你补下好点,不然后面估计有点麻烦,因为你这是在找茬,在找茬,所有委婉点好

 

第四个话题-问问题:

很多新进去的人,有很多问题要问,记住,问之前不管什么,例如业务,我先操作一遍,遇到点记下来,例如,别人发给你一个案例,先自己分析下,别一看到就懵逼,自己先摸索下,执行到哪一步,卡主了,再去沟通,这个时候,你沟通时候应该要有技巧,例如,fiddler 抓包,你抓不到包,你应该沟通时候讲,我手机和电脑都在一个局域网,而且手机的的 wifi 手工代理也配置了了,我检查了一遍,ip 我是配置对的,就是抓不到,这个时候别就给你分析,那么应该是 fiddler 里面的配置有问题,他会告诉你问题出在哪一块。

 

2.一般进公司后干什么?

 

1.刚刚进公司,你不是大爷,你要主动去问,去要,要什么呢,第一天,你进公司你要你们所有测试需要的环境信息,把测试需要的环境搭好,什么xshell,navicat,接口jmeter工具等,前台地址,密码,数据库的用户名密码都要过来,把他们的总结业务文档,svn地址等都要过来。

2.第二天,如果没有搭好,继续,但是一般一天半就够了,然后就是熟悉业务,如果公司给你立马分配需求,记住,我们要把这个需求相关的业务总结文档,如果这个业务有以前用例,这次需求只是优化,那么也向老司机要过来这些资料,先操作一遍业务,再熟悉需求。

3.注意时间点,例如,你需求分析几天,测试几天,什么时候转测试等,到点要把工作完成,如果发现完不成的,要接到任务第二天和测试老大沟通,因为老大最痛恨的是,你接了干不完,到后面时间快完了才说,你耍我是不是,大家应该都有这个体会

4.如果你很厉害,你业务搞定了,需求搞定了,我们是不是没事做了,记住,把你需求,用例再看一遍,完善用例,精益求精,你一进公司接到的都是简单的业务,不是核心模块,你要赶紧把核心模块的业务熟悉了,还有你总有遗漏的地方,和低级错误的地方,排版好不好,语句通顺不,这个别人看了你的用例,能不能看懂等,实在不行,学习充电都要加下班,例如你开始进去要确定你后面主要负责哪一块,然后你在这一块赶紧充电,不忙也要忙的样子

5.做事要仔细认真,IT最多的就是文档,做任何文档,你要想清楚给哪些人看,排版,说辞等都要注意,任何事都注意细节,有些事,都是细节打败了你,因为测试基本功就是仔细,认真,注意细节,很多bug都是出在细节不注意的地方,很多领导注意细节,我记得我在公司时候,开会的时候,有个人从来不怎么发言,但是每次领导都会问他怎么看,有没有好的意见,好比狄仁杰问李元芳怎么看,但是你们想过没有,因为李元芳的稳重,做事仔细认真,每次探案能抓出很多细节,能够给狄仁杰带来很多利益,所有才重视他。希望你也能做你们公司的李元

6.对人要尊重,对人要感恩,态度要诚恳,踏实,也就是和睦相处,谦虚请教,踏实学习,你要自己每天问下自己,这些你今天做到了么,感恩就是,你问了老司机这么多问题,别人教了你这么多,别一瓶水都舍不得给,问老司机问题,他说了你一次,你要虚心接受,因为他没有义务教你,他的工资不是你发的,教会了你,饿死了我,所以教你,都是他对你的恩赐,不要记仇,如果别人教了你很多,应该请别人吃一顿,这个花不了几个钱,对于你后面的发展来说,那是九牛一毛。

 

 

 

一、输入框
1、字符型输入框:
(1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。
(2)长度检查:最小长度、最大长度、最小长度-1、最大长度+1、输入超工字符比如把整个文章拷贝过去。
(3)空格检查:输入的字符间有空格、字符前有空格、字符后有空格、字符前后有空格
(4)多行文本框输入:允许回车换行、保存后再显示能够保存输入的格式、仅输入回车换行,检查能否正确保存(若能,检查保存结果,若不能,查看是否有正常提示)、
(5) 安全性检查:输入特殊字符串(null,NULL, ,javascript,,,<html>,<td>)、 输入脚本函数(<script>alert("abc")</script>)、 doucment.write("abc")、<b>hello</b>)</span><br><strong><span style="color:#ff0000;"><strong>2、数值型输入框:</strong></span></strong><br><span style="color:#000000;">(1)边界值:最大值、最小值、最大值+1、最小值-1</span><br><span style="color:#000000;">(2)位数:最小位数、最大位数、最小位数-1最大位数+1、输入超长值、输入整数</span><br><span style="color:#000000;">(3) 异常值、特殊字符:输入空白(NULL)、空格或"~!@#$%^&*()_+{}|[]\:"<>?;',./?;:'-=等可能 导致系统错误的字符、禁止直接输入特殊字符时,尝试使用粘贴拷贝查看是否能正常提交、word中的特殊功能,通过剪贴板拷贝到输入框,分页符,分节符类似 公式的上下标等、数值的特殊符号如∑,㏒,㏑,∏,+,-等、</span><br><span style="color:#000000;">输入负整数、负小数、分数、输入字母或汉字、小数(小数前0点舍去的情况,多个小数点的情况)、首位为0的数字如01、02、科学计数法是否支持1.0E2、全角数字与半角数字、数字与字母混合、16进制,8进制数值、货币型输入(允许小数点后面几位)、</span><br><span style="color:#000000;">(4)安全性检查:不能直接输入就copy</span><br><strong><span style="color:#ff0000;"><strong>3、日期型输入框:</strong></span></strong><br><span style="color:#000000;">(1) 合法性检查:(输入0日、1日、32日)、月输入[1、3、5、7、8、10、12]、日输入[31]、月输入[4、6、9、11]、日输入[30] [31]、输入非闰年,月输入[2],日期输入[28、29]、输入闰年,月输入[2]、日期输入[29、30]、月输入[0、1、12、13]</span><br><span style="color:#000000;">(2)异常值、特殊字符:输入空白或NULL、输入~!@#¥%……&*(){}[]等可能导致系统错误的字符</span><br><span style="color:#000000;">(3)安全性检查:不能直接输入,就copy,是否数据检验出错?</span><br><strong><span style="color:#ff0000;"><strong>4、信息重复:</strong></span></strong></p> <p style="margin-left:0pt;"><span style="color:#000000;">在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.</span><br><strong><span style="color:#ff0000;"><strong>二、搜索功能</strong></span></strong><br><span style="color:#000000;">若查询条件为输入框,则参考输入框对应类型的测试方法</span><br><strong><span style="color:#ff0000;"><strong>1、功能实现:</strong></span></strong><br><span style="color:#000000;">(1)如果支持模糊查询,搜索名称中任意一个字符是否能搜索到</span><br><span style="color:#000000;">(2)比较长的名称是否能查到</span><br><span style="color:#000000;">(3)输入系统中不存在的与之匹配的条件</span><br><span style="color:#000000;">(4)用户进行查询操作时,一般情况是不进行查询条件的清空,除非需求特殊说明。</span><br><strong><span style="color:#ff0000;"><strong>2、组合测试:</strong></span></strong><br><span style="color:#000000;">(1)不同查询条件之间来回选择,是否出现页面错误(单选框和多选框最容易出错)</span><br><span style="color:#000000;">(2)测试多个查询条件时,要注意查询条件的组合测试,可能不同组合的测试会报错。</span><br><strong><span style="color:#ff0000;"><strong>三、添加、修改功能</strong></span></strong><br><span style="color:#000000;">1、特殊键:(1)是否支持Tab键 (2)是否支持回车键</span><br><span style="color:#000000;">2、提示信息:(1)不符合要求的地方是否有错误提示</span><br><span style="color:#000000;">3、唯一性:(1)字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段(字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性)</span><br><strong><span style="color:#ff0000;"><strong>4、数据 正确性:</strong></span></strong><br><span style="color:#000000;">(1)对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查想关联的数据是否得到更新。</span><br><span style="color:#000000;">(2)进行必填项检查(即是否给出提示以及提示后是否依然把数据存到数据库中;是否提示后出现页码错乱等)</span><br><span style="color:#000000;">(3)是否能够连续添加(针对特殊情况)</span><br><span style="color:#000000;">(4)在编辑的时候,注意编辑项的长度限制,有时在添加的时候有,在编辑的时候却没有(注意要添加和修改规则是否一致)</span><br><span style="color:#000000;">(5)对于有图片上传功能的编辑框,若不上传图片,查看编辑页面时是否显示有默认的图片,若上传图片,查看是否显示为上传图片</span><br><span style="color:#000000;">(6)修改后增加数据后,特别要注意查询页面的数据是否及时更新,特别是在首页时要注意数据的更新。</span><br><span style="color:#000000;">(7)提交数据时,连续多次点击,查看系统会不会连续增加几条相同的数据或报错。</span><br><span style="color:#000000;">(8)若结果列表中没有记录或者没选择某条记录,点击修改按钮,系统会抛异常。</span><br><strong><span style="color:#ff0000;"><strong>四、删除功能</strong></span></strong><br><span style="color:#000000;">1、特殊键:(1)是否支持Tab键 (2)是否支持回车键</span><br><span style="color:#000000;">2、提示信息:(1)不选择任何信息,直接点击删除按钮,是否有提示(2)删除某条信息时,应该有确认提示</span><br><span style="color:#000000;">3、 数据 实现:(1)是否能连续删除多个产品(2)当只有一条数据时,是否可以删除成功 (3)删除一条数据后,是否可以添加相同的数据(4)如系统支持批量删除,注意删除的信息是否正确 (5)如有全选,注意是否把所有的数据删除(6)删除数据时,要注意相应查询页面的数据是否及时更新 (7)如删除的数据与其他业务数据关联,要注意其关联性(如删除部门信息时,部门下游员工,则应该给出提示)(8)如果结果列表中没有记录或没有选择任何一条记录,点击删除按钮系统会报错。</span><br><span style="color:#000000;">如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试</span><br><span style="color:#000000;">单项功能测试(增加、修改、查询、删除)</span><br><span style="color:#000000;">增加——>增加——>增加 (连续增加测试)</span><br><span style="color:#000000;">增加——>删除</span><br><span style="color:#000000;">增加——>删除——>增加 (新增加的内容与删除内容一致)</span><br><span style="color:#000000;">增加——>修改——>删除</span><br><span style="color:#000000;">修改——>修改——>修改 (连续修改测试)</span><br><span style="color:#000000;">修改——>增加(新增加的内容与修改前内容一致)</span><br><span style="color:#000000;">修改——>删除</span><br><span style="color:#000000;">修改——>删除——>增加 (新增加的内容与删除内容一致)</span><br><span style="color:#000000;">删除——>删除——>删除 (连续删除测试)</span><br><strong><span style="color:#ff0000;"><strong>五、注册、登陆模块</strong></span></strong><br><strong><span style="color:#ff0000;"><strong>1、注册功能:</strong></span></strong><br><span style="color:#000000;">(1)注册时,设置密码为特殊版本号,检查登录时是否会报错</span><br><span style="color:#000000;">(2)注册成功后,页面应该以登陆状态跳转到首页或指定页面</span><br><span style="color:#000000;">(3)在注册信息中删除已输入的信息,检查是否可以注册成功。</span><br><strong><span style="color:#ff0000;"><strong>2、登陆 功能:</strong></span></strong><br><span style="color:#000000;">(1)输入正确的用户名和正确的密码</span><br><span style="color:#000000;">(2)输入正确的用户名和错误的密码</span><br><span style="color:#000000;">(3)输入错误的用户名和正确的密码</span><br><span style="color:#000000;">(4)输入错误的用户名和错误的密码</span><br><span style="color:#000000;">(5)不输入用户名和密码(均为空格)</span><br><span style="color:#000000;">(6)只输入用户名,密码为空</span><br><span style="color:#000000;">(7)用户名为空,只输入密码</span><br><span style="color:#000000;">(8)输入正确的用户名和密码,但是不区分大小写</span><br><span style="color:#000000;">(9)用户名和密码包括特殊字符</span><br><span style="color:#000000;">(10)用户名和密码输入超长值</span><br><span style="color:#000000;">(11)已删除的用户名和密码</span><br><span style="color:#000000;">(12)登录时,当页面刷新或重新输入数据时,验证码是否更新</span><br><strong><span style="color:#ff0000;"><strong>六、上传图片测试</strong></span></strong><br><span style="color:#000000;">(1)文件类型正确、大小合适</span><br><span style="color:#000000;">(2)文件类型正确,大小不合适</span><br><span style="color:#000000;">(3)文件类型错误,大小合适</span><br><span style="color:#000000;">(4)文件类型和大小都合适,上传一个正在使用中的图片</span><br><span style="color:#000000;">(5)文件类型大小都合适,手动输入存在的图片地址来上传</span><br><span style="color:#000000;">(6)文件类型和大小都合适,输入不存在的图片地址来上传</span><br><span style="color:#000000;">(7)文件类型和大小都合适,输入图片名称来上传</span><br><span style="color:#000000;">(8)不选择文件直接点击上传,查看是否给出提示</span><br><span style="color:#000000;">(9)连续多次选择不同的文件,查看是否上传最后一次选择的文件</span><br><strong><span style="color:#ff0000;"><strong>七、查询结果列表</strong></span></strong><br><span style="color:#000000;">(1)列表、列宽是否合理</span><br><span style="color:#000000;">(2)列表数据太宽有没有提供横向滚动</span><br><span style="color:#000000;">(3)列表的列名有没有与内容对应</span><br><span style="color:#000000;">(4)列表的每列的列名是否描述的清晰</span><br><span style="color:#000000;">(5)列表是否把不必要的列都显示出来</span><br><span style="color:#000000;">(6)点击某列进行排序,是否会报错(点击查看每一页的排序是否正确)</span><br><span style="color:#000000;">(7)双击或单击某列信息,是否会报错</span><br><strong><span style="color:#ff0000;"><strong>八、返回键检查</strong></span></strong><br><span style="color:#000000;">1、一条已经成功提交的记录,返回后再提交,是否做了处理</span><br><span style="color:#000000;">2、检查多次使用返回键的情况,在有返回键的地方,返回到原来的页面多次,查看是否会出错</span><br><strong><span style="color:#ff0000;"><strong>九、回车键检查</strong></span></strong><br><span style="color:#000000;">1、在输入结果后,直接按回车键,看系统如何处理,是否会报错</span><br><strong><span style="color:#ff0000;"><strong>十、刷新键检查</strong></span></strong><br><span style="color:#000000;">1、在Web系统中,使用刷新键,看系统如何处理,是否会报错</span><br><strong><span style="color:#ff0000;"><strong>十一、直接URL链接检查</strong></span></strong><br><span style="color:#000000;">1、在Web系统中,在地址栏直接输入各个功能页面的URL地址,看系统如何处理,是否能够直接链接查看(匿名查看),是否有权限控制,是否直接执行,并返回相应结果页;页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链 接和外部链接,在使用的时候应该注意,同时能够生成html格式的测试报告。如果系统用QTP进行,也可以使用QTP的页面检查点检查、自动化检查</span><br><span style="color:#000000;">2. 相关性检查:</span><br><span style="color:#000000;">Ø 功能相关性:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确,常见的情况是,增加某个数据记录以后,如果该数据记录某个字段内容较长,可能会在查询的时候让数据列表变形。</span><br><span style="color:#000000;">Ø 数据相关性:下来列表默认值检查,下来列表值检查,如果某个列表的数据项依赖于其他模块中的数据,同样需要检查,比如,某个数据如果被禁用了,可能在引用该数据项的列表中不可见。</span><br><span style="color:#000000;">3. 检查按钮的功能是否正确:如新建、编辑、删除、关闭、返回、保存、导入,上一页,下一页,页面跳转,重置等功能是否正确。常见的错误会出现在重置按钮上,表现为功能失效。</span><br><span style="color:#000000;">4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度。还要检查需求规定的字符串长度是否是正确的,有时候会出现,需求规定的字符串长度太短而无法输入业务数据。</span><br><span style="color:#000000;">5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型。</span><br><span style="color:#000000;">6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。常见的错误是系统对空格的处理,可能添加的时候,将空格当作一个字符,而在查询的时候空格被屏蔽,导致无法查询到添加的内容。</span><br><span style="color:#000000;">7.特殊字符检查:输入特殊符号,如@、#、$、%、!等,看系统处理是否正确。常见的错误是出现在% ‘ \ 这几个特殊字符</span><br><span style="color:#000000;">8. 中文字符处理: 在可以输入中、英文的系统输入中文,看会否出现乱码或出错。</span><br><span style="color:#000000;">9. 检查信息的完整性: 在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致。要注意检查的时候每个字段都应该检查,有时候,会出现部分字段更新了而个别字段没有更新的情况。</span><br><span style="color:#000000;">10. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。</span><br><span style="color:#000000;">11. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除, 看是否正确处理。如果有多页,翻页选,看系统是否都正确删除,并且要注意,删除的时候是否有提示,让用户能够更正错误,不误删除。</span><br><span style="color:#000000;">12. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.</span><br><span style="color:#000000;">13. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.</span><br><span style="color:#000000;">14. 重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于WEB系统来说,可以通过浏览器返回键或者系统提供的返回功能。</span><br><span style="color:#000000;">15. 检查多次使用返回键的情况: 在有返回键的地方,返回到原来页面,重复多次,看会否出错。</span><br><span style="color:#000000;">16. 搜索检查: 有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确,搜索的时候同样要注意特殊字符,某些系统会在输入特殊字符的时候,将系统中所有的信息都搜索到。</span><br><span style="color:#000000;">17. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。</span><br><span style="color:#000000;">18. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。下载文件 能否打开或者保存,下载的文件是否有格式要求,如需要特殊工具才可以打开等。上传文件测试同时应该测试,如果将不能上传的文件后缀名修改为可以上传文件的 后缀名,看是否能够上传成功,并且,上传文件后,重新修改,看上传的文件是否存在。</span><br><span style="color:#000000;">19. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项。</span><br><span style="color:#000000;">20. 快捷键检查:是否支持常用快捷键,如Ctrl+C、 Ctrl+V、 Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。</span><br><span style="color:#000000;">21. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错。这个地方很有可能会出现错误。</span><br><span style="color:#000000;">22.刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错。</span><br><span style="color:#000000;">23.回退键检查:在Web系统中,使用浏览器的回退键,看系统处理如何,会否报错。对于需要用户验证的系统,在退出登录后,使用回退键,看系统处理如何;多次使用回退键,多次使用前进键,看系统如何处理。</span><br><span style="color:#000000;">24.直接URL链接检查:在Web系统中,直接输入各功能页面的URL地址,看系统如何处理,对于需要用户验证的系统更为重要。如果系统安全性设计的不好,直接输入各功能页面的URL地址,很有可能会正常打开页面。</span><br><span style="color:#000000;">25.空格检查:在输入信息项中,输入一个或连串空格,查看系统如何处理。如对于要求输入整型、符点型变量的项中,输入空格,既不是空值,又不是标准输入。</span><br><span style="color:#000000;">26.输入法半角全角检查:在输入信息项中,输入半角或全角的信息,查看系统如何处理。如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“.”,如4.5);输入全角的空格等。</span><br><span style="color:#000000;">27.密码检查:一些系统的加密方法采用对字符Ascii码移位的方式,处理密码加密相对较为简单,且安全性较高,对于局域网系统来说,此种方式完全可以 起到加密的作用,但同时,会造成一些问题,即大于128的Ascii对应的字符在解密时无法解析,尝试使用“uvwxyz”等一些码值较大的字符作为密 码,同时,密码尽可能的长,如17位密码等,造成加密后的密码出现无法解析的字符。</span><br><span style="color:#000000;">28.用户检查:任何一个系统,都有各类不同的用户,同样具有一个或多个管理员用户,检查各个管理员之间是否可以相互管理,编辑、删除管理员用户。同时, 对于一般用户,尝试删除,并重建同名的用户,检查该用户其他信息是否重现。同样,提供注销功能的系统,此用户再次注册时,是否作为一个新的用户。而且还要 检查该用户的有效日期,过了有效日期的用户是不能登录系统的。容易出现错误的情况是,可能有用户管理权限的非超级管理员,能够修改超级管理员的权限。</span><br><span style="color:#000000;">29.系统数据检查:这是功能测试最重要的,如果系统数据计算不正确,那么功能测试肯定是通不过的。数据检查根据不同的系统,方法不同。对于业务管理平台,数据随业务过程、状态的变化保持正确,不能因为某个过程出现垃圾数据,也不能因为某个过程而丢失数据。</span><br><span style="color:#000000;">30.系统可恢复性检查:以各种方式把系统搞瘫,测试系统是否可正常迅速恢复。</span><br><span style="color:#000000;">31.确认提示检查:系统中的更新、删除操作,是否提示用户确认更新或删除,操作是否可以回退(即是否可以选择取消操作),提示信息是否准确。事前或事后提示,对于Update或Delete操作,要求进行事前提示。</span><br><span style="color:#000000;">32.数据注入检查:数据注入主要是对数据库的注入,通过输入一些特殊的字符,如“’”,“/”,“-”等或字符组合,完成对SQL语句的破坏,造成系统 查询、插入、删除操作的SQL因为这些字符而改变原来的意图。如select * from table where id = ‘ ’ and name = ‘ ’,通过在id输入框中输入“12’-”,会造成查询语句把name条件注释掉,而只查询id=12的记录。同样,对于update和delete的操 作,可能会造成误删除数据。当然还有其它一些SQL注入方法,具体可以参考《SQL应用高级SQL注入.doc》,很多程序都是基于页面对输入字符进行控 制的,可以尝试跳过界面直接向数据库中插入数据,比如用Jmeter,来完成数据注入检查。</span><br><span style="color:#000000;">33.刷新检查:web系统中的WebForm控件实时刷新功能,在系统应用中有利有弊,给系统的性能带来较大的影响。测试过程中检测刷新功能对系统或应 用造成的影响(白屏),检查控件是否回归默认初始值,检查是否对系统的性能产生较大影响(如每次刷新都连接数据库查询等)。</span><br><span style="color:#000000;">34.事务检查:对于事务性操作,断开网络或关闭程序来中断操作,事务是否回滚。</span><br><span style="color:#000000;">35.时间日期检查:时间、日期验证是每个系统都必须的,如2006-2-29、2006-6-31等错误日期,同时,对于管理、财务类系统,每年的1月 与前一年的12月(同理,每年的第1季度与前一年的第4季度)。另外,对于日期、时间格式的验证,如2006年2月28日、2006-2-28、 20060228等。日期检查还要检查日期范围是否符合实际的业务,对于不符合时间业务的日期,系统是否会有提示或者有限制</span><br><span style="color:#000000;">36.多浏览器验证:越来越多的各类浏览器的出现,用户访问Web程序不再单单依赖于Microsoft Internet Explorer,而是有了更多的选择:Maxthon、Firefox、Tencent Traveler等,考虑使用多种浏览器访问系统,验证效果。</span><br><span style="color:#000000;">37.安装测试:对于C/S架构的系统,安装程序的测试是一个重要方面,安装程序自动化程度、安装选项和设置(验证各种方案是否都能正常安装)、安装过程中断测试、安装顺序测试(分布式系统)、修复安装及卸载测试。</span><br><span style="color:#000000;">38.文档测试:主要是对用户使用手册、产品手册进行测试,校验是否描述正确、完整,是否与当前系统版本对照,是否易理解,是否二义性等。</span><br><span style="color:#000000;">39.测试数据检查:事实告诉我们,测试数据比代码更有可能是错的,因此,当测试结果显示有错误发生的时候,怀疑代码错误前要先对测试数据检查一遍。</span><br><span style="color:#000000;">40.请让我的机器来运行:在某些项目中,出现一个病态的问题:系统没有问题呀,它在我的机器上是能够通过的。这就说明了其中存在着和环境相关的BUG。 “是否所有的一切都受到了版本控制工具的管理?”、“本机的开发环境和服务器的环境是否一样?”、“这里是否存在一个真正的BUG,只不过是在其他的机器 里偶然出现?”。所有的测试必须在所有系统要求的机器上运行通过,否则的话,代码就可能存在问题。</span><br><span style="color:#000000;">41.Ajax技术的应用:Ajax有很多优点,但也有很多缺点,如果利用优点、避免缺点,是我们对新的Web2.0应用的一个挑战。而Ajax的应用最 直接的问题就是用户体验,用户体验的效果直接关系到是否使用Ajax技术。“会做,并不意味着应该做、必须做”,这就是对Ajax技术的很重要的注解。</span><br><span style="color:#000000;">42.Ajax技术的应用:Ajax采用异步调用的机制实现页面的部分刷新功能,异步调用存在异常中断的可能,尝试各种方法异常中断异步的数据调用,查看是否出现问题。在这里遇到的一个问题就是对日期控件的操作,已经如果页面数据较多的时候的刷新。</span><br><span style="color:#000000;">43.脚本错误:随着Ajax、IFrame等异步调用技术的发展,Javascrīpt技术也越来越受到开发人员的重视,但Javascrīpt存在调试困难、各浏览器存在可能不兼容等问题,因此在Web系统中,可能会出现脚本错误。同时,脚本错误造成的后果可大、可小</span><br><strong><span style="color:#ff0000;"><strong>十二、界面和易用性测试</strong></span></strong><br><span style="color:#000000;">1、风格、样式、颜色是否协调</span><br><span style="color:#000000;">2、界面布局是否整齐、协调(保证全部显示出来的,尽量不要使用滚动条</span><br><span style="color:#000000;">3、界面操作、标题描述是否恰当(描述有歧义、注意是否有错别字)</span><br><span style="color:#000000;">4、操作是否符合人们的常规习惯(有没有把相似的功能的控件放在一起,方便操作)</span><br><span style="color:#000000;">5、提示界面是否符合规范(不应该显示英文的cancel、ok,应该显示中文的确定等)</span><br><span style="color:#000000;">6、界面中各个控件是否对齐</span><br><span style="color:#000000;">7、日期控件是否可编辑</span><br><span style="color:#000000;">8、日期控件的长度是否合理,以修改时可以把时间全部显示出来为准</span><br><span style="color:#000000;">9、查询结果列表列宽是否合理、标签描述是否合理</span><br><span style="color:#000000;">10、查询结果列表太宽没有横向滚动提示</span><br><span style="color:#000000;">11、对于信息比较长的文本,文本框有没有提供自动竖直滚动条</span><br><span style="color:#000000;">12、数据录入控件是否方便</span><br><span style="color:#000000;">13、有没有支持Tab键,键的顺序要有条理,不乱跳</span><br><span style="color:#000000;">14、有没有提供相关的热键</span><br><span style="color:#000000;">15、控件的提示语描述是否正确</span><br><span style="color:#000000;">16、模块调用是否统一,相同的模块是否调用同一个界面</span><br><span style="color:#000000;">17、用滚动条移动页面时,页面的控件是否显示正常</span><br><span style="color:#000000;">18、日期的正确格式应该是XXXX-XX-XX或XXXX-XX-XX XX:XX:XX</span><br><span style="color:#000000;">19、页面是否有多余按钮或标签</span><br><span style="color:#000000;">20、窗口标题或图标是否与菜单栏的统一</span><br><span style="color:#000000;">21、窗口的最大化、最小化是否能正确切换</span><br><span style="color:#000000;">22、对于正常的功能,用户可以不必阅读用户手册就能使用</span><br><span style="color:#000000;">23、执行风险操作时,有确认、删除等提示吗</span><br><span style="color:#000000;">24、操作顺序是否合理</span><br><span style="color:#000000;">25、正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。</span><br><span style="color:#000000;">26、系统应该在用户执行错误的操作之前提出警告,提示信息.</span><br><span style="color:#000000;">27、页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。</span><br><span style="color:#000000;">28、合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。</span><br><span style="color:#000000;">29、检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。</span><br><strong><span style="color:#ff0000;"><strong>十三、兼容性测试</strong></span></strong><br><span style="color:#000000;">兼容性测试不只是指界面在不同操作系统或浏览器下的兼容,有些功能方面的测试,也要考虑到兼容性,</span><br><span style="color:#000000;">包括操作系统兼容和应用软件兼容,可能还包括硬件兼容</span><br><span style="color:#000000;">比如涉及到ajax、jquery、javascript等技术的,都要考虑到不同浏览器下的兼容性问题。</span><br><strong><span style="color:#ff0000;"><strong>十四、链接测试</strong></span></strong><br><span style="color:#000000;">主要是保证链接的可用性和正确性,它也是网站测试中比较重要的一个方面。</span><br><span style="color:#000000;">可以使用特定的工具如XENU来进行链接测试。</span></p> <p style="margin-left:0pt;"><span style="color:#000000;">1导航测试</span><br><span style="color:#000000;">导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决 定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?</span><br><span style="color:#000000;">在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息, 如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。</span><br><span style="color:#000000;">导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。</span><br><span style="color:#000000;">Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。</span><br><span style="color:#000000;">2图形测试</span><br><span style="color:#000000;">在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:</span><br><span style="color:#000000;">(1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。</span><br><span style="color:#000000;">(2)验证所有页面字体的风格是否一致。</span><br><span style="color:#000000;">(3)背景颜色应该与字体颜色和前景颜色相搭配。</span><br><span style="color:#000000;">(4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩,最好能使图片的大小减小到30k以下</span><br><span style="color:#000000;">(5)最后,需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该图片出现在右边。不要因为使用图片而使窗口和段落排列古怪或者出现孤行。</span><br><span style="color:#000000;">通常来说,使用少许或尽量不使用背景是个不错的选择。如果您想用背景,那么最好使用单色的,和导航条一起放在页面的左边。另外,图案和图片可能会转移用户的注意力。</span><br><strong><span style="color:#ff0000;"><strong>十五、业务流程测试(主要功能测试)</strong></span></strong><br><span style="color:#000000;">业务流程,一般会涉及到多个模块的数据,所以在对业务流程测试时,首先要保证单个模块功能的正确性,其次就要对各个模块间传递的数据进行测试,这往往是容易出现问题的地方,测试时一定要设计不同的数据进行测试。</span><br><span style="color:#000000;">十六、安全性测试</span><br><span style="color:#000000;">(1)SQL注入(比如登陆页面)</span><br><span style="color:#000000;">(2)XSS跨网站脚本攻击:程序或数据库没有对一些特殊字符进行过滤或处理,导致用户所输入的一些破坏性的脚本语句能够直接写进数据库中,浏览器会直接执行这些脚本语句,破坏网站的正常显示,或网站用户的信息被盗,构造脚本语句时,要保证脚本的完整性。</span><br><span style="color:#000000;">(3)URL地址后面随便输入一些符号,并尽量是动态参数靠后</span><br><span style="color:#000000;">(4)验证码更新问题</span><br><span style="color:#000000;">(5)现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。</span><br><span style="color:#000000;">(6)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。</span><br><span style="color:#000000;">(7)为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。</span><br><span style="color:#000000;">(8)当使用了安**接字时,还要测试加密是否正确,检查信息的完整性。</span><br><span style="color:#000000;">(9)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。</span><br><strong><span style="color:#ff0000;"><strong>十七、性能测试</strong></span></strong><br><span style="color:#000000;">1连接速度测试</span><br><span style="color:#000000;">用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。</span><br><span style="color:#000000;">另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。</span><br><span style="color:#000000;">2负载测试</span><br><span style="color:#000000;">负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量, 也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同 一个页面的请求?</span><br><span style="color:#000000;">3压力测试</span><br><span style="color:#000000;">负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。</span><br><span style="color:#000000;">进行压力测试是指实际破坏一个Web应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。</span><br><span style="color:#000000;">压力测试的区域包括表单、登陆和其他信息传输页面等。</span><br><span style="color:#000000;">备注:</span><br><span style="color:#000000;">1、负载/压力测试应该关注什么</span><br><span style="color:#000000;">测试需要验证系统能否在同一时间响应大量的用户,在用户传送大量数据的时候能否响应,系统能否长时间运行。可访问性对用户来说是极其重要的。如果用户得到 “系统忙”的信息,他们可能放弃,并转向竞争对手。系统检测不仅要使用户能够正常访问站点,在很多情况下,可能会有黑客试图通过发送大量数据包来攻击服务 器。出于安全的原因,测试人员应该知道当系统过载时,需要采取哪些措施,而不是简单地提升系统性能。</span><br><span style="color:#000000;">1)瞬间访问高峰</span><br><span style="color:#000000;">如果您的站点用于公布彩票的抽奖结果,最好使系统在中奖号码公布后的一段时间内能够响应上百万的请求。负载测试工具能够模拟X个用户同时访问测试站点。</span><br><span style="color:#000000;">2)每个用户传送大量数据</span><br><span style="color:#000000;">网上书店的多数用户可能只订购1-5书,但是大学书店可能会订购5000本有关心理学介绍的课本?或者一个祖母为她的50个儿孙购买圣诞礼物(当然每个孩子都有自己的邮件地址)系统能处理单个用户的大量数据吗?</span><br><span style="color:#000000;">3)长时间的使用</span><br><span style="color:#000000;">如果站点用于处理鲜花订单,那么至少希望它在母亲节前的一周内能持续运行。如果站点提供基于web的email服务,那么点最好能持续运行几个月,甚至几 年。可能需要使用自动测试工具来完成这种类型的测试,因为很难通过手工完成这些测试。你可以想象组织100个人同时点击某个站点。但是同时组织 100000个人呢。通常,测试工具在第二次使用的时候,它创造的效益,就足以支付成本。而且,测试工具安装完成之后,再次使用的时候,只要点击几下。</span><br><span style="color:#000000;">采取措施:采用性能测试工具WAS、ACT,LR等协助进行测试</span><br><strong><span style="color:#ff0000;"><strong>十八、测试中应该注意的其他情况</strong></span></strong><br><span style="color:#000000;">1、在测试时,与网络有关的步骤或者模块必须考虑到断网的情况</span><br><span style="color:#000000;">2、每个页面都有相应的Title,不能为空,或者显示“无标题页”</span><br><span style="color:#000000;">3、在测试的时候要考虑到页面出现滚动条时,滚动条上下滚动时,页面是否正常</span><br><span style="color:#000000;">4、URL不区分大小写,大小写不敏感</span><br><span style="color:#000000;">5、、对于电子商务网站,当用户并发购买数量大于库存的数量时,系统如何处理</span><br><span style="color:#000000;">6、测试数据避免单纯输入“123”、“abc“之类的,让测试数据尽量接近实际</span><br><span style="color:#000000;">7、进行测试时,尽量不要用超级管理员进行测试,用新建的用户进行测试。测试人员尽量不要使用同一个用户进行测试</span><br><span style="color:#000000;">8、提示信息:提示信息是否完整、正确、详细</span><br><span style="color:#000000;">9、帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细</span><br><span style="color:#000000;">10、可扩展性:是否由升级的余地,是否保留了接口</span><br><span style="color:#000000;">11、稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护</span><br><span style="color:#000000;">12、运行速度:运行的快慢,带宽占用情况</span></p> <p style="margin-left:0pt;"><strong><span style="color:#ff0000;"><strong>十八、</strong></span></strong><strong><span style="color:#ff0000;"><strong>你这个项目做了多久?你觉得一个项目测多久就可以停止了?</strong></span></strong></p> <p style="margin-left:0pt;"><span style="color:#000000;">我现在做的这个项目已经做了2个多月了,目前还在测试中,因为客户的需求有些变更,版本还在调整,估计还得继续测下去。</span></p> <p style="margin-left:0pt;"><span style="color:#000000;">我觉得一个项目测多久要看他满足测试计划定义的停测标准,我之前做的几个项目,都是按照公司定义的停测标准执行,一般是如果有用例,则测试用例低级以上的用例都必须通过,低级的用例90%通过,并且缺陷库里Medium级别以上包括Medium的缺陷close,low级别的80%close,才停止测试。如果没有写用例,一般就是按照缺陷库的那个标准来执行。最近的一个项目测了5个版本还没结束呢,需求一致改,缺陷一直有,所有感觉确定不了多久能测完。</span></p> <p style="margin-left:0pt;"><span style="color:#000000;">实际工作中,停测标准可能有更多,比如客户要求停止、项目经理要求停止,需求覆盖达到一定比例,建议大家就说上面的就行了。</span></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1283541089017413632"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(测试面试--简答类)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1897197261310455808.htm" title="Spring Boot中的策略模式:如何基于ID灵活选择服务类?" target="_blank">Spring Boot中的策略模式:如何基于ID灵活选择服务类?</a> <span class="text-muted">墨瑾轩</span> <a class="tag" taget="_blank" href="/search/%E4%B8%80%E8%B5%B7%E5%AD%A6%E5%AD%A6Java%E3%80%90%E4%B8%80%E3%80%91/1.htm">一起学学Java【一】</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F/1.htm">策略模式</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣SpringBoot中的策略模式:如何基于ID灵活选择服务类?在软件开发中,策略模式是一种行为设计模式,它使你能够在运行时更改算法或行为。在SpringBoot应用中,通过策略模式实现基于某种条件(如ID)来动态选择不同的服务类,可以使代码更加灵活和可维护。本</div> </li> <li><a href="/article/1897192462355591168.htm" title="React Hooks 完全指南:从入门到精通" target="_blank">React Hooks 完全指南:从入门到精通</a> <span class="text-muted">斯~内克</span> <a class="tag" taget="_blank" href="/search/react%E7%9F%A5%E8%AF%86%E7%82%B9/1.htm">react知识点</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>一、Hooks的革命性意义1.1为什么需要Hooks?类组件痛点:根据2024年React开发者调查报告,87%的开发者认为生命周期方法难以理解,尤其是componentDidUpdate的复杂逻辑逻辑复用困境:传统HOC和RenderProps模式导致组件嵌套地狱(NestingHell)性能优化难题:类组件难以精细控制重渲染,shouldComponentUpdate优化成本高代码组织混乱:相</div> </li> <li><a href="/article/1897181616405540864.htm" title="【C++】类的const成员" target="_blank">【C++】类的const成员</a> <span class="text-muted">这学芝士 多是一件美事</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>1const成员1.1const修饰类的成员函数在日期类中,我们实例化一个普通对象,普通对象调用成员函数要传参,传给隐含的this指针。普通对象调用Print(),要把d1的地址传给this指针,那如果是const对象呢?const对象取地址是constDate*,所指向的内容不能被修改,此时如果只是一个普通的成员函数是不能编译通过的。因此此时我们要将this指针变成constthis*,但是我们</div> </li> <li><a href="/article/1897179343554146304.htm" title="Java 项目问题:在 Maven 中导入了依赖,却在项目中无法引入依赖中的类" target="_blank">Java 项目问题:在 Maven 中导入了依赖,却在项目中无法引入依赖中的类</a> <span class="text-muted">我命由我12345</span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98%E6%B8%85%E5%8D%95/1.htm">问题清单</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/java-ee/1.htm">java-ee</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/intellij/1.htm">intellij</a><a class="tag" taget="_blank" href="/search/idea/1.htm">idea</a> <div>问题与处理策略问题描述com.diogonunesJColor5.5.1Java项目中,在Maven中导入了上述依赖,却在项目中无法引入依赖中的类问题原因可能是第一次下载依赖时,网络问题或Maven仓库问题导致依赖未完整下载可能是IDEA的缓存或相关问题,导致依赖无法使用处理策略尝试此策略:注释依赖->Maven同步->放开注释->Maven同步当注释掉依赖并同步时,Maven会从项目中移除该依赖</div> </li> <li><a href="/article/1897174418333954048.htm" title="java中JUC工具类" target="_blank">java中JUC工具类</a> <span class="text-muted">小野喵喵。</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>以下内容有AI回答生成内容,以及自己理解添加的内容,只用作了解记录。java的JUC(java.util.concurrent)包是java并发编程的核心工具包,提供了丰富的多线程和并发编程工具类。以下是其主要组件及典型示例:1.锁机制ReentrantLock:可重入互斥锁,替代synchronized,支持公平锁和非公平锁ReentrantReadWriteLock:读写分离锁,允许多个读线程</div> </li> <li><a href="/article/1897173031042740224.htm" title="JDBC数据库连接" target="_blank">JDBC数据库连接</a> <span class="text-muted">祈祷平安,加油</span> <a class="tag" taget="_blank" href="/search/Java%E4%B8%AD%E7%BA%A7/1.htm">Java中级</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>一、了解JDBC概念JDBC(JavaDatabaseConnectivity)是一种用于执行SQL语句的JavaAPI,是Java和数据库之间的桥梁。它提供了一种标准化的方式来连接不同的数据库驱动程序,并通过Java程序执行SQL操作。组成部分JDBC由一组用Java语言编写的类和接口组成,主要包括以下几个部分:驱动管理:负责加载和注册数据库驱动。Connection接口:用于代表数据库的连接,</div> </li> <li><a href="/article/1897172274310606848.htm" title="XGBoost系列文章(四):参数调优与模型训练" target="_blank">XGBoost系列文章(四):参数调优与模型训练</a> <span class="text-muted">什么都想学的阿超</span> <a class="tag" taget="_blank" href="/search/%E5%8E%9F%E7%90%86%E6%A6%82%E5%BF%B5/1.htm">原理概念</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/xgboost/1.htm">xgboost</a> <div>XGBoost系列文章(四):参数调优与模型训练本文是XGBoost系列的第四篇,聚焦参数调优与模型训练实战,从参数分类到调优技巧,结合代码示例解析核心方法。内容涵盖学习率、正则化、采样策略、早停法等关键环节,帮助读者快速掌握工业级调参方案。1.XGBoost的三大类参数(通用参数、Booster参数、任务参数)分别是什么?XGBoost参数分为三大类,控制不同层面的行为:参数类型作用范围常用参数</div> </li> <li><a href="/article/1897170757876772864.htm" title="JDBC中日期时间的处理技巧" target="_blank">JDBC中日期时间的处理技巧</a> <span class="text-muted">CptainLee</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/JDBC/1.htm">JDBC</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/JAVA/1.htm">JAVA</a><a class="tag" taget="_blank" href="/search/MYSQL/1.htm">MYSQL</a><a class="tag" taget="_blank" href="/search/JDBC/1.htm">JDBC</a> <div>Java中用类java.util.Date对日期/时间做了封装,此类提供了对年、月、日、时、分、秒、毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等。java.util.Date中采用一个long型的数来保存日期/时间,它表示从格林威治时间1970年1月1日00点00分00秒至今的毫秒数。JDBC中,在这个类的基础之上扩展了3个类:java.sql.Date,jav</div> </li> <li><a href="/article/1897168992494219264.htm" title="不可不知的dataclasses | python小知识" target="_blank">不可不知的dataclasses | python小知识</a> <span class="text-muted">aiweker</span> <a class="tag" taget="_blank" href="/search/%E8%B7%9F%E6%88%91%E5%AD%A6python/1.htm">跟我学python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>不可不知的dataclasses|python小知识在Python中,dataclasses模块自Python3.7版本引入以来,便成为了许多开发者管理数据结构的首选工具。它简化了类的定义,特别是对于那些主要用于存储数据的类。本文将详细介绍dataclasses的功能、应用场景,并通过代码例子进行解释说明。1.基本功能与用法dataclasses提供了一个@dataclass装饰器,通过它,可以极</div> </li> <li><a href="/article/1897154613891624960.htm" title="线程wait后的等待队列" target="_blank">线程wait后的等待队列</a> <span class="text-muted">DanceDonkey</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>常规情况在Java里,无论是使用Object类的wait()、notify()、notifyAll()方法,还是使用ReentrantLock搭配Condition的await()、signal()、signalAll()方法,基本遵循“哪个对象调用wait/await,线程就进入该对象对应的等待队列,且需由该对象来唤醒”的规则。使用Object的wait()、notify()、notifyAll</div> </li> <li><a href="/article/1897152338825637888.htm" title="为什么高校都在大规模使用嵌入式仿真实验教学平台做嵌入式教学?" target="_blank">为什么高校都在大规模使用嵌入式仿真实验教学平台做嵌入式教学?</a> <span class="text-muted">嵌入式仿真实验教学平台</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AE%9E%E6%97%B6%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">嵌入式实时数据库</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a> <div>近年来,嵌入式仿真实验教学平台在高校中迅速普及,成为电子信息类、自动化类等专业的核心教学工具。无论是课程设计、科研项目,还是学科竞赛,这一平台都展现出独特的价值。本文将从技术趋势、教学痛点、平台优势等多个角度,解析高校大规模采用嵌入式仿真实验教学平台背后的深层原因,并为开发者推荐这一高效学习工具。一、破解传统教学痛点:从“纸上谈兵”到“实战练兵”传统嵌入式教学长期面临三大难题:硬件依赖高,成本压力</div> </li> <li><a href="/article/1897138848220114944.htm" title="测试类中无法注入(找不到此bean)" target="_blank">测试类中无法注入(找不到此bean)</a> <span class="text-muted">一个想打代码的yebadi_</span> <a class="tag" taget="_blank" href="/search/%E9%94%99%E8%AF%AF%E7%82%B9/1.htm">错误点</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a> <div>今天打开了一个项目进行方法测试的时候出现了一个错误。java.lang.NullPointerExceptionattest.example.Test1.test2(Test1.java:29)atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atjava.base/jdk.internal</div> </li> <li><a href="/article/1897133387123060736.htm" title="大模型时代,后端程序员如何避免被AI卷死?" target="_blank">大模型时代,后端程序员如何避免被AI卷死?</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AFgo%E7%A8%8B%E5%BA%8F%E5%91%98%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">后端go程序员人工智能</a> <div>我是王中阳,专注帮程序员升职加薪。最近后台收到很多留言:“AI都能写代码了,咱们后端是不是要失业了?”说实话,去年我也慌过。当看到AI能够快速生成代码,甚至某些简单的代码任务完成得比牛马程序员还要出色时,内心的焦虑感油然而生。但后来我通过深入研究和实践发现,这波AI浪潮里藏着巨大的升职加薪机会。今天说点大实话,教你怎么把AI变成涨薪工具。先泼盆冷水:这3类程序员真的危险了只会CRUD的API搬运工</div> </li> <li><a href="/article/1897133130075140096.htm" title="设计模式:单例模式" target="_blank">设计模式:单例模式</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1.什么是单例模式?单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来获取该实例。它的核心目标是控制对象的创建过程,避免资源重复占用或状态不一致。核心原则:私有化构造函数:禁止外部通过new创建实例。自行创建实例:类内部负责创建唯一实例。全局访问点:通过静态方法(如getInstance())提供实例访问。2.应用场景单例模式适用于需要全局唯一对象的场景,例如:数据库连接</div> </li> <li><a href="/article/1897130851997642752.htm" title="java 线程基础" target="_blank">java 线程基础</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>Java线程基础创建线程在java编程中,我们可以继承Tread类并复写其run方法,然后new一个该对象,并调用其start方法,这样就可以开启一个新线程了。或者创建实现一个Runnable接口的类。然后将该对象传递给一个Thread队象。这样也可以开启一个线程。另外还一个使用线程池创建线程,或者使用带有返回值的Callable创建线程其实这些方式的本质都是一样的,本质上只有一种创建线程的方式。</div> </li> <li><a href="/article/1897130599093694464.htm" title="翻译-Java字符串池" target="_blank">翻译-Java字符串池</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>原文地址正如名字所示:Java中字符串池存储在堆内存中。我们知道java中String是一个特殊的类,我们可以通过new操作符或者使用双引号“”创建一个String对象。Java里的字符串池字符串池中创建了多少字符串对象?Java里的字符串池下面是一个图,清晰的解释了java堆内存怎么管理字符串池的。以及当我们使用不同的方式创建字符串时发生了什么。字符串池是可行的,只是因为在Java中String</div> </li> <li><a href="/article/1897123717167771648.htm" title="SEO新手操作实战精要" target="_blank">SEO新手操作实战精要</a> <span class="text-muted">老陈头聊SEO</span> <a class="tag" taget="_blank" href="/search/SEO/1.htm">SEO</a><a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a> <div>内容概要在搜索引擎优化领域建立系统认知是新手突破入门瓶颈的关键。本指南以实战操作为核心脉络,从工具选择到执行路径层层拆解:首先建立SEO基础工具库,涵盖关键词挖掘、流量分析及竞争监测三类必备系统;其次聚焦站内优化黄金框架,详解标题(Title)、描述(Description)、关键词(Keywords)的权重配比与语义关联技巧;同时规划外链建设策略,梳理权威平台资源池与内容植入方法论。配合百度站长</div> </li> <li><a href="/article/1897110480065982464.htm" title="scala" target="_blank">scala</a> <span class="text-muted">小冻梨!!!</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>正则表达式\n\n\\\\:表示正则表达式\nW:表示一个非字(不是一个字,例如:空格,逗号,句号)\nW+:多个非字\n\n基本组成部分\n1.字符字面量:\n普通字符:在正则表达式中,大多数普通字符(如字母、数字等)匹配它们自身。\n元字符(Metacharacters):有些字符具有特殊含义,这些被称为元字符。\n2.字符类:\n字符类。包括单个字符和字符范围。eg:‘a’匹配字符‘a’,‘</div> </li> <li><a href="/article/1897105813273636864.htm" title="React Refs:深入理解与最佳实践" target="_blank">React Refs:深入理解与最佳实践</a> <span class="text-muted">froginwe11</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>ReactRefs:深入理解与最佳实践引言在React中,refs是用于访问DOM元素或组件实例的一种方式。与类组件的ref属性不同,函数组件的ref需要使用useRef钩子。正确使用refs可以大大提升React应用的性能和可维护性。本文将深入探讨ReactRefs的原理、用法以及最佳实践。Refs的原理React的refs是一个对DOM节点或组件实例的引用,它允许我们直接访问DOM节点或组件实</div> </li> <li><a href="/article/1897104552864313344.htm" title="【一】JavaScript能力提升---类对象、call()、apply()、bind()" target="_blank">【一】JavaScript能力提升---类对象、call()、apply()、bind()</a> <span class="text-muted">是洋洋a</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>一、类对象1.1概念类对象是一种用于创建和管理对象的架构或概念1.2定义方式1.2.1基于ES6类语法的类对象classPerson{constructor(name,age){this.name=name;this.age=age;}sayHello(){console.log(`Hello,mynameis${this.name}andIam${this.age}yearsold.`);}}c</div> </li> <li><a href="/article/1897103167175323648.htm" title="全栈(Java+vue)实习面试题(含答案)" target="_blank">全栈(Java+vue)实习面试题(含答案)</a> <span class="text-muted">小钊(求职中)</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a> <div>在广州一个小公司(BOSS标注是0-20人,薪资2-3k),直接面试没有笔试,一开始就直接拿着简历问,也没有自我介绍,问题是结合场景题和八股文、基础。废话不多说,直接分享面试题目个大家做参考。1、能讲一下IOC吗?IOC就是控制反转,这是一种设计模式,核心思想是将对象的创建、依赖注入和生命周期管理交给IOC容器负责。在传统的编码方式中,我们一般需要在类中手动创建依赖对象,通过硬编码方式来控制对象的</div> </li> <li><a href="/article/1897102787418845184.htm" title="页面对象实现自动化测试,playwright框架" target="_blank">页面对象实现自动化测试,playwright框架</a> <span class="text-muted">程序员的世界你不懂</span> <a class="tag" taget="_blank" href="/search/playwright/1.htm">playwright</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a> <div>1.页面对象模型的构成页面对象是将特定网页(或其部分)的所有交互和元素封装在一个类中的一种设计模式。这种分离方式带来了三个主要组成部分:•元素选择器:指向网页中特定元素的定义。•方法:封装与网页元素交互的一个或多个函数。•属性:与页面相关的附加信息或属性,例如其URL。POM的核心在于抽象。您不仅是在编写测试,而是在为应用程序的用户界面创建一个直观的接口。2.理解页面对象模型的重要性使用POM确保</div> </li> <li><a href="/article/1897095350469062656.htm" title="__new__和__init__使用区别" target="_blank">__new__和__init__使用区别</a> <span class="text-muted">AI专题精讲</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>创建实例vs.初始化实例在Python中,创建一个对象通常分为两步:创建实例(__new__方法):分配内存,创建并返回对象。初始化实例(__init__方法):设置属性,对对象进行初始化。1.__new__方法(创建实例)作用:负责创建类的实例,即分配内存并返回新对象。__new__是一个类方法,接收cls作为参数(还没有self!)。一般用super().__new__(cls)调用父类的__</div> </li> <li><a href="/article/1897079599217569792.htm" title="COM智能指针ComPtr的介绍以及使用" target="_blank">COM智能指针ComPtr的介绍以及使用</a> <span class="text-muted">△曉風殘月〆</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/COM/1.htm">COM</a><a class="tag" taget="_blank" href="/search/ComPtr/1.htm">ComPtr</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88/1.htm">智能指针</a> <div>ComPtr介绍ComPtr是为COM而设计的智能指针。它支持WindowsRT,也支持传统Win32。相比ATL里的CComPtr类,它有了一些提升。ComPtr会自动维护基础接口指针的引用计数,并在参考计数为零时释放接口,从而消除内存泄漏。ComPtr包含在Windows8.xSDKandWindows10SDK,如果是Windows7系统,需要下载Windows7.1SDK下载地址https</div> </li> <li><a href="/article/1897072788309602304.htm" title="Python快速实现经典小游戏“打砖块”" target="_blank">Python快速实现经典小游戏“打砖块”</a> <span class="text-muted">壹屋安源</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pygame/1.htm">pygame</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E6%B8%B8%E6%88%8F/1.htm">小游戏</a><a class="tag" taget="_blank" href="/search/%E9%80%BB%E8%BE%91/1.htm">逻辑</a> <div>目录1.游戏框架和初始化2.游戏常量和颜色3.字体设置4.创建游戏对象:挡板、球和砖块挡板类`Paddle`球类`Ball`砖块类`Brick`5.游戏逻辑:碰撞检测6.创建按钮和界面交互7.游戏主循环和结束逻辑8.总结这段代码是一个经典的“打砖块”游戏的实现,使用了Python的`pygame`库进行图形界面的开发。游戏的基本玩法是通过控制一个可左右移动的挡板,反弹小球打破屏幕上方的砖块,玩家需</div> </li> <li><a href="/article/1897069759082590208.htm" title="WPF自定义控件(教程含源码)- 实现可以平滑滚动的Panel 控件" target="_blank">WPF自定义控件(教程含源码)- 实现可以平滑滚动的Panel 控件</a> <span class="text-muted">lhyriver</span> <a class="tag" taget="_blank" href="/search/WPF%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E4%BB%B6/1.htm">WPF自定义控件</a><a class="tag" taget="_blank" href="/search/wpf/1.htm">wpf</a> <div>控件需求WPF控件提供了ScrollViewer来实现滚动视图。ScrollViewer的PageDown、PageUp、PageLeft、PageRight方法可以滚动一个视图大小的尺寸,但是ScrollViewer滚动时比较僵硬,没有动画效果。控件设计方案平滑滚动控件命名为RWrapPanel,继承WrapPanel类和IScrollInfo接口。将WrapPanel放入ScrollViewe</div> </li> <li><a href="/article/1897063201661579264.htm" title="python中的datatime" target="_blank">python中的datatime</a> <span class="text-muted">2301_80436761</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Python的datetime模块提供了处理日期和时间的类和函数,非常强大且易于使用。以下是对datetime模块的主要功能和类的总结:1.主要类datetime模块包含以下几个主要类:datetime.date:表示日期,包含年、月、日。datetime.time:表示时间,包含时、分、秒、微秒。datetime.datetime:表示日期和时间的组合。datetime.timedelta:表示</div> </li> <li><a href="/article/1897061564377264128.htm" title="Python 制作 AI 井字棋小游戏" target="_blank">Python 制作 AI 井字棋小游戏</a> <span class="text-muted">壹屋安源</span> <a class="tag" taget="_blank" href="/search/Python%E5%B0%8F%E6%B8%B8%E6%88%8F/1.htm">Python小游戏</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/pygame/1.htm">pygame</a><a class="tag" taget="_blank" href="/search/%E4%BA%95%E5%AD%97%E6%A3%8B/1.htm">井字棋</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a> <div>目录项目简介功能实现项目环境和依赖核心代码解析1.初始化和游戏主类2.绘制棋子3.Minimax算法实现AI决策4.游戏主循环运行效果展示总结完整代码获取导语:今天我们一起来用Python和Pygame制作一个带有AI功能的井字棋小游戏。项目代码包含了基础的游戏逻辑、玩家与AI对战的功能,AI的决策基于Minimax算法实现,能够让你的游戏更具挑战性!项目简介井字棋(Tic-Tac-Toe)是一个</div> </li> <li><a href="/article/1897046057817272320.htm" title="IDEA入门及常用快捷键" target="_blank">IDEA入门及常用快捷键</a> <span class="text-muted">tyrolin</span> <a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>IDEA是java常用的IDE。当run一个.java文件时,其实是经历了先编译为.class,再运行的过程。在project文件夹中,out文件夹存储编译的.class文件,src文件夹存储.java代码文件。设置自动导包快捷键:格式化快捷键:Control+alt+L生成构造器,右键generate,constructor光标点到类,查看类的层级关系,ctrl+H光标点到方法,定位到方法,ct</div> </li> <li><a href="/article/1897037857353166848.htm" title="【计算机网络】多路复用" target="_blank">【计算机网络】多路复用</a> <span class="text-muted">茉菇</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>1.定义与核心思想多路复用(Multiplexing)是一种通过单一资源(如一个线程、一个网络连接或一个物理信道)同时处理多个独立任务或数据流的技术。其核心目标是提高资源利用率,避免为每个任务单独分配资源导致的性能瓶颈或资源浪费。2.多路复用的类型根据应用场景和技术实现,多路复用主要分为以下两类:2.1物理层的多路复用(通信领域)用于在单一物理媒介(如光纤、电缆)中同时传输多路信号:频分多路复用(</div> </li> <li><a href="/article/35.htm" title="JVM StackMapTable 属性的作用及理解" target="_blank">JVM StackMapTable 属性的作用及理解</a> <span class="text-muted">lijingyao8206</span> <a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E8%8A%82%E7%A0%81/1.htm">字节码</a><a class="tag" taget="_blank" href="/search/Class%E6%96%87%E4%BB%B6/1.htm">Class文件</a><a class="tag" taget="_blank" href="/search/StackMapTable/1.htm">StackMapTable</a> <div>        在Java 6版本之后JVM引入了栈图(Stack Map Table)概念。为了提高验证过程的效率,在字节码规范中添加了Stack Map Table属性,以下简称栈图,其方法的code属性中存储了局部变量和操作数的类型验证以及字节码的偏移量。也就是一个method需要且仅对应一个Stack Map Table。在Java 7版</div> </li> <li><a href="/article/162.htm" title="回调函数调用方法" target="_blank">回调函数调用方法</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近在看大神写的代码时,.发现其中使用了很多的回调 ,以前只是在学习的时候经常用到 ,现在写个笔记 记录一下   代码很简单:           MainDemo  :调用方法  得到方法的返回结果         </div> </li> <li><a href="/article/289.htm" title="[时间机器]制造时间机器需要一些材料" target="_blank">[时间机器]制造时间机器需要一些材料</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a> <div>      根据我的计算和推测,要完全实现制造一台时间机器,需要某些我们这个世界不存在的物质     和材料...       甚至可以这样说,这种材料和物质,我们在反应堆中也无法获得......      </div> </li> <li><a href="/article/416.htm" title="开口埋怨不如闭口做事" target="_blank">开口埋怨不如闭口做事</a> <span class="text-muted">邓集海</span> <a class="tag" taget="_blank" href="/search/%E9%82%93%E9%9B%86%E6%B5%B7+%E5%81%9A%E4%BA%BA+%E5%81%9A%E4%BA%8B+%E5%B7%A5%E4%BD%9C/1.htm">邓集海 做人 做事 工作</a> <div>“开口埋怨,不如闭口做事。”不是名人名言,而是一个普通父亲对儿子的训导。但是,因为这句训导,这位普通父亲却造就了一个名人儿子。这位普通父亲造就的名人儿子,叫张明正。      张明正出身贫寒,读书时成绩差,常挨老师批评。高中毕业,张明正连普通大学的分数线都没上。高考成绩出来后,平时开口怨这怨那的张明正,不从自身找原因,而是不停地埋怨自己家庭条件不好、埋怨父母没有给他创造良好的学习环境。      </div> </li> <li><a href="/article/543.htm" title="jQuery插件开发全解析,类级别与对象级别开发" target="_blank">jQuery插件开发全解析,类级别与对象级别开发</a> <span class="text-muted">IT独行者</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a><a class="tag" taget="_blank" href="/search/%E6%8F%92%E4%BB%B6%E3%80%80/1.htm">插件 </a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a> <div>jQuery插件的开发包括两种: 一种是类级别的插件开发,即给 jQuery添加新的全局函数,相当于给 jQuery类本身添加方法。 jQuery的全局函数就是属于 jQuery命名空间的函数,另一种是对象级别的插件开发,即给 jQuery对象添加方法。下面就两种函数的开发做详细的说明。   1 、类级别的插件开发 类级别的插件开发最直接的理解就是给jQuer</div> </li> <li><a href="/article/670.htm" title="Rome解析Rss" target="_blank">Rome解析Rss</a> <span class="text-muted">413277409</span> <a class="tag" taget="_blank" href="/search/Rome%E8%A7%A3%E6%9E%90Rss/1.htm">Rome解析Rss</a> <div>import java.net.URL;  import java.util.List;    import org.junit.Test;    import com.sun.syndication.feed.synd.SyndCategory;  import com.sun.syndication.feed.synd.S</div> </li> <li><a href="/article/797.htm" title="RSA加密解密" target="_blank">RSA加密解密</a> <span class="text-muted">无量</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86/1.htm">加密</a><a class="tag" taget="_blank" href="/search/%E8%A7%A3%E5%AF%86/1.htm">解密</a><a class="tag" taget="_blank" href="/search/rsa/1.htm">rsa</a> <div>RSA加密解密代码 代码有待整理 package com.tongbanjie.commons.util; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerat</div> </li> <li><a href="/article/924.htm" title="linux 软件安装遇到的问题" target="_blank">linux 软件安装遇到的问题</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/1.htm">遇到的问题</a><a class="tag" taget="_blank" href="/search/ftp/1.htm">ftp</a> <div>1 ftp配置中遇到的问题    500 OOPS: cannot change directory   出现该问题的原因:是SELinux安装机制的问题.只要disable SELinux就可以了   修改方法:1 修改/etc/selinux/config 中SELINUX=disabled    2 source /etc</div> </li> <li><a href="/article/1051.htm" title="面试心得" target="_blank">面试心得</a> <span class="text-muted">alafqq</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>最近面试了好几家公司。记录下; 支付宝,面试我的人胖胖的,看着人挺好的;博彦外包的职位,面试失败; 阿里金融,面试官人也挺和善,只不过我让他吐血了。。。 由于印象比较深,记录下; 1,自我介绍 2,说下八种基本类型;(算上string。楼主才答了3种,哈哈,string其实不是基本类型,是引用类型) 3,什么是包装类,包装类的优点; 4,平时看过什么书?NND,什么书都没看过。。照样</div> </li> <li><a href="/article/1178.htm" title="java的多态性探讨" target="_blank">java的多态性探讨</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>java的多态性是指main方法在调用属性的时候类可以对这一属性做出反应的情况 //package 1; class A{ public void test(){ System.out.println("A"); } } class D extends A{ public void test(){ S</div> </li> <li><a href="/article/1305.htm" title="网络编程基础篇之JavaScript-学习笔记" target="_blank">网络编程基础篇之JavaScript-学习笔记</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>1.documentWrite <html> <head> <script language="JavaScript"> document.write("这是电脑网络学校"); document.close(); </script> </h</div> </li> <li><a href="/article/1432.htm" title="探索JUnit4扩展:深入Rule" target="_blank">探索JUnit4扩展:深入Rule</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a><a class="tag" taget="_blank" href="/search/Rule/1.htm">Rule</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>        本文将进一步探究Rule的应用,展示如何使用Rule来替代@BeforeClass,@AfterClass,@Before和@After的功能。         在上一篇中提到,可以使用Rule替代现有的大部分Runner扩展,而且也不提倡对Runner中的withBefores(),withAfte</div> </li> <li><a href="/article/1559.htm" title="[CSS]CSS浮动十五条规则" target="_blank">[CSS]CSS浮动十五条规则</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>这些浮动规则,主要是参考CSS权威指南关于浮动规则的总结,然后添加一些简单的例子以验证和理解这些规则。   1. 所有的页面元素都可以浮动 2. 一个元素浮动后,会成为块级元素,比如<span>,a, strong等都会变成块级元素 3.一个元素左浮动,会向最近的块级父元素的左上角移动,直到浮动元素的左外边界碰到块级父元素的左内边界;如果这个块级父元素已经有浮动元素停靠了</div> </li> <li><a href="/article/1686.htm" title="【Kafka六】Kafka Producer和Consumer多Broker、多Partition场景" target="_blank">【Kafka六】Kafka Producer和Consumer多Broker、多Partition场景</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/partition/1.htm">partition</a> <div>0.Kafka服务器配置 3个broker 1个topic,6个partition,副本因子是2 2个consumer,每个consumer三个线程并发读取   1. Producer package kafka.examples.multibrokers.producers; import java.util.Properties; import java.util.</div> </li> <li><a href="/article/1813.htm" title="zabbix_agentd.conf配置文件详解" target="_blank">zabbix_agentd.conf配置文件详解</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/zabbix+%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/1.htm">zabbix 配置文件</a> <div>Aliaskey的别名,例如 Alias=ttlsa.userid:vfs.file.regexp[/etc/passwd,^ttlsa:.:([0-9]+),,,,\1], 或者ttlsa的用户ID。你可以使用key:vfs.file.regexp[/etc/passwd,^ttlsa:.: ([0-9]+),,,,\1],也可以使用ttlsa.userid。备注: 别名不能重复,但是可以有多个</div> </li> <li><a href="/article/1940.htm" title="java--19.用矩阵求Fibonacci数列的第N项" target="_blank">java--19.用矩阵求Fibonacci数列的第N项</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/fibonacci/1.htm">fibonacci</a> <div>参考了网上的思路,写了个Java版的: public class Fibonacci { final static int[] A={1,1,1,0}; public static void main(String[] args) { int n=7; for(int i=0;i<=n;i++){ int f=fibonac</div> </li> <li><a href="/article/2067.htm" title="Netty源码学习-LengthFieldBasedFrameDecoder" target="_blank">Netty源码学习-LengthFieldBasedFrameDecoder</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div>先看看LengthFieldBasedFrameDecoder的官方API http://docs.jboss.org/netty/3.1/api/org/jboss/netty/handler/codec/frame/LengthFieldBasedFrameDecoder.html API举例说明了LengthFieldBasedFrameDecoder的解析机制,如下: 实</div> </li> <li><a href="/article/2194.htm" title="AES加密解密" target="_blank">AES加密解密</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86/1.htm">加密解密</a> <div>AES加解密算法,使用Base64做转码以及辅助加密: package com.wintv.common; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decod</div> </li> <li><a href="/article/2321.htm" title="文件编码格式转换" target="_blank">文件编码格式转换</a> <span class="text-muted">ctrain</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E6%A0%BC%E5%BC%8F/1.htm">编码格式</a> <div> package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; </div> </li> <li><a href="/article/2448.htm" title="mysql 在linux客户端插入数据中文乱码" target="_blank">mysql 在linux客户端插入数据中文乱码</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/1.htm">中文乱码</a> <div>1、查看系统客户端,数据库,连接层的编码  查看方法: http://daizj.iteye.com/blog/2174993 进入mysql,通过如下命令查看数据库编码方式: mysql>  show variables like 'character_set_%'; +--------------------------+------</div> </li> <li><a href="/article/2575.htm" title="好代码是廉价的代码" target="_blank">好代码是廉价的代码</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6/1.htm">读书</a> <div>  长久以来我一直主张:好代码是廉价的代码。 当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。 当他们走近看我的表情、知道我是认真的时,才收敛一点。 当最初的惊愕消退后,他们会用一些这样的话来反驳: “好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的程序代码。” 我只</div> </li> <li><a href="/article/2702.htm" title="Android网络请求库——android-async-http" target="_blank">Android网络请求库——android-async-http</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Instagram和Pinterest的Android版就是用的这个网络请求库。这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通</div> </li> <li><a href="/article/2829.htm" title="ORACLE 复习笔记之SQL语句的优化" target="_blank">ORACLE 复习笔记之SQL语句的优化</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/SQL%E4%BC%98%E5%8C%96/1.htm">SQL优化</a><a class="tag" taget="_blank" href="/search/Oracle+sql%E8%AF%AD%E5%8F%A5%E4%BC%98%E5%8C%96/1.htm">Oracle sql语句优化</a><a class="tag" taget="_blank" href="/search/SQL%E8%AF%AD%E5%8F%A5%E7%9A%84%E4%BC%98%E5%8C%96/1.htm">SQL语句的优化</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2097999   SQL语句的优化总结如下   sql语句的优化可以按照如下六个步骤进行: 合理使用索引 避免或者简化排序 消除对大表的扫描 避免复杂的通配符匹配 调整子查询的性能 EXISTS和IN运算符 下面我就按照上面这六个步骤分别进行总结: </div> </li> <li><a href="/article/2956.htm" title="浅析:Android 嵌套滑动机制(NestedScrolling)" target="_blank">浅析:Android 嵌套滑动机制(NestedScrolling)</a> <span class="text-muted">gg163</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">移动开发</a><a class="tag" taget="_blank" href="/search/%E6%BB%91%E5%8A%A8%E6%9C%BA%E5%88%B6/1.htm">滑动机制</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%A5%97/1.htm">嵌套</a> <div>谷歌在发布安卓 Lollipop版本之后,为了更好的用户体验,Google为Android的滑动机制提供了NestedScrolling特性 NestedScrolling的特性可以体现在哪里呢?<!--[if !supportLineBreakNewLine]--><!--[endif]--> 比如你使用了Toolbar,下面一个ScrollView,向上滚</div> </li> <li><a href="/article/3083.htm" title="使用hovertree菜单作为后台导航" target="_blank">使用hovertree菜单作为后台导航</a> <span class="text-muted">hvt</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a> <div>  hovertree是一个jquery菜单插件,官方网址:http://keleyi.com/jq/hovertree/ ,可以登录该网址体验效果。 0.1.3版本:http://keleyi.com/jq/hovertree/demo/demo.0.1.3.htm hovertree插件包含文件: http://keleyi.com/jq/hovertree/css</div> </li> <li><a href="/article/3210.htm" title="SVG 教程 (二)矩形" target="_blank">SVG 教程 (二)矩形</a> <span class="text-muted">天梯梦</span> <a class="tag" taget="_blank" href="/search/svg/1.htm">svg</a> <div>SVG <rect> SVG Shapes SVG有一些预定义的形状元素,可被开发者使用和操作: 矩形 <rect> 圆形 <circle> 椭圆 <ellipse> 线 <line> 折线 <polyline> 多边形 <polygon> 路径 <path> </div> </li> <li><a href="/article/3337.htm" title="一个简单的队列" target="_blank">一个简单的队列</a> <span class="text-muted">luyulong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a> <div> public class MyQueue { private long[] arr; private int front; private int end; // 有效数据的大小 private int elements; public MyQueue() { arr = new long[10]; elements = 0; front </div> </li> <li><a href="/article/3464.htm" title="基础数据结构和算法九:Binary Search Tree" target="_blank">基础数据结构和算法九:Binary Search Tree</a> <span class="text-muted">sunwinner</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a> <div>  A binary search tree (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction that the key in any node is larger than the keys in all</div> </li> <li><a href="/article/3591.htm" title="项目出现的一些问题和体会" target="_blank">项目出现的一些问题和体会</a> <span class="text-muted">Steven-Walker</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a> <div>     第一篇博客不知道要写点什么,就先来点近阶段的感悟吧。     这几天学了servlet和数据库等知识,就参照老方的视频写了一个简单的增删改查的,完成了最简单的一些功能,使用了三层架构。 dao层完成的是对数据库具体的功能实现,service层调用了dao层的实现方法,具体对servlet提供支持。  &</div> </li> <li><a href="/article/3718.htm" title="高手问答:Java老A带你全面提升Java单兵作战能力!" target="_blank">高手问答:Java老A带你全面提升Java单兵作战能力!</a> <span class="text-muted">ITeye管理员</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>本期特邀《Java特种兵》作者:谢宇,CSDN论坛ID: xieyuooo 针对JAVA问题给予大家解答,欢迎网友积极提问,与专家一起讨论! 作者简介: 淘宝网资深Java工程师,CSDN超人气博主,人称“胖哥”。 CSDN博客地址: http://blog.csdn.net/xieyuooo 作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>