-
2022-04-06 23:37:48
# -*-coding:utf-8 -*- # @Time : 20:59 # @Author: 黄荣津 # @File : 43.Bug的常见类型.py # @Software: PyCharm '''try except''' try: a=int (input('请输入一个整数:')) b=int (input('请输入二个整数:')) result=a/b print('结果为:',result) except : print('除数不允许为0') print('程序结束') '''try except else''' #如果try块没有出现异常,则执行else块,如果try中出现异常,则执行except try: a=int (input('请输入一个整数:')) b=int (input('请输入二个整数:')) result=a/b print('结果为:',result) except Exception as e: print('出错了',e) else: print(result) '''try except else finally''' #finally块无论是否发生异常都会被执行,能常用释放try块 '''traceback模块的使用''' import traceback try: print('------------') print(1/0) except: traceback.print_exc()
更多相关内容 -
四种常见Bug类型
2021-04-26 11:16:37好了,我们已经把四种类型的bug和解决方案都介绍了一遍。 针对大家出现的bug, 要多去思考,多去总结笔记, 提高debug的能力。 练习: 运行以下代码会报错;list是一个空列表,我们要把’X’,‘Y’,'Z’加入到列表中...1、粗心
pwd = input('请输入密码:') if pwd == '520666' print('正确')
这是验证用户密码的代码,如果你把它放进运行,会报如下错误。
找一下这段代码错误,修改代码让它成功运行:pwd = input('请输入密码:') if pwd == '520666': print('正确')
如果你观察仔细, 你会一眼发现,这段代码少了一个”冒号”。
仔细观察报错信息: 我们可以得到三个有效关键词:1、line2 第二行。 2、^在pwd ==’520666’后面,也就是第二行末尾。 3、SyntaxError表示语法错误, 就是语法不规范。
通过这样的报错信息,我们可以迅速定位bug, 根据报错信息针对解决。
请找一下这段代码错误,修改代码让它成功运行:
提示:这段代码有多处错误,先运行,根据报错信息一一解决。
for i in range(1,10): print(i) for i in range(1,10): print(i)
2、知识不熟练
接下来,我们看一下因为知识不熟练引起的bug。list = ['刘备','关羽','张飞','赵云'] print(list[4]) list = ['刘备','关羽','张飞','赵云'] print(list[3])
错误很明显
list index out of range 列表的下标超出范围。列表下标从0开始,0,1,2,3 list[4]是列表第五个元素,然而列表只有4个元素。
再看一个:某位学员需要删除列表中的某元素,结果不成功。
list = ['刘备','关羽','张飞','赵云'] list.del(list[3]) print(list) list = ['刘备','关羽','张飞','赵云'] del(list[1]) print(list)
问题就出在第二行, 翻看原来笔记。del()函数,直接将删除数据放在括号中就可以,前面不需要写”list.”。
3、思路不清
“思路不清bug”是初学者最常见的bug,解决了它,就解决了大部分bug。思路不清bug主要是由于我们在面对问题时, 由于我们对问题及细节思考不到位,导致”一招不慎,全盘报错”。 有的时候还不报错,但就达不到我们想要的效果。
针对这一点:江湖秘籍上给我们提供了两个宝盒。
先看print()函数, print()函数可以将内容打印。我们可以使用print()函数将每一步的结果打印出来,然后对结果进行分析,找到计算机运行的结果与我们分析不一致的地方。
#注释我们也使用过。 如果某行或某段代码写的总是不对,你可以使用注释将当前代码注释掉, 再一步一步运行,排除错误。
print()函数与#注释搭配起来更好用。
film = { '速度与激情':['强森','斯坦森'], '烈火英雄':['黄晓明','杜江','杨紫'], '深夜食堂':['梁家辉','刘涛'], '铤而走险':['大鹏','李梦','欧豪'], '使徒行者':['张家辉','古天乐'] } star =input('你想看哪位演员的电影?') for i in film: actors=[i] if star in actors: print(star+'出演影片'+i)
这个问题纠结了?不报错,也没有达到我们想要的效果。
不着急,一点一点解决。
film = { '速度与激情':['强森','斯坦森'], '烈火英雄':['黄晓明','杜江','杨紫'], '深夜食堂':['梁家辉','刘涛'], '铤而走险':['大鹏','李梦','欧豪'], '使徒行者':['张家辉','古天乐'] } print(film) # star =input('你想看哪位演员的电影?') # for i in film: # actors=[i] # if star in actors: # print(star+'出演影片'+i)
我将film后面的代码注释,再打印一下film的数据内容, 正常打印。这就说明film这个字典没有问题。那我们就查找后面代码。
这一次,我们看一下star=input(‘你想看哪位演员的电影?’)这条语句; 同样,我们将后面代码注释, 打印star内容。
film = { '速度与激情':['强森','斯坦森'], '烈火英雄':['黄晓明','杜江','杨紫'], '深夜食堂':['梁家辉','刘涛'], '铤而走险':['大鹏','李梦','欧豪'], '使徒行者':['张家辉','古天乐'] } star =input('你想看哪位演员的电影?') print(star) # for i in film: # actors=[i] # if star in actors: # print(star+'出演影片'+i)
输入演员名字,正常打印。这就说明star这条语句也没有问题。
上面两部分都没有问题, 那就来检查第三部分,for循环内容。 其实, 老司机一眼就能看出for循环内部出了问题。
一步一步来查看。
for i in film:这行代码写的很规范,也没有掉冒号:那就继续往下。
actors=[i]这里是赋值, 怎么把i赋值给了变量actors.我们打印一下它, 看看输出什么?
film = { '速度与激情':['强森','斯坦森'], '烈火英雄':['黄晓明','杜江','杨紫'], '深夜食堂':['梁家辉','刘涛'], '铤而走险':['大鹏','李梦','欧豪'], '使徒行者':['张家辉','古天乐'] } star =input('你想看哪位演员的电影?') print(star) for i in film: actors=[i] print(actors) # if star in actors: # print(star+'出演影片'+i)
怎么都是电影名啊?打印的是字典的键。我不想要字典的键,我想要字典的值。如何修改? 看小K修改的代码:
film = { '速度与激情':['强森','斯坦森'], '烈火英雄':['黄晓明','杜江','杨紫'], '深夜食堂':['梁家辉','刘涛'], '铤而走险':['大鹏','李梦','欧豪'], '使徒行者':['张家辉','古天乐'] } star =input('你想看哪位演员的电影?') print(star) for i in film: actors=film[i] print(actors) # if star in actors: # print(star+'出演影片'+i)
此时已经将所有演员名字存入到actors变量中。
那么打开注释,将两行if语句打开,开始运行。
film = { '速度与激情':['强森','斯坦森'], '烈火英雄':['黄晓明','杜江','杨紫'], '深夜食堂':['梁家辉','刘涛'], '铤而走险':['大鹏','李梦','欧豪'], '使徒行者':['张家辉','古天乐'] } star =input('你想看哪位演员的电影?') for i in film: actors=film[i] if star in actors: print(star+'出演影片'+i)
4、被动掉坑
被动掉坑,指的是有时候代码没问题, 而是用户操作不正确,导致程序出问题。For example:运行一下下面代码, 你输入字符串,看看程序报不报错?再重新运行一次,输入整数试一试。
age = int(input('你今年多大了?')) if age < 18: print('不可以抽烟喝酒烫头哦')
当输入数字的时候,程序正常运行,不会报错。
当输入非数字的时候, 程序抛出bug。
它给我们抛出bug,位置在第一行,显示bug信息为”ValueError” ValueError指的是数据异常, 也就是我们输入的数据不合规范。面对这种问题,我们好像无从下手?
不要慌,在Python江湖中,Python给我们提供了一种异常处理机制,用来内部消化出现的异常,让程序继续执行。
这样,我们就可以把上面代码修改成如下样子,点击运行,输入整数试一试;再输入字符串试一试。while True: try: age = int(input('你今年多大了?')) break except ValueError: print('你输入的不是数字') if age < 18: print('不可以抽烟喝酒烫头哦')
这次是不是完美了?
这就是Python中的异常捕获。
这段代码: 1、不知道用户什么时候会输入正确,什么时候会输入错误, 设置while循环来接收输入, 只要用户输入的不是数字就一直循环,用户输入数字后就break跳出循环。
2、 使用try…except…异常捕获机制, 用户输入不正确时会一直提示。
好了,我们已经把四种类型的bug和解决方案都介绍了一遍。
针对大家出现的bug, 要多去思考,多去总结笔记, 提高debug的能力。
练习:
运行以下代码会报错;list是一个空列表,我们要把’X’,‘Y’,'Z’加入到列表中,将list变成 list=[‘X’,‘Y’,‘Z’]list = [] list.append ('X','Y','Z') print(list) list = [] list.append ('X') list.append ('Y') list.append ('Z') print(list)
num = [5,6,0,10] for i in num: print (600/i)
运行以下代码,终端会报错,找到代码错误地方,进行修改
num = [5,6,0,10] for i in num: if i!=0: print (600/i)
-
bug类型和等级划分
2014-02-19 16:46:26解释测试bug分类的技术文档,可以帮助bug的初学者 -
bug等级划分标准以及bug类型
2019-04-21 21:25:13一:测试BUG等级划分标准 Blocker(崩溃):阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生...一:测试BUG等级划分标准
Blocker(崩溃):阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等
Critical(严重):系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。
Major(一般):功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等(该问题实际测试中存在最多,合理安排解决BUG,解决率关系版本的优化程度)
Minor(次要):界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)
二、测试的bug类型
1、业务逻辑:主要的业务流程走不通,出现错误,比如新增保存不成功…2、功能操作:一些功能按钮无法进行操作,没反应
3、功能优化:功能操作不方便、不合理的需要优化
4、交互逻辑:分为界面交互和功能交互:界面交互指的是页面的跳转;功能交互指的是通过和程序交谈(输入数据等操作)来控制程序,让程序得到你要的成果,常用的交互功能有启用聊天功能、网站上添加留言功能、消息通知功能和自主服务功能等。
5、数据问题:数据显示不正确或不完整,不符合业务规范
6、条件限制问题: 1)输入框字符个数、长度和类型限制 2)图片尺寸大小、文件大小、格式类型、分辨率,图片名称字符长度及类型
7、界面优化:界面不美观,排版有问题,不符合设计要求和使用者的习惯,需要进行界面优化。可以做成ajax查询,这样页面就不会整体刷新;区别于其他网站的标识favicon.ico
8、兼容性问题:
1)兼容主流浏览器,如IE、谷歌、火狐。 ——WEB兼容测试
2)操作系统兼容,如Win7、Win10、Mac和Linux,如果有手机版还需兼容Android8.0/9.0、IOS12
3)APP机型适配:苹果、华为、OPPO、Vivo及Pad端 ——APP兼容测试
4)网络兼容,4G/3G/2G/wifi之间的切换测试 ——APP兼容测试
5)数据库的兼容:如果软件需要支持不同的数据库,通常需要针对不同的数据库产品进行兼容性测试,另外如果同一数据库产品包含多个版本,也需要针对不同的版本进行兼容性测试。目前常用的数据库有Oracle、SQLserver、mysql等。
6)软硬件配合兼容:不同品牌的硬件、不同软件相互交叉、支持配合的兼容性测试。
7)分辨率兼容性:可以通过对浏览器的缩放的比例进行不同分辨率的测试;(1)常见台式机分辨率:17寸液晶或crt显示器 1024×768,19寸液晶显示器(普屏) 1280×1024,19寸液晶显示器(宽屏) 1440×900,22寸液晶显示器宽屏16:10和宽屏 16:9的比例最佳分辨率分别是16801050和19201080。 ——WEB兼容测试9、性能优化:1)页面加载慢,延迟超过3秒 2)软件崩溃、闪退 3)占用CPU、内存的大小,内存泄漏
10、安全问题
1)IP和端口号要改为域名显示 2)SQL注入测试 3)服务器安全问题
-
测试bug 类型及原因分类
2018-01-12 12:24:44 -
软件测试错误(BUG)类型及参生原因
2021-03-23 16:20:45软件测试类型软件测试错误(BUG)类型及参生原因概述软件本地化测试的测试对象是本地化的软件,需要在本地化的操作系统上进行。虽然本地化的软件是基于源程序软件创建的,但二者的测试内容和重点具有很大的不同。一般... -
禅道Bug提交管理规范
2019-01-23 15:41:42禅道Bug提交管理规范 测试流程管理。 本文档定义了bug管理流程及其bug相关信息内容。 -
sonar 规则之bug类型
2018-06-21 22:26:03bug类型:1、".equals()" should not be used to test the values of "Atomic" classes.bug 主要不要使用equals方法对AtomicXXX进行是否相等的判断Atomic变量永远只会和自身相等,Atomic变量没有... -
软件测试中Bug的分类(类型)
2020-01-11 21:56:37软件测试中Bug的分类: 1、按严重程度分类: 是指bug对软件质量的破坏程度,即此bug的存在将对软件的功能和性能产生什么样的影响。 崩溃(Blocker):系统无法正常运行。阻碍开发或测试工作的问题;造成系统崩溃、... -
FaceBook/infer-infer捕捉的bug类型
2015-06-14 19:57:22写这个文档的人也是很粗心,总览说是OC/C的bug类型,但是在详细说明中,却说只有OC有,比如Parameter not null checked 总览Java中捕捉的bug类型 Resource leak Null dereference C/OC中捕捉的bug类型 Resource ... -
禅道BUG编写及处理流程规范
2022-04-28 16:28:48什么是bug? 软件缺陷:通常又被叫做Defect或者Bug。 产品需求文档中规定要做的事情,而软件没有实现。 产品需求文档中规定不要做的事情,而软件确实现了。产品需求文档中中没有提到过的事情,而软件确实现了。 ... -
Bug分类和定级
2021-08-26 17:46:48Bug分类和定级一、bug的定义二、bug的类型三、bug的等级四、bug的优先级 一、bug的定义 一般是指不满足用户需求的则可以认为是bug,狭义指软件程序的漏洞或缺陷,广义指测试工程师或用户提出的软件可改进的细节、或... -
sonar常见bug类型及解决方法
2018-11-06 17:58:22sonar常见bug类型及解决方法(持续更新) Cast one of the operands of this multiplication operation to a “long” bug代码: Thread.sleep(5 * 1000); 原因: 用int型整数计算可能会溢出 修改后代码: ... -
禅道BUG提出及处理流程规范
2019-09-27 11:41:31禅道BUG提出及处理流程规范 版本说明 版本 作者 时间 备注 1.0 _冷冷 2019/9/27 首版本提交 目录 1 概述 1 2 目的 1 3 作用 1 4 缩略词 1 5 适用范围 1 6 BUG的定义 2 7 BUG书写规范 2 7.1 BUG书写必填... -
SonarQube规则之bug类型
2018-10-30 11:06:001、".equals()" should not be used to test the values of "Atomic" classes.bug 主要不要使用equals方法对AtomicXXX进行是否相等的判断Atomic变量永远只会和自身相等,Atomic变量没有覆写equals()方法.2、"=+" ... -
软件测试常见Bug清单
2022-02-15 18:42:36软件测试中,bug的类型有很多种,比如:代码错误、界面优化、设计缺陷、需求补充和用户体验等; 一般情况下,需求补充和设计缺陷比较好区分,但是代码错误、界面优化和用户体验区分不是很明显; 下面我们就来说说... -
2.4Bug的分类与严重程度
2022-02-07 10:22:06Bug的分类与严重程度 bug分类 (禅道为例) 1)功能缺陷:业务流程未实现2)代码错误:错误页面404、5003)界面优化:UI问题、图文显示4)安装部署:安装失败、无法访问等5)性能问题:响应时间久、加载慢6)安全... -
BUG的类型
2019-06-09 19:30:091、Bug,有代码编写错误导致的功能性问题。 2、Defect即缺陷,实现跟需求不一致。 3、Fault即故障,由于环境系统问题引起运行失败。 -
bug的几种类型分类
2018-12-04 12:07:401)输入框字符个数、长度和类型限制 2)图片尺寸大小、文件大小、格式类型、分辨率,图片名称字符长度及类型 七、界面优化 界面不美观,排版有问题,不符合设计要求和使用者的习惯,需要进行界面优化。 ... -
禅道项目管理——bug管理工具
2021-12-20 18:10:55禅道项目管理——bug管理工具 ...BUG的一生 1、基本信息 ...2、bug类型 界面优化、设计缺陷、需求不符、需求错误 安装部署、相关、性能问题、标准规范 测试脚本、无效bug、兼容性、数据问题 环境问题、 -
软件测试BUG参考标准
2021-03-23 16:18:04软件测试软件测试BUG参考标准一、目的对BUG概念、类型划分、BUG状态、BUG严重程度等内容进行定义和规范,以便进一步指导我们的软件测试工作。二、概念BUG:软件中存在的瑕疵,可能会导致系统失效。简单的说就是软件... -
Bug有哪些分类和等级?
2021-01-08 10:49:15二、bug的类型 对bug的划分,禅道为例,包括: 1、代码错误 2、设计缺陷 3、界面优化 4、性能问题 5、配置相关 6、安装部署 7、安全相关 8、标准规范 9、测试脚本 10、其他划分:功能类、界面类、性能类、 -
Java NumberFormat格式化float类型的bug
2020-08-26 21:29:25今天小编就为大家分享一篇关于Java NumberFormat格式化float类型的bug,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
禅道创建BUG添加自定义字段
2021-03-02 13:39:41禅道创建BUG添加自定义字段 禅道12.0添加BUG自定义字段 一.数据库zt_bug表添加自定义字段 ALTER TABLE `zt_bug` ADD COLUMN stage VARCHAR(100) AFTER severity mysql5.7报错: Incorrect datetime value: '... -
禅道bug分类标准及通过标准
2021-01-08 18:54:271. 禅道Bug分类标准 一类:这类问题会使电脑死机,重启。 二类:阻碍流程的问题(包括正向及反向逻辑)。 三类:非流程性问题。 四类:页面及建议类问题(如果页面涉及到重要内容,表格错乱等,可将等级提升)。 2. ... -
禅道—禅道Bug管理模块
2020-09-15 14:26:14简介: 开源免费的项目管理软件、集产品管理、项目管理、测试管理一体以及事物管理组织管理的功能 ...重复Bug : 无效Bug 3、Bug等级简介 Priority: bug的重要性及其解决顺序。 Notes: 程序员/工程师可以 -
那些年常见的前端bug (持续更新)
2022-04-25 14:16:06数据类型错误 此处数据类型必须是string或者Buffer类型或者nit8Array,代码区修改正确的数据类型 4.分隔符错误 " + " 遇到string类型为连接符,将右边的obj进行了隐式转换,所以输出结果为[object object] 此处应用... -
Jira Bug类
2019-04-25 14:18:36Bug类的Issue包括两部分,一部分是服务台/BT收到的用户反馈问题,另一部分是测试过程中发现的问题...点击页面【Create】创建一个Bug 类型的Issue事件,或者从Test测试用例的Execute执行中,创建一个Bug 选择组件 ...