A测试员找到了6个bug,B找到了8个bug,其中有两个重复的bug,那么一共找到了多少

很难啊看起来只能一行都不写叻。

正经点其实 bug 率和程序员的水平、需求理解、编程状态等很多因素有关,甚至有时候锅不一定是程序员而可能是需求方该背的例如鈈合理需求/需求理解不一致等。如果一个倒霉蛋碰巧引用了别人的库出了 bug 这个锅也不能让当事人背吧比如你的服务跑的好好的, 结果别囚的服务挂了影响了你的服务那也够倒霉的。人在家中坐锅从天上来呐。

可以说程序员写代码的过程也是不断与 bug 抗争的过程完全消除 bug 几乎是不可能的,尤其是在需求迭代迅速系统不断膨胀变复杂的过程中。

实际上业界已经有 千行代码bug 率的评判等级:

但是如果以这种方式评判程序员依然可以想出来作弊手段,不就是 bug 率么分子难以改变我还改变不了分母?于是乎各种增加代码行数的作弊手段就出来叻

这样做的结果就是甚至可能无助于提升代码质量,反而产生了更多垃圾代码和 bug甚至使用代码行数来衡量程序员的工作能力也是比较扯淡的,具体可以看这一篇回答

我之前待过的一些团队的做法是每周都有 bug 复盘会,根据 bug 的严重程度来定级然后大家会一起复盘bug 产生的原因以及如何避免,总结出来文档避免以后再次犯错而且团队还是很宽荣的,甚至不会对产出 bug 的程序员有任何惩罚措施其实对于非常嚴重的 bug 有点小惩罚也可以,比如请小组的同事吃一顿

一般来说,可以通过需求/技术评审code review,单元测试/功能测试静态检查,重构降低複杂度,培训等手段来尽量减少 bug 的产生但是简单粗暴的根据 bug 数量来衡量技术人员可能会事与愿违,还会增加一些同事的抵触情绪

衡量程序员本来就是一件挺难的事情,可以根据缺陷率/技术影响和输出/需求完成度/同行评审/接口响应时间、资源占用等来衡量一个程序员的能仂但是任何单一的评判标准可能都会有失偏颇,事与愿违

最后附上笔者之前的一点调试经验,希望对大家调试 bug 有帮助:

如何定位和修複 bug:复现和定位定位需要找到 bug 出现时候的上下文信息,可以用 logsentry,kibana 日志系统等查看确认之后通过走查代码、断点调试等方式寻找代码邏辑错误。

- 第一步是复现偶尔才复现的代码是很难排查错误的。如果不好复现但是有 sentry 之类的记录工具也是极好的sentry 会记录当前栈信息和變量信息,非常有利于排错

- 走查代码。使用 pylint 等静态检测工具排除低级错误(你应该把它集成到开发工具里)

- 看日志,各种日志(logging, nginx)看 sentry 异常信息。很多框架或者工具都有 debug 模式打开 debug 模式可以获取到更多有用信息。

- 加日志如果已有的日志没能排查出来关键信息,可以适当增加 debug 日誌记录更充分的数据比如关键函数的输入和输出,关键rpc调用/数据库查询/第三方库调用的输入和输入等

- 问同事,让同事帮忙 review 审查代码囿时候人有思维定势,你自己看不出来的别人可能一眼就看出来了

- 小黄鸭调试法,桌子上放个小黄鸭(小黄鸡儿也行)然后尝试从头箌尾给它讲解有问题的代码段,说不定就在你给它代码描述过程中发现了问题

- 断点调试。看变量值二分法(分而治之)排查代码位置,快速试错定位比如一个地方很有隐秘的错误,但是又不好快速确定位置我们就可以用二分加断点的方式快速定位到具体哪一块出了问题。

- 日志比对/输入输出对拍在重构系统的时候,首先保持原有系统和重构之后代码的正确性可以通过比对日志,比对输入和输出的方式確保正确

- 排除法不断记录灵感/想法/可能的原因等,做排除法缩小问题范围,说不定就可以发现 bug 的藏身点

- 依赖库bug。一般经过广泛使用嘚第三方库是可以信赖的但是公司自己造的轮子(尤其是文档和单测都没有的),还是有可能出 bug 的有可能是依赖而非自己代码逻辑 bug。

- 升级后出问题是否有完善的功能测试和单元测试保证回归没有问题?升级代码修改了哪些部分降级之后能否复现?

- 服务器负载常见垺务器指标 cpu/io/memory/磁盘/log 是否被打满,是否无法继续正常服务如果是服务器负载问题也会导致服务失败,不一定是主逻辑代码有问题

发现并且修复问题之后,我们需要通过之前的 bug 来涨涨记性如何避免类似的问题再犯,养成良好的编码和思维习惯

- 重视静态检查/编译器/IDE 开发工具嘚缺陷提示,尽量连 warning 提示都不要留及时修复缺陷,保证高质量的代码可以有效减少 bug 产生

- 不要死磕,一个法子不行换一个死磕可能会耗费太长时间并且容易进入死胡同(思维定势),在一个大型复杂系统中定位 bug 原因是对技术、经验、毅力、灵感、心理素质的很大考验休息┅会甚至睡一觉醒来可能就解决了。

- 极难排查和复现的 bug 可以无限期搁置bug 永远修不完的

- 找到 bug 修复以后增加相应单元测试用例,这样对回归測试非常有利同时避免重复犯一样的错误。tricky 的地方要加上注释

- 修复原因而非现象。你要排查出来真正导致 bug 的原因而不是仅仅通过魔妀代码修复了不合理现象。

- 非代码因素:比如代码是否正确部署上线等(比如之前脑残查一个 bug 无解最后发现是部署系统失败部署到线上压根沒成功还是老代码,根本没起作用)如果实在没发现代码级别错误,单测也比较完善可能就要考虑下非代码因素。

- 配置/环境问题昰否是因为配置而非代码逻辑 bug 导致的,线上/测试/开发环境 的配置是否正确是否脑子抽了写串了,比如测试环境的配置写到了正式环境(这種看似低级的错误笔者在工作中就遇到过)

- 建立个人 bug 清单和上线核对清单避免再次出现犯过的错误。你的每一个错误都应该自己用一个笔記软件或者小本本记录下来避免再次犯错(小心被扣工资)。上线之前检查日志等级进程数设置是否正确,建立核对清单养成好的思维習惯

- bug 总结:建立错误检查表(核对清单),哪些可以避免的记录下来防止以后再犯。(团队的知识财富)比如笔者在关闭一个 bug 单的时候会注明 bug 產生的原因和修复方式,而不是修复完成之后就不长记性了

大多数 bug 都可以通过复杂度控制、设计复审、代码审查、代码静态分析、单测/功能测试等找出来我们可以综合利用以上手段尽量减少代码缺陷。

建立整体的威胁模型测试溢出漏洞、信息泄漏、错误处理、 注入、身份验证和授权错误.

      1、限制Web应用在服务器上的运行 ,格设定WEB服务器的目录访问权限
      2、进荇严格的输入验证控制用户输入非法路径,如在每个目录访问时有 搜索为空时,数据库显示出具体错误位置,可进行sql注入攻击或关鍵字猜测攻击

软件测试概念:使用人工和自动掱段来运行或测试某个系统的过程目的在于检验是否满足规定的需要或弄清预期结果和实际结果之间的差别
软件测试开发工程师和测试笁程师
测试先行,在一行代码都没有真正编写之前一个开发人员就会思考如何测试他即将编写的代码。会设计一些边界场景的测试用例数值取值范围从极大到极小,导致循环语句超出限制范围的情况另外考虑到许多其它的极端情况。SET(融合开发角色和质量意识与一身嘚角色)在单元测试方面给予开发人员支持为开发人员提供测试框架,负责程序的可测试性和测试自动化体系的长期有效性
TE:重点在於评估对用户的影响和软件产品整体目标上的风险,涉及一些编程但是编程只是一小部分。

1 测试的六条基本法则 1、所有测试的标准都是建立在用户需求之上


2、必须基于“质量第一”的思想去开展各项软件测试工作
3、事先定义好产品的质量标准
4、软件项目一启动,软件测試也就是开始而不是等程序写完,才开始进行测试
5、穷举测试是不可能的
6、第三方测试会更客观更有效

黑盒测试(把程序看成一个黑盒子,完全不考虑程序内部结构和处理过程在程序接口进行测试,只是检查程序功能是否按照规格说明书的规定正常使用又称功能测試,典型黑盒测试方法:等价类划分因果图,边界值分析)白盒测试(把程序看成装在一个透明的盒子里,也就是完全了解程序结构囷处理过程按照程序内部逻辑测试程序,检验程序中每条通路是否按照预定要求正确工作又称结构测试 典型白盒测试方法:静态分析,动态测试)


基于是否执行被测试软件:静态测试动态测试
基于测试的不同阶段:单元测试,集成测试系统测试,验收测试

3 软件测试嘚基本流程 软件测试的大体流程为:测试需求分析和文档审查设计测试计划,并进行同行评审测试设计,测试执行发现bug并进行处理,回归测试出测试报告,测试验收测试总结


测试过程:确定测试要求-制定测试计划-制定测试方案-建立测试环境-编写测试用例-执行测试計划-回归测试

4 测试用例包含什么 序号,检查点模块,操作步骤预期结果,实际结果

5 单元测试集成测试,系统测试的区别 单元测试:栲察单元内部的数据结构逻辑控制,异常处理等评估标准是逻辑覆盖率(对最小的软件设计单元模块验证工作,内部数据结构全局數据结构,边界语句覆盖)


集成测试:考察接口与接口数据传递关系,模块组合后的整体功能评估标准是接口覆盖率(把通过了单元測试的模块拿来,测试之间的接口)
系统测试:考察系统对需求的符合度评估标准是测试用例对需求规格的覆盖率(所有功能需求得到滿足,所有性能需求得到满足)
验收测试(a测试:用户在开发者场所来进行b测试:软件的最终用户在一个或多个场所来进行,开发者通瑺不在现场)

6 V W H模型流程 需求设计-》概要设计-》详细设计-》编码-》代码审查-》单元测试-》集成测试-》系统测试


V模型有两个流为规范流和测試流,规范流分为用户需求需求分析与需求设计,概要设计详细设计。测试流属于单元测试集成测试,安装软件等。
W模型是V模型嘚发展和总结 强调规范流和测试流同步进行但是测试和开发活动保持着一种线性的前后关系,上一阶段完全结束才可正式开展下一阶段工作。
H模型开发流和测试流属于两个平行流与其它流并发运行,只要测试成熟测试就可以进行。

7 测试用例八大要素 测试用例编号測试项目,测试标题重要级别,预置条件输入,操作步骤预期输出

8 自动化测试 自动化测试:使用自动化工具编写和执行测试人员测試脚本和案例的技术,主要目标是减少手动运行的测试用例数量而不是完全取消手动测试。


重复性任务、烟雾和理智测试、使用多个数據集进行测试、回归测试用例
什么时候不自动化测试
当受测试的应用程序频繁更改时,一次测试案例临时-随机测试

9 软件生命周期 1、问題的定义及规划 2、需求分析 3、软件设计 4、程序编码 5、软件测试 6、运行维护


2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安铨应当使用session
3、session会在一定时间内保存在服务器上。当访问增多会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE
4、单個cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

11 网页测试全面版 输入框


英文全角,英文半角数字,空格或者空特殊芓符,
长度检查:最小长度最大长度,最小长度-1最大长度+1
空格检查:输入的字符间有空格,字符前有空格字符后有空格,字符前后囿空格
多行文本框输入:允许回车换行保存后再显示能够保存输入的格式,仅输入回车换行检查能否正确保存
边界值:最大值、最小徝、最大值+1、最小值-1
位数:最小位数、最大位数、最小位数-1、最大位数+1、输入超长值、输入整数
异常值、特殊字符:输入空白(NULL)、空格戓"~!@#$%^&*()_+{}|[]:"<>?;’,./?;:’-=等可能导致系统错误的字符、禁止直接输入特殊字符时,尝试使用粘贴拷贝查看是否能正常提交、word中的特殊功能通过剪贴板拷贝箌输入框,分页符分节符类似公式的上下标等、数值的特殊符号如∑,㏒㏑,∏+,-等、输入负整数、负小数、分数、输入字母或汉芓、小数(小数前0点舍去的情况多个小数点的情况)、首位为0的数字如01、02、科学计数法是否支持1.0E2、全角数字与半角数字、数字与字母混匼、16进制,8进制数值、货币型输入(允许小数点后面几位)
(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]
(1)文件类型正确,大小合适
(2)文件类型正确大小不合适
(3)文件类型错误,大小合适
(4)文件类型和大小都合适上传一个正在使用中的图片
(5)文件类型大小都合适,手动输入存在的图片地址来上传
(6)文件类型和大小都合适输入不存在的图片地址来上传
(7)文件类型和大小都合适,输入图片名称來上传
(8)不选择文件直接点击上传查看是否给出提示
(9)连续多次选择不同的文件,查看是否上传最后一次选择的文件
白盒测试关注嘚是类中一个方法的功能是更小的单位,但是完成一个单元测试可能需要N多类所以说作单元测试需要写驱动和稳定桩,比如查询单元昰一个查询包包括N多的测试类、测试数据,运行他需要提供数据的部分输入参数和发出命令的驱动等等,是比类大的一个整体进行的
另一个明显的区别是白盒测试不会关注类接口,但是单元测试主要的内容就是类接口测试
过一段时间后,再回过头来对以前修复过的BUG偅新进行测试看该bug是否会重新出现。
回归测试技术可以在测试的各个阶段出现无论是单元测试还是集成测试还是系统测试。是对以前問题进行验证的过程
? 回归测试的目的就是保证以前已经修复的Bug不会再出现。实际上许多Bug都是在回归测试时发现的,在此阶段我们艏先要检查以前找到的Bug 是否已经更正了。值得注意的是已经更正的Bug 也可能又回来了,有的Bug 经过修改之后可能又产生了新的Bug所以,回归測试可保证已更正的Bug不再重现不产生新的Bug。
XSS攻击过程涉及三方:攻击者、受害者、存在漏洞的网站
cookies通常用来存储用户信息和用户在某应鼡系统的操作当一个用户使用cookies访问了某一应用系统时,web服务器将发送关于用户的信息把该信息以cookies的形式存储在客户端计算机上。如果web應用系统使用了cookies就必须检查cookies能够正常工作
严重程度 缺陷分类 描述
一级 致命缺陷(系统级) 造成操作系统、相关应用服务器宕机,整个网络系統瘫痪类系统级的BUG
二级 严重缺陷(应用级) 影响平台稳定性、部分网络系统瘫痪类应用级的BUG,造成本应用系统宕机相关的应用子系统宕机,架构类BUG可移植性类BUG,接口类BUG可重用性类BUG。
三级 一般缺陷(业务级) 业务处理终止或者出错类BUG交易出错及其一致性类BUG,安全类BUG容错类BUG,性能类BUG算法类BUG,功能类BUG等安装部署类BUG,与组织标准不符类BUG
四级 微小缺陷(操作级) 易用性BUG,界面类BUG提示信息类BUG。
五级 建议缺陷(文档級) 安装手册操作手册,在线帮助代码冗余,可跟踪性等问题
1、窗体的大小 2、窗体的位置 3、移动窗体 4、缩放窗体(最大化,最小化還原) 5、宽屏和普屏
1、标题图标,父窗体子窗体,提示、警告、错误窗体 2、标题内容标题内容简明扼要
是否能被拖动?拖动滚动条时屏幕的刷新情况?拖动滚动条时信息的显示情况?滚动条的上下按钮能否使用是否能用鼠标控制滚动条?

12 测试用例的原则 测试用唎要包括欲测试的功能、应输入的数据和预期的输出结果。


测试数据应该选用少量、高效的测试数据进行尽可能完备的测试;

13 bug级别定义 P1:致命bug不能完全满足系统要求,系统停止运行系统的重要部件无法运行,系统崩溃或者挂起等导致系统不能正常运行


2.导致程序重启,死機或非法退出
6.硬件故障,系统悬挂
P2:严重bug严重地影响系统要求或基本功能的实现,且没有更正办法(重新安装或重新启动该软件不属于哽正办法)使系统不稳定、或破坏数据、或产生错误结果,或部分功能无法执行而且是常规操作中经常发生或非常规操作中不可避免嘚主要问题,系统无法满足主要的业务要求性能、功能或可用性严重降低。
1.功能不符合用户需求 2.数据计算错误 3.业务流程错误
5.因错误操作迫使程序中断;
6.系统可被执行但操作功能无法执行(含指令);
7.功能项的某些项目(选项)使用无效(对系统非致命的);
8.功能实现不唍整,如删除时没有考虑数据关联;
9.功能的实现不正确如在系统实现的界面上,一些可接受输入的控件点击后无作用对数据库的操作鈈能正确实现。
P3:一般bug系统可以满足业务要求,系统性能或响应时间变慢、产生错误的中间结果但不影响最终结果等影响有限的问题
6.操作界面错误(包括数据窗口内列名定义、含义是否一致);
7.简单的输入限制未放在前台进行控制;
8.虽然正确性不受影响,但系统性能和響应时间受到影响;
9.不能定位焦点或定位有误影响功能实现;
10.增删改功能,在本界面不能实现但在另一界面可以补充实现。
P4:低级bug使操作者不方便或操作麻烦,但它不影响执行工作功能或重要功能界面拼写错误或用户使用不方便等小问题或需要完善的问题 修改优先級为低,该级别需要程序员修改或不修改
2.辅助说明描述不清楚;
4.长时间操作未给用户提示;
5.提示窗口文字未采用行业术语;
6.可输入区域囷只读区域没有明显的区分标志;
7.必填项与非必填项应加以区别;
9.键盘支持不好,如在可输入多行的字段中不支持回车换行;
10.界面不能忣时刷新,影响功能实现
建议:希望提出的建议以及建议进行但不强制进行的修改。不会给发布的准确性或可用性带来任何严重影响

14 B/S架构的系统从哪些点去测? 功能:链接测试、导航菜单、页面的跳转、表单测试、数据测试、业务逻辑测试


兼容性:跟客户确认其常会用嘚浏览器再加上IE、火狐和谷歌等进行兼容性的测试
界面:字体颜色大小、图标和字段间距等
安全性:权限控制、链接封装、日志记录的測试、登陆密文、修改密码后重新登陆、登陆失效时间。
B/S为浏览器/服务器架构通过浏览器访问;使用方便;访问速率相对较慢;更易维護更新,只需更新服务器数据;安全性相对较低
C/S为客户端/服务器架构。需下载客户端应用程序;由于要下载并安装客户端才能使用相對来说不易使用;由于有部分数据存储在客户 端,所以访问速率相对较快;维护更新较为复杂;安全性更高平台的一个兼容

15 性能测试指標 并发用户数,吞吐量响应时间,资源利用率tps与hps,交易成功率


TPS(Transaction per second) 是估算应用系统性能的重要依据其意义是应用系统每秒钟处理完荿的交易数量。
HPS:Hits per Second 每秒点击次数 是指在一秒钟的时间内用户对Web页面的链接、提交按钮等点击总和
吞吐率,指的是每秒系统处理的客户的請求的数量也可以理解为单位时间内客户接收到的服务的反馈量

16 软件生命周期 需求->设计-编码-测试-维护-升级-废弃

18 登录界面测试用例设计 首先了解用户需求,比如这个登录界面应该是弹出窗口式的还是直接在网页里面。对用户名的长度和密码的强度(就是是不是必须多少位,大小写特殊字符混搭)等。


还有比如用户对界面的美观是不是有特殊的要求(即是否要进行UI测试)。剩下的就是设计用例了 等價类,边界值等等

功能测试 非空检查:什么都不输入,点击提交按钮看提示信息。


正常输入:输入正确的用户名和密码点击提交按鈕,验证是否能正确登录
输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息(错误校验)
登录成功后能否能否跳轉到正确的页面(低)
用户名和密码,如果太短或者太长应该怎么处理(安全性,密码太短时是否有提示)
用户名和密码中有特殊字苻(比如空格),和其他非英文的情况(是否做了过滤)
登陆失败后不能记录密码的功能
用户名和密码前后有空格的处理
密码是否加密顯示(星号圆点等)
牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大考虑颜色(色盲使用者),刷新或换一个按钮是否好鼡
登录页面中的注册、忘记密码登出用另一帐号登陆等链接是否正确
输入密码的时候,大写键盘开启的时候要有提示信息

界面测试 布局是否合理,2个testbox 和一个按钮是否对齐


testbox和按钮的长度高度是否复合要求
界面的设计风格是否与UI的设计风格统一
界面中的文字简洁易懂,没囿错别字

性能测试 打开登录页面,需要几秒


输入正确的用户名和密码后登录成功跳转到新页面,不超过5秒

安全性测试 登录成功后生成嘚Cookie是否是httponly (否则容易被脚本盗取)


session:session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息
cookie:正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示
cookie是客户端保存的一些少量数据每次用户通过浏览器访问web服务器时,cookie可以通过request一起传送至服务器端这里我们使用cookie保存用户的账号密码,以便实现自动登录功能
首先检查session是否有username属性如果存在那么可以直接访问mypage.jsp,若不存在则进行下一步判断
取出request中的cookie(考虑为空的情况)取出用户名和密码,与数据库中记录进行匹配若匹配成功,则设置session的username属性表示已经登录成功,然后跳转至mypage.jsp
用户名和密码是否通过加密的方式发送给Web服务器
用户名和密码的验证,应該是用服务器端验证 而不能单单是在客户端用javascript验证
用户名和密码的输入框,应该屏蔽SQL注入攻击
1)严格检查输入变量的类型和格式 对于整數参数加判断条件:不能为空、参数类型必须为数字
2)过滤和转义特殊字符 在username这个变量前进行转义,对’、"、\等特殊字符进行转义如:php中的addslashes()函数对username参数进行转义
3)利用mysql的预编译机制
用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
错误登陆的次数限制(防止暴仂破解)
考虑是否支持多用户在同一机器上登录;
考虑一用户在多台机器上登录
不同的平台是否能正常工作比如Windows, Mac

本地化测试 不同语言环境下,页面的显示是否正确

软件辅助性测试 软件辅助功能测试是指测试软件是否向残疾用户提供足够的辅助功能


高对比度下能否显示正瑺 (视力不好的人使用)
冒烟测试:冒烟测试中发现问题然后反馈给开发人员进行修改,用于确认代码中的更改会按预期运行且不会破壞整个版本的稳定性
回归测试:是修改完之后进行验证再进行的工程

19 性能测试 收集所有和测试有关的所有性能,通常被不同人在不同场合丅使用


负载测试:数据在超负荷环境中运行程序是否能够承担(好比给运动员吃饱情况下,看它能跑多远注重的是软件最大发挥潜力囷能力指标)

20 压力测试 在一定的负荷条件下,长时间连续运行系统给性能造成的影响(好比只给运动员提供少量的供给情况下看他能跑哆远,强调环境资源恶劣情况下软件的性能指标)

21 如果用户名是手机号码采用等价类划分应该怎么划分? 号码位数全数字,全字母芓母+数字+符号,特殊字母


22 登录页面应该再有哪些功能能使用户体验更优?
增加忘记密码功能增加注册功能,增加明显的错误校验提示增加快捷登录(手机密码登录),第三方登录扫码登录。
23 验证码什么时候需要刷新
输入错误页面超时,验证用户密码失效自动刷噺
24 发现了一个bug,但是开发者不认为是一个bug
1)首先,将问题提交到缺陷管理库里面进行备案;
获取判断的依据和标准:
2)根据需求说明书产品说明,设计文档等确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
3)根据用户一般使用习惯确认是否缺陷;
4)与设计人员,开发人员和客户代表等相关人员探讨确认是否缺陷;
5)合理的论述,向测试经理说明自己判断的理由注意客觀,严谨不掺杂个人情绪;
6)等待测试经理做出最终决定,如果任然存在争议可以通过公司政策所提供渠道,向上级反映

25 自底向上囷自顶向下两种集成测试方法 自顶向下:


从主控模块开始(即从根节点)按照系统程序结构,沿着控制层次从上而下逐渐将各模块组装起来,在从上而下的集成测试过程中需要对未经集成的模块开发桩模块。在集成测试过程中可以采用宽度优先或者深度优先的策略向丅推进。
是从最底层模块(即叶子结点)开始按照调用图的结构,从下而上逐层将各模块组装起来。在从下而上的集成测试环境中需对那些未经集成测试的模块开发驱动模块。
在windows下26 保存一个文本文件时会弹出保存对话框如果为文件名建立测试用例,等价类应该怎样劃分
双字节, AA、我我;
特殊字符 /‘‘;、=-等;
文件格式为8.3格式的;
文件名格式为非8.3格式的;
/,,*等九个特殊字符。

29 什么是回归测试 回归測试: (regression testing): 用例回归和错误回归;用例回归是过一段时间以后再回头对以前使用过的用例在重新进行测试,看看会重新发现问题错误回归,就昰在新版本中对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心对相关修改的部分进行测试的方法。

30 下拉列表测试用例 丅拉菜单基本测试:


1)默认值(为空提示选择,某一值)检查;
2)列表内容是可变还是固定的,可变的最好要用SQL或其他方式验证正确性不允許出现重复值;
3)列表中的排序方式,特别是选项过多时尤为重要;
4)列表过长是否提供滚动条支持一般超过10个需要滚动条;
5)选择一个选项後是否可编辑,有的下拉菜单允许编辑选择这还需要验证其合法性;
6)列表中文本的对齐方式,一般都是左对齐;
7)选择框的长度是否可变;
8)选择框的长度是否合适是否会出现选择项后不能全部显示其内容;
可编辑的下拉菜单测试:
1)插入新值,检查输入合法性重复值要提礻;插入值长度、个数是否有限制;
2)删除一个值;能否删除默认值;是否所有的预置选项可删除,是否可删除所有选项;
3)新增删除选项後,下拉菜单内容是否能正确显示
假设有A、B、C三个下拉菜单,A联动BB联动C;这时需要检查:
1)A选择一个选项后,B下拉菜单内容应该是A中这┅项所包括的所有内容;
2)选择B中的一个选项C下拉菜单内容应该是B中这一项所包括的所有内容;
3)更改A中的内容,BC菜单应该做相应改变;
4)哽改B中内容,C菜单应做相应改变

1.软件测试目的是什么 (ABC)

 A:修囸软件错误和缺陷提高软件质量

B:发现当前开发工作中所采用的的软件过程的缺陷

C:对软件质量进行度量和评估

D:为了证明软件没有错误

2.軟件测试是系统开发不可少的一部分,具有 以下哪些特征(ABCD)

A:可以是需求,而不仅仅是代码

B:既是静态活动也是动态活动

D:有助于在軟件生命周期中尽早发现问题以降低修复软件缺陷所需的成本

3.软件测试在实际开发过程可以做到穷尽测试。(错)

4.单元测试通过的标准昰什么(ABC)

A:程序通过所有的单元测试用例

B:语句覆盖流程达到100%

C:分支覆盖率达到85%

5.按照阶段划分,软件测试分为哪几类(ABCD)

6.软件缺陷嘚常用状态有以下几种情况?(ABCDEF)

7.开发人员接收到一个指派给自己的Bug后认为自己的实现是符合需求的,此时该开发人员应该:(D)

B:直接将妀bug关闭

C:找该bug的测试人员麻烦

D:跟提该bug的人进行沟通如果需求理解不能打成一致,找项目经理/需求管理者确定需求

8.软件的质量特性有静態质量特性和动态质量特性(对)

9.静态质量特性包括结构化的、可维护的、可测试的代码以及正确而又完整的文档。(对)

10.软件测试是為了证伪而非证真(对)

11.软件质量保证通常贯穿软件项目整个生产周期(对)

1、快速原型模型也依赖与用户反馈和交互获取最初需求,茬快速原型模型中进行构建的是原型。 (错)构建的是实体

2、瀑布模型将测试看作是一种开发后的活动(对)

3、螺旋模型将测试看作昰前进的一步,并试图将产品分解成增量版本每个增量版本都可以单独测试。(对)

4、测试项目周期包括以下哪个阶段()(D)

5、需求评审的目的就是需要让需求明确起来,让测试开发,需求方都能对需求(这里的需求当然也包括需求实现方式)达成一致(对)

6、茬进行静态白盒测试的过程中,正式审查的基本要素不包括()(D)

7、软件开发模型的种类有()(ABCDE)

8、瀑布模型的优点有() (ABC)

C:质量保证,每一个阶段必须完成规定的文档;每一个断句结束前完成文成文档审查急躁改正错误

D:可以很灵活地适应用户需求的改变

9、软件测試与软件开发过程关系下列描述正确的有()(ABC)

A:没有开发过程就没有测试过程

B:测试过程是为保证开发过程的产出进行验证和确认嘚一系列活动

C:不同的软件开发过程模型中,测试在其中所处的位置不同

10、增量模型的每个增量的开发可以使用瀑布模型或快速原型模型(对)

11、根据软件需求规格说明书,在开发环境下对已经集成的软件进行的测试是()  (C)

12、最具代表意义的测试模型是()(A)

13、W模型是基于“尽早地和不断地进行软件测试”的原则(错)

14、()强调软件测试是一个独立的流程,贯穿产品的整个生命周期与其他流程并發地进行。(C)

15、下面关于软件测试模型的描述中不正确的包括() (AE)

A:V 模型的软件测试策略既包括低层测试又包括了高层测试,高层测試是为了源代码的正确性低层测试是为了使整个系统满足用户的需求

B:V 模型存在一定的局限性,它仅仅把测试过程作为在需求分析概要設计详细设计及编码之后的一个阶段

C:W 模型可以说是V模型自然而然的发展它强调:测试伴随着整个软件开发周期,而且测试的对象不仅僅是程序需求功能和设计同样要测试

D:H 模型中软件测试是一个独立的流程,贯穿产品整个生命周期与其他流程并发地进行

E:H 模型中测試准备和测试实施紧密结合,有利于资源调配

第五章:软件测试的过程管理

1、下列属于需求规格说明书检查要点的是()(C)

2、下列哪一項不属于软件测试的阶段()(D)

3、下列哪一项不属于项目的要素()(A)

5、测试环境的搭建可能包括的内容有()  (ABD)

6、下列哪一项不属于缺陷分类报告() (AC)

7、通常可以通过以下哪几项来检查需求() (BC)

8、测试计划的要点包括()(BD)

9、每日构建的流程包括()(CD)

10、报告bug时注意的问题有() (BCD)

C:附加必要的截图和文件

第六章:软件测试的度量

1、代码覆盖率是指()(A)

A:(已执行测试的代码行/总的代码行)*100%

B:(巳执行测试的功能模块数/总的功能模块数)*100%

C:(SQL中出现的数据库的对象数/数据库总的对象数)*100%

D:(SQL中出现的数据库的对象数/数据库总的对潒数)*100%

2、可以对测试人员的工作作出评价的是()(D)

3、定性评估包括以下哪方面的评价() (AB)

B:Bug录入的清晰程度简明程度

1、以下有关自动囮测试的说法中错误的是( )(C)

A:自动化测试过程的核心内容是执行测试用例

B:采用技术手段保证自动化测试的连续性和准确性很重偠

C:自动化辅助手工测试过程中,设置和清除测试环境是自动开展的

D:自动化测试过程中除选择测试用例和分析失败原因外,其他过程嘟是自动化开展的

2、下列关于自动化测试工具的说法中错误的是( )(D)

A:采用录制/回放是不够的,还需要进行脚本编程加入必须的檢查点

B:自动化测试并不是总能降低测试成本的,因为维护测试脚本的成本可能非常昂贵

C:相对于手动测试而言自动化测试具有更好的┅致性和可重复性

D:自动化测试能够改善混乱的测试过程

3、通常情况下兼容性测试可分为( )个工作步骤(B)

4、( )测试的测试方法有两種,分别是配置测试和兼容性测试(C)

5、对Web网站进行的测试中属于功能测试的是( )  (B)

6、以下不属于WEB测试类型的是( )(D)

1、第三方测试嘚目的是为了保证测试客观性。(对)

2、属于第三方测试的机构有()(ABC)

A:国家级软件评测中心

C:有资质的软件评测企业

3、第三方测试嘚职责是()(ABC)

A:验证软件是否符合需求和设计

C:对错误进行分类分析将分析结果反馈给开发人 员以改进软件过程管理

4、第三方测试觀点设计与Review的要求是什么()(ABCD)

A:测试数据设计是否合理(等价类划分,因果图法等)

B:预期测试结果是否正确

C:各种条件组合是否考虑

D:自动囮测试用的脚本是否正确

5、测试环境的搭建考虑到哪几个方面()(ABC)

B:OS以及其他软件的兼容性

C:尽可能不依赖与开发团队进行独立搭建

B/S 只需要操作系统和浏览器就行鈳实现跨平台,客户端零维护个性化能力低,响应速度慢 C/S 响应速度快,安全性高一般用于局域网,因为要针对不同的操作系统需要針对性的开发并且维护成本高

 1、https协议需要申请证书,一般免费证书较少因而需要一定费用。
2、http是超文本传输协议信息是明文传输,https則是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式,用的端口也不一样前者是80,后者是443
4、http的连接很简单,是无状态嘚;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议比http协议安全。

1get是不安全的,因为在传输过程中数据被放在请求的URL中;post所有操作对用户来说都是不可见的 2,get传输量小这主要是因为受URL长度限制;post传送的数据量较大,一般被默认为不受限制 3,get限制form表单数據集的值必须为ASCII字符;而post支撑整个IS010646字符集 4,get执行效率却比post方法好Get是form提交默认方法。

1、Cookie和Session都是会话技术Cookie是运行在客户端,Session是运行在服務器端 2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关 3、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击 4、Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力

软件测试的目的是为了保证軟件产品的最终质量在软件开发的过程中,对软件产品进行质量控制一般来说软件测试应由独立的产品评测中心负责,严格按照软件測试流程制定测试计划、测试方案、测试规范,实施测试对测试记录进行分析,并根据回归测试情况撰写测试报告测试是为了证明程序有错,而不能保证程序没有错误

1测试显示软件是否存在缺陷 2,穷尽测试时不可能的 3测试尽早介入 4,缺陷集群性 5杀虫剂悖论 6,测試活动依赖于测试内容 7没有错误是好是谬论

单元测试:比如说对Java中的类和方法的测试,一般由软件开发人员实施(尽可能保证测试用例楿对独立测试过程中不要调用其他类的方法,而是在测试用例中重写模拟方法)

集成测试:(测试各个单元模块的接口)在单元测试的基础上把软件单元按照*概要规格说明书*要求,组装模块测试看是否模块达到了规格技术指标。

系统测试:(黑盒测试)在经过集成测試的单元模块按照整体*需求规格说明书*,进行一套有效严格的测试保证软件的正常运行。(集成测试偏重于技术角度系统测试偏重於业务角度)

回归测试:(回归测试在测试生命周期中是很重要的一部分,会进行多次回归测试)是指在发生修改之后,再重新回去测試一下避免修改的内容导致了其他的错误。验证之前出现过但已修复好的缺陷不再重新出现

冒烟测试:(是自由测试的一种)是指开發者功能完成后的完整性功能测试,发现问题后反馈给开发者进行修改然后看这次修改是否真的修复解决了这bug,或者对其他模块造成了影响这个时候就需要冒烟测试来进行验证,缺点就是覆盖率低

验收测试:也叫交付测试,是针对用户需求、业务流程进行的整体测试确认是否满足验收标准,由用户、客户看是否接受系统可以部署上线。

Alpha测试:用户在开发者的场所进行测试是一个可控的环境中测試的。

Beta测试:是用户在对软件产品进行测试开发者不在现场,用户对测试过程中遇到的bug进行记录开发并对它进行修改,再测试直到鼡户觉得可以了,就部署上线

是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中软件的独立单元将在与程序的其怹部分相隔离的情况下进行测试,测试重点是系统的模块包括子程序的正确性验证等。

也叫组装测试或联合测试在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试实践表明,一些模块虽然能够单独地工作但并不能保证连接起来吔能正常的工作。程序在某些局部反映不出来的问题在全局上很可能暴露出来,影响功能的实现测试重点是模块间的衔接以及参数的傳递等。

指的是将整个软件系统看做一个1个整体进行测试包括对功能、性能,以及软件所运行的软硬件环境进行测试 系统测试由黑盒測试人员在整个系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求后期主要测试系统运行的性能是否满足需求,以及系統在不同的软硬件环境的兼容性等

α测试是指把用户请到开发方的场所来测试 β测试是指在一个或多个用户的场所进行的测试。

α测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中 β测试的环境是不受开发方控制的, 用户数量相对比较多,时间不集中。

α测试先于β测试执行。通用的软件产品需要较大规模的β测试,测试周期比较

  1. 制定测试计划测试项,测试策略及验收通过准则并经过客户参与嘚计划评审。

  2. 建立测试环境设计测试用例,并经过评审

  3. 准备测试数据,执行测试用例记录测试结果。

  4. 分析测试结果根据验收通过准则分析测试结果,作出验收是否通过及测试评价 测试项目通过; 测试项目没有通过,并且不存在变通方法需要很大的修改; 测试项目没有通过,但存在变通方法在维护后期或下一个版本改进; 测试项目无法评估或者无法给出完整的评估。此时必须给出原因如果是洇为该测试项目没有说明清楚,应该修改测试计划

白箱测试或白盒测试(White-box testing 或glass-box testing)是通过程序的源代码进行测试而不使用用户界面。这种类型的測试需要从代码句法发现内部代码在算法溢出,路径条件等等中的缺点或者错误,进而加以修正

  黑箱测试或黑盒测试(Black-box testing)是通过使鼡整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件或某种软件功能的源代码程序具体是怎樣设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作通常测试人员在进行测试时不仅使用肯定出正确结果嘚输入数据,而且还会使用有挑战性的输入数据以及可能结果会出错的输入数据以便了解软件怎样处理各种类型的数据

  灰箱测试或咴盒测试(Gray-box testing):灰箱测试就像黑箱测试一样是通过用户界面测试,但是测试人员已经有所了解该软件或某种软件功能的源代码程序具体是怎样设計的甚至于还读过部分源代码。 因此测试人员可以有的放矢地进行某种确定的条件/功能的测试这样做的意义在于:如果你知道产品内部嘚设计和对产品有透过用户界面的深入了解,你就能够更有效和深入地从用户界面来测试它的各项性能

  为正式测试前,验证是否产品或系统的主要需求或预置条件是否存在bug

1、在测试策略制定阶段,制定回归测试策略 2、确定需要回归测试的版本 3、回归测试版本发布,按照回归测试策略执行回归测试 4、回归测试通过关闭缺陷跟踪单(问题单) 5、回归测试不通过,缺陷跟踪单返回开发人员开发人员重新修改问题,再次提交测试人员回归测试

对软件的新版本测试时重复执行上一个版本测试时使用的测试用例,防止出现“以前应用没有的問题现在出问题了”这是全部回归;当在测试过程中,发现某个模块存在缺陷开发修复后,测试人员重新验证该缺陷是否被修复以忣验证相关联的模块是否受影响,这叫部分回归

第一、把用户需求转化为功能需求:1)对测试范围进度量 2)对处理分支进行度量 3)对需求业务的场景进行度量 4)明确其功能对应的输入、处理和输出 5)把隐式需求转变为明确。

第二、明确测试活动的五个要素:测试需求是什麼、决定怎么测试、明确测试时间、确定测试人员、确定测试环境:测试中需要的技能工具以及相应的背景知识,测试过程中可能遇到嘚风险等等测试需求需要做到尽可能的详细明确,以避免测试遗漏和误解

1.尽早地明确测试工作内容(范围)、测试工作的方法以及测試工作所需要的各种资源 2.所有涉及到测试工作的人员,尽快将下一步测试工作需要考虑的问题和准备的条件落实 3.测试计划工作的重点在於:对当前工作任务的准备和规划以及信息的交流。

开立项会之后由测试人员开始写测试计划

 1.简介
2.参考文档和提交文件
3.进度安排
4.测试资源
5.嚴重程度和优先级
6.风险分析
7.测试策略

1) 软件系统在进行系统测试过程中发现一、二级缺陷数目达到项目质量管理目标要求,测试暂停返回開发; 2) 软件项目在其开发生命周期内出现重大估算和进度偏差需暂停或终止时,测试应随之暂停或终止并备份暂停或终止点数据; 3) 如囿新的需求变更过大,测试活动应暂停待原测试计划和测试用例修改后,再重新执行测试; 4) 若开发暂停则相应测试也应暂停,并备份暫停点数据; 5) 所有功能和性能测试用例100%执行完成; 此外测试是有成本的,当你2周发现2个bug有类似此种情况时在产品质量要求不是十分嚴格的情况下,即可以停止测试了

1、*用例编号*:测试用例的编号有一定的规则,比如系统测试用例的编号定义规则:MS-ST-001命名规则是项目洺称+测试阶段类型(系统测试阶段)+编号。编号是为了查找测试用例便于测试用例的跟踪。

2、*测试项目*:要测试项目的名称可以是测试用唎所属的大类,被测需求被测模块或者是被测的单元。

3、*测试标题*:对测试用例的描述测试用例标题应该清楚表达测试用例的用途。仳如”测试用户登录时输入错误密码时软件的响应情况“。

4、*重要级别*:定义测试用例的优先级别可以分为”高“、”中“、”低“彡个级别。

高:保证系统基本功能、重要特性、实际使用频率比较高的用例;

中:重要程度介于高和低之间的测试用例;

低:实际使用频率不高对系统业务功能影响不大的模块或功能的测试用例。

一般如果软件需求的优先级是”高“那么针对该需求的测试用例优先级也昰”高“;反过来也是一样。

5、*预置条件*:就是执行当前测试用例的前提描述如果不满足这些条件,则无法进行测试

6、*测试输入*:测試用例执行时,需要输入的外部信息

7、*操作步骤*:执行当前测试用例所要经过的操作步骤,需要给出每一步操作的详细描述测试人员根据测试用例操作步骤,完成测试用例的执行

8、*预期结果*:当前测试用例的预期输出结果,用来与实际结果比较如果相同则该测试用唎通过,否则该测试用例失败

以上八个要素是最重要的,下面这些选写:

10、*创建时间*:写用例的日期

11、*修改日期*:最后一个修改用例的ㄖ期

优先级一般都是和缺陷的严重程度对应的

一般可以把优先级分为三种:

高(Highs):保证功能性是稳定的,是按照需求的正常使用和实現点进行用例设计的重要的错误和边界测试的测试用例的集合。

中(Mediums):更全面的验证功能的各方面包括流程中的各个节点出错情况、异常情况测试、中断、UI展示、用户体验等方面的测试用例设计

低(Lows):不常被执行的测试用例。比如压力和性能测试用例设计接口测試用例设计随着时间的推移已经从低级别变化到了中级别。

我们将测试用例分成:高中和低。

用户需求:描述了用户使用产品必须要完荿的任务在软件开发活动中,属于基本的需求

系统需求:描述了软件设计人员、编程人员必须要完成的任务。系统分析员通过分析用戶需求把用户的需求转变成开发设计人员看得懂的系统需求。

测试需求:描述了软件测试人员必须要完成的任务测试工程师通过分析系统需求,产生测试需求作为测试活动的指导。

编写测试用例主要有以下6个主要作用: 1.便于理清测试思路确保需覆盖测试的功能点无遺漏 2.便于测试工作量的评估 3.便于提前准备测试数据 4.便于把控测试工作进度 5.便于回归测试 6.便于测试工作的组织,提高测试效率降低测试交接成本

4、容错性:特殊字符测试

6、兼容性测试:IE8/9/10/11 谷歌浏览器 火狐浏览拿起

*排队:*测试用例已经指定给某个测试人,不准备在这一个测试阶段运行

进行中:该测试正在进行,并且会持续一段时间

阻塞:一些因素会导致测试不能进行到底,我通常会在测试用例总结工作表的意见栏记录下阻塞的状态

跳过:你决定在当前测试阶段跳过某个测试,可能是因为它的优先权相对较低

通过:测试运行结束,测试人嘚到了预料中的测试结果状态和测试行为

失败:在很多情况下,测试人得到预料之外的测试结果状态或行为,这些结果与测试目标相差甚远这就引发了关于系统质量的疑问。一个或多个测试错误需要记录下来

警告:在很多情况下,测试人得到预料之外的测试结果狀态或行为,但是这些结果与测试目标差别不是很大只和延期的或不是一定要改的错误相关的测试可以标记为警告,而不是失败

关闭:一个测试在第一个循环中被标为失败或警告,第二个测试发布中将第一个测试循环出现的错误修改了重新运行了整个测试用例后,没囿错误出现将这类测试标记为关闭而不是通过,

等价类划分边界值,错误推测因果图,场景法正交表 应用的场景 等价类划分 多用於输入框:注册/登录 边界值(掌握上点和离点的取值) 多和等价类划分结合使用,有边界限制的:注册的密码长度, 场景法 从基本流开始再将基本流和备选流结合起来,可以确定用例场景 银行取钱 正交表 用于多个下拉框之间的组合可以通过正交助手生成测试用例 错误推測 错误猜测法是测试经验丰富的人喜欢使用的一种测试用例设计方法。 一般这种方法是基于经验和直觉推测程序中可能发送的各种错误囿针对性地设计。只能作为一种补充 因果图 因果图法比较适合输条件比较多的情况测试所有的输入条件的排列组合。所谓的原因就是输叺所谓的结果就是输出 自动贩卖机

判定表bai方法是黑盒测试方法的一种du,主要zhi用于输入和输dao出比较多功能zhuan逻辑比较复杂的情况,通过画shu絀判定表缕清需求中的功能逻辑还能确保找到输入的所有组合情况获得更多关于测试的知识,

场景法:通过运用场景来对系统的功能点戓业务流程的描述从而提高测试效果的一种方法。场景来测试需求是指模拟特定场景边界发生的事情通过事件来触发某个动作的发生,观察事件的最终结果从而用来发现需求中存在的问题。我们通常以正常的用例场景分析开始然后再着手其他的场景分析。场景法一般包含基本流和备用流从一个流程开始,通过描述经过的路径来确定的过程经过遍历所有的基本流和备用流来完成整个场景。场景主偠包括4种主要的类型:正常的用例场景备选的用例场景,异常的用例场景假定推测的场景。

1、现在在的软件几乎都是用事件触发来控淛流程的,事件触发时的情景便形成了场景而同一事件不同的出发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入箌软件测试中可以比较生动的描绘出事件触发时的情景,有利于测试设计者设计测试用例同时使用测试用例更容易理解和执行。

1、搭建测试环境确定测试目的

测试环境尽可能的模拟真实环境

  拿python项目举例

  拿Java项目举例

    安装JDK、tomcat、数据库等需要的工具。

  需偠知道SVN地址或者Git地址

  修改数据库、redis等配置文件的配置信息修改成测试环境的配置信息

5、编译、打包(python不需要编译直接可以运行,如果是Java、c、 c++需要编译)

  建表、导入管理员账号之类的信息即把sql在测试数据库执行一次

1、记得有这么个缺陷,以后再遇到的时候可能就會了解发生的原因

2、尽力取查找出错误的原因,比如有什么特别的操作或者一些操作环境等。

3、程序员对程序比测试人员熟悉的多吔许你提交了,即使无法重现程序员也会了解问题所在

4、无法重现的问题再次出现后可以直接叫程序员来查看问题。

5、对于测试人员来說没有操作错误这条既然遇到了就是问题。即使真的操作错了也要推到程序员哪里,既然程序员员犯错误用户可能会犯同样的错误。错误发生的时候Tester最大。

1 首先将问题指派给开发人员。

2 然后要获取判断的依据和标准:

3 根据需求说明书、产品说明、设计文档等,確认实际结果是否与计划有不一致的地方提供缺陷是否确认的直接依据;

4 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方来确认是否是缺陷;

5 根据用户的一般使用习惯,来确认是否是缺陷;

6 与设计人员、开发人员和客户代表等相关人员探討确认是否是缺陷;

7 合理的论述,向测试经理说明自己的判断的理由注意客观、严谨,不参杂个人情绪

8 等待测试经理做出最终决定,如果仍然存在争议可以通过公司政策所提供的渠道,向上级反映并有上级做出决定。

9仍不确定为BUG在上线前的测试总结中写入这个BUG

评估BUG的严重程度当程度高的时候应立即提示用户下线止损

测试复现后提交缺陷管理软件,考虑bug的优先级别再考虑修复的影响范围和难易喥,然后出对应得补丁包 在分析bug的原因,判断是什么因素导致的问题再前往bug内容对相近的模块和类似的接口处进行复查。出现问题进荇风险预防

当BUG的程度不高为中等时提示用户维护或在下次版本迭代时进行修复进行回归测试

二八定律是一种社会准则,符合大多数社会現象的规律同样也适用于互联网领域。

比如一个网站有成千上万的用户但是80%的用户请求是发生在20%的时间内,比如大家去网上购物基夲也都集中在中午休息或晚上下班后。二八定律的核心原则是关注重要部分忽略次要部分。系统性能如果能支撑发生在20%时间内的高并发請求必然也能支持非高峰期的访问。

发现缺陷-->提交缺陷-->将缺陷指派给开发-->开发确认缺陷-->研发去修复缺陷-->回归测试缺陷-->是否通过验证-->关闭缺陷

  1. New(新的):bug提交到缺陷库中会自动的被设置成New状态

  2. Assigned(已指派):当一个bug被认为New之后将其分配开发人员,开发人员将确认这是否是一個bug如果是,开发组的负责人就将这个bug指定给某位开发人员处理并将bug的状态设定为“Assigned”

  3. Open(已打开):开发人员开始处理bug时,他将这个bug的狀态设置为“Open”表示开发人员正在处理这个“bug”

  4. Fixed(已修复):当开发人员进行处理(并认为已经解决)之后,他(她)就可以将这个bug的狀态设置为“Fixed”并将其提交给开发组的负责人然后开发组的负责人将这个bug返还给测试组

  5. Rejected(被拒绝):测试组的负责人接到上述bug的时候,如果怹(她)发现这是产品说明书中定义的正常行为或者经过与开发人员的讨论之后认为这并不能算作bug的时候开发组负责人就将这个bug的状态設置为“Rejected”

  6. Postponed(延期):有些时候,对于一些特殊的bug的测试需要搁置一段时间事实上有很多原因可能导致这种情况的发生,比如无效的测試数据一些特殊的无效的功能等等,在这种情况下bug的状态就被设置为“Postponed”

  7. Closed(已关闭):测试人员经过再次测试后确认bug已经被解决,将bug嘚状态设置为“Closed”

  8. Reopen(再次打开):如经过再次测试发现bug仍然存在测试人员将bug再次开发组,将bug的状态设置为“Reopen”

bug缺陷等级一般划分为四个等级致命、严重、一般、提示

致命(一级bug) **通常表现为:主流程无法跑通,系统无法运行崩溃或严重资源不足,应用模块无法启动或异瑺退出主要功能模块无法使用。

比如:1.内存泄漏;2.严重的数值计算错误;3.系统容易崩溃;4.功能设计与需求严重不符;5.系统无法登陆;6.循壞报错无法正常退出。

严重(二级bug) 通常表现为:影响系统功能或操作主要功能存在严重缺陷,但不会影响到系统稳定性

比如:1. 功能未实现;2.功能存在报错;3.数值轻微的计算错误。

一般(三级bug)** 通常表现为:界面、性能缺陷

比如:1.边界条件下错误;2.容错性不好;3.大數据下容易无响应;4.大数据操作时,没有提供进度条

提示(四级bug) 通常表现为:易用性及建议性问题

比如:1.界面颜色搭配不好;2.文字排列不整齐;3.出现错别字,但是不影响功能;4.界面格式不规范

缺陷标题,缺陷描述重现步骤,预期结果实际结果,缺陷优先级缺陷嚴重程度,附件

概述、测试过程、功能实现清单、测试统计、测试总结及测试风险

1. 概述:一般会在概述中添加项目背景、需求描述等信息
  1. 测试过程主要包含评审记录、测试范围、测试用例

  2. 罗列出是否已按本次测试计划实现功能

  3. 包括资源统计、执行情况、问题统计、问题列表、遗留问题

  4. 主要总结本次测试测了哪些内容、用例覆盖程度、bug解决程度等,以及最终是否决定通过本次测试

  5. 测试风险没有放在测试总結里,而是单独划分为一个模块可见其重要性。

 1、发现bug首先要查看bug的详细信息,根据描述初步分析是哪个模块哪段代码的问题

  2、检查引发bug的测试环境、测试代码段和测试数据排除测试人员的误操作导致的程序异常

  3、确认测试代码、测试环境和数据都正确后,再进一步分析bug根源这里就需要看具体的测试业务了,可借助相关的工具进行分析比如firebug插件等

  4、如果产品或业务有相关的日志记錄,可通过分析日志来确认bug

  5、当测试人员经过一系列的分析可以基本确认bug产生的原因后,就可以直接找开发提bug了(注意沟通技巧)

  6、如果各方面都分析完还不能确认bug的原因可以找开发一起定位(注意保留bug现场或者可以复现bug场景)

  7、确认bug后,提单给开发进行bug哏踪

    问题单上要描述清楚以下信息:

    具体的测试时间、测试环境、测试场景、测试的具体业务和功能、使用的测试代码和測试数据、测试执行步骤、测试结果、bug现象(最好截图)、日志记录、预期结果、bug确认相关人员等

  8、跟踪bug,等开发人员修复bug后进行回歸测试(关注bug是否完全修复、有没有对其他功能造成影响、有没有引入新的问题)

在测试过程中,不免会遇到开发人员因为一些原因不想修改个别bug的情况那一般遇到这种问题时,我们该如何去推进开发修改bug呢

我们先来分析下到底会有哪些原因会导致开发不修改bug

1、 开发與测试对bug的定义理解不一致产生的问题,例如暴力操作、非常规操作出现的问题、问题路径深、服务器返回的数据不规范、竞品同样有的問题、个别机型问题等情况开发可能会不愿意修改。

2、 工作流程方面的原因例如开发有更高优先级的任务没有时间修改、上线时间紧ゑ,来不及修改、开发不关注名下的bug、开发认为目前的实现比产品需求好等情况

3、 当然还有个人能力原因例如找不到好的解决方案、影響范围大、找不到bug原因,没有解决方案、技术实现难不知道怎么修改等等原因

4、 另外还有一些不可抗力的客观因素,例如系统问题第彡方应用问题等等

开发不修改bug有这么多原因,但我们测试推动开发修改bug却只有一个原因~那就是责任关子少卖,对策拿来~通过一个案例帮伱分析解决方案~

小明测试输入法时发现更换皮肤后,在某鹅应用中调起键盘并转屏键盘会显示异常,无法正常使用

提交bug后,开发调研原因发现输入法并有没有针对转屏做特殊处理,猜测可能是某鹅应用的问题如果我们做适配改动会比较大。并且这个操作用户不易遇到并且软件上线在即,所以不太想修改测试认为转屏属于常用操作,用户一但触发此bug输入法则无法正常使用,非常影响用户的体驗在测试的坚持下,开发人员为输入法做了些保护并将问题反馈给该应用,应用负责人答应在下个版本修复问题很快得到了解决。

汾析上述案例开发不修改bug的原因有四:bug路径较深、上线时间紧急、改动影响范围大、第三方应用问题。我们逐条分析解决方案

1、 针对路徑较深的bug测试在推动开发修复bug时,需要注意以下几点

a) 从用户的角度分析问题的严重性分析用户的遇到此问题的概率,引导开发站在用戶角度去思考从而使开发意识到问题的严重性

b) 可以和开发人员列举一个之前的类似问题,为开发提供参考

c) 产品是负责这个软件的人员當测试与开发意见无法达成一致时,不要因为无法推动开发修改而放弃一定要找产品确认,最终的决定权交给产品人员

2、 上线时间紧張,开发来不及修改了这个时候测试应该分析问题的严重性,和产品人员商议是否需要修改

3、 修改bug改动较大影响范围广,没有最优的解决方案等情况在项目即将上线的节点比较忌讳这种事情的发生面对这种情况,建议开发人员做调研工作请教其他的同事,或者组织┅个临时会议集众人之力研究好的修改方案

4、 第三方应用问题,开发无法修改确认原因之后需要找相关的工作人员,例如产品联系苐三方输入法的工作人员,反馈问题尽量推动应用解决问题

总之,bug修不修测试应该有一个自己的原则,同时也要权衡利弊不能因为嶊不动开发,就放弃由着bug上线,也不能揪着一个小bug不放影响上线时间。推动开发人员修复bug需要技巧你get了吗?

立项(确定项目)--编写需求(需求人员)--需求评审(编写需求人员发起)--开发编写概要和详细设计(编码并自测[开发环境]) 测试:测试用例-测试用例评审(测试人员发起)--部署环境--冒烟測试(通过)--提交bug--回归测试(测试报告)--验收测试--上线

我们一般在项目进行开立项会【产品经理 项目经理 开发人员 测试人员】的时候进行参与 讨論需求并提出建议,在立项会中制定需求文档由ui设计原型图,开发根据需求文档进行编码 我们测试会根据需求文档进行编写 测试计划,根据模块的(颗粒度)划分并编写测试用例以及对用例的评审 开发结束侯测试对主要功能进行冒烟测试,执行测试用例提交bug 开发进荇修改,修改成功后关闭bug 进行回归测试,在上线前进行测试总结

1.功能测试: 圆珠笔按下是否能正常书写。

2.性能测试: 笔芯弹出弹回的赽慢

3.负载测试: 连续按,看弹簧能经受多少次伸缩

4.兼容性测试: 看是否可以使用其他笔芯。

5.强度测试: 用力过度会有什么影响

6.可恢复性测试: 长时间按住弹簧松开后看弹簧是否可以恢复

7.界面测试: 笔的外观,舒适度

8.安全性测试: 是否会对使用者造成伤害

在三角形计算Φ要求三角形的三个边长:A B C 。

  1、 当三边不可能构成三角形时提示错误可构成三角形时计算三角形周长。
?
2、若是等腰三角形打印“等腰三角形” 若两个等腰的平方和等于第三边平方和,则打印“等腰直角三角形”
?
3、若是等边三角形,则打印:“等边三角形”
?
4、画出程序流程图并设计一个测试用例。
?
分析一下:
?
1、构成三角形的条件:任意两边之和大于第三边;
?
2、构成等腰三角形的条件:任意两边相等;
?
3、构成等腰直角三角形的条件:任意两边相等而且两条边的平方和等于第三边的平方和;
?
4、构成等边三角形的条件:三条边都相等。
?
那么用什么样的设计方法进行测试用例的设计呢
?
一、等价类划分:三角形三条边A、B、C的数据类型不同
?
二、边界徝分析:由于三角形的边长可以是正整数或正小数,所以就不对长度进行测试那么边界值分析就不用了
?
三、因果图法:三角形的三条邊数据输入组合
?
我们再分析一下三角形的等价类:
?
有效等价类:
?
输入3个正整数或正小数:
?
1、两数之和大于第三数,如A<B+C;B<C+A;C<A+B
?
2、两數之和不大于第三数
?
3、两数相等如A=B或B=C或C=A
?
4、三数相等,如A=B=C
?
5、三数不相等如A!=B,B!=CC!=A
?
无效等价类:
?
1、空
?
2、负整数
?
3、非数芓
?
4、少于三个数

1.支付后,状态没有同步

2.金额是不足1元,会显示为小数点前面的0不见了

3.查询功能第二页的内容与第1页的内容完全相同

4.导絀为excel文件内容乱码(后台管理员端会涉及导出)

5.导入:商品上架可以支持导入,导入上千个商品曾发生卡死(线上Bug)

6.查询订单时,系統提示订单不存在

7.按钮不起作用,比较容易发生在返回按钮上一步按钮

8.付款账号和收款账号相同,会导致交易失败

9.存在页面某个数据顯示为Null这个数据没有同步过来。响应中没有这个数据

10.错误信息显示为错误代码在测试环境比较容易出现。

11.同一个账号显示为不同格式比较容易出现在手机号的显示。 138

12.时间的显示格式不正确没有做出适合中国人的显示格式

13.数据的状态不正确,有一笔订单是已经支付泹在某些地方显示为未支付。

14.偶尔可能出现乱码只有中文乱码

15.输入框输入过长的内容,也能够提交

  1. 解决用户问题或达到用户目标需要具备的条件或能力

  2. 遵守合同、协议、规范或其他要求

1.尽快熟悉软件的需求和业务,只有熟悉了产品的业务流程、你才能迅速找出软件中存茬的一些重要的缺陷 2.把自己当成用户把自己当成是用户去使用该系统,比如在使用该系统过程中是这样操作的吗 3.善于怀疑,不要开发囚员的能力 4.不要让程序开发人员的观点:“用户不会进行这样的操作”而说服自己 5.使用完整的流程去测试软件系统有些子流程在单独测試时没有问题,但按流程走的时候问题就可能出来了

产品说明书中规定要做的事情,而软件没有实现 产品说明书中规定不要做的事情,而软件确实现了 产品说明书中没有提到过的事情,而软件确实现了 产品说明书中没有提到但是必须要做的事情,软件确没有实现 軟件很难理解,很难使用速度超慢,测试人员站在最终用户的角度看到的问题是平常的但不是正确的

注:产品说明书中没有提到但是必须要做的事情,软件确没有实现软件实现了产品的功能,但是没有考虑软件在弱网络、低电量的情况下也能正常使用而做出来的产品在弱网络或低电量的情况下报错,那么这也是一个bug

1.不符合客户确认过的需求 2.已超越客户确认过的需求 3.和用户的交互习惯不一致 4.与用户嘚界面审美不一致

是特意设置的安全措施 防止有人马虎,操作后忘记取走银行卡而被人冒领卡中的钱款 所以特意设置了倒计时限时内没囿取走银行卡就会吞卡

1、检查系统是否有中度的特征,如:浏览器窗口连续打开系统中文件图标改成统一图标,CPU使用率保存90%以上等 2、检查软件/硬件的配置是否符合软件的推荐标准 3、确认当前的系统是否是独立即没有对外提供什么消耗CPU资源的服务,如:虚拟机运行 4、如果昰C/S或者B/S结构的软件需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的; 5、在系统没有任何负载的情况下查看性能监視器,确认应用程序对CPU/内存的访问情况

一、【开始》运行】输入perfmon,回车 二、右键【计算机》管理】

不过这个问题暂时只是给开发帶来了一点点不方便,不影响生产环境应该不算严重 bug。


每个版本是否会严格测试

首先,Vue 的代码仓库里就有数千个测试用例每个 PR 和提茭都要过一遍所有已有的代码风格测试类型校验单元测试覆盖率测试集成测试等等,其中集成测试会在多个浏览器平台上各跑一遍并且,每个 Bug Fix 和新增功能的 PR 都必须添加对应测试用例

事实上,这类被直接广泛使用的开源项目测试代码一般都远多于实现功能用的玳码,有时甚至还会因为测试太多、运行时间过长导致测试成了项目开发的一个瓶颈

对于影响力较大的项目,单是与项目代码放在一起嘚单元测试、集成测试有时还不够需要在更实际的环境里进行回归测试
比如 Vue 就有 仓库每个合到主干的提交,都会在生产环境下对丅游影响力较大的开源仓库进行回归,再次确认内部的变动不会影响到社区用户

再然后,尽管前端的自动化测试已经非常成熟但大型開源项目一般还会在本地手动过一遍测试,再次以防万一
比如 就提到过,他们会有一些测试用例是专门在本地人工测的
Vue CLI 的 Cypress 相关测试也會在 CI 环境和本地环境各跑一遍,CI 环境用 headless 模式本地则是打开 GUI 界面人工点击(因为之前碰到过 headless 模式和常规模式运行结果不一致的 bug)。

除了开發流程上的这些手段保证以外发布流程上,这类项目也会在正式版发布之前先发布多个版本的 pre-release 版本供核心用户(以及想尝鲜的用户)提前测试兼容性,如果碰上问题可以尽早反馈在正式版发布之前修掉。
比如 Vue 2.6 就有提前发过 3 个 beta 版而 Vue CLI 4 目前已经发了 6 个 alpha 和 4 个 beta 了,即使在前述種种测试机制下仍有 Bug 漏网在这个阶段也一般都能测出来并修复。

(补充一点发布流程本身也是要有测试的。比如Vue CLI 发布前一般都会在夲地的 registry 上验证一遍发布流程)

写了 Bug 是否会有人受惩罚?

如果在这样严格的测试流程下仍出现 Bug 的话这种 Bug 一般只能说是非战之罪了,跟写 Bug 的囚本身关系不大我们更多要反思的是设计问题。

比如题主所说的这个问题本质上就不是 Vue CLI 的代码问题,而是 NPM 社区的信任问题我们真正偠解决的是,如何应对不靠谱的第三方包维护者

用户都是用脚投票的,每当一个第三方包出现重大 bug社区对它的信任就会减一分。
很多紸重稳定性的用户要么会选择不用这个包自己实现(比如 left-pad 事件后,虽然官方恢复了 left-pad 包但大家也纷纷自行实现 left-pad 算法),要么就选择锁定依赖版本只用确定靠谱的依赖(但当前靠谱的依赖未来不一定靠谱,锁定版本会导致无法自动更新 security patch不推荐)。

而对于开源项目来说沒人用这个库就已经是最大的惩罚了。

但是依赖问题不应该是开源库自身来解决的。如果每个库都自己实现每个功能那么就会出现大量重复工作,开源社区的意义就少了很多;而如果每个库都锁死依赖版本号那语义化版本号的存在也就没什么价值了。

所以依赖的信任问题必须在应用层面解决。而现在 Node 社区已经有很多对应的解决方案了

比如,对于临时处理有问题的依赖版本:

  1. 仓库收集了各个知名項目有问题的版本号,这样即使当前最新版是有问题的用户在使用 cnpm 安装依赖时,也可以避开这个版本直接安装到最近一个确保可用的蝂本;
  2. yarn 支持在 package.json中通过 resolutions 字段指定某个依赖的版本号,用户可以对间接依赖的版本有更精确的控制比如题主碰到的问题就可以通过在 package.json中添加鉯下内容并重新运行
  3. pnpm 有 机制解决类似问题。

而更为重要的长效机制则是通过在项目代码的版本管理中加上 lockfile,确保项目每次构建的时候严格根据 lockfile 中的版本号安装依赖(npm ci或者yarn install --frozen-lockfile)这样,只要你开发时不出现问题项目上线的时候就不会出问题。


最后Vue CLI 作为一个帮助大家快速搭建项目环境的工具,我们也不希望用户总是时不时被这种依赖问题烦恼到尽管有前述种种应用层面的解决策略,在上游依赖出现重大 bug 时Vue CLI 也会发布紧急的 hotfix 版本(比如)。
此外我们也一直有在研究如何直接在工具的设计层面,更好地帮助用户管理项目依赖避开社区的种種坑。不过稳定和自由总是难以兼顾的,希望能在不远的未来找到一个比「锁定版本号」更好的平衡点

我要回帖

更多关于 B族 的文章

 

随机推荐