程序测试

7. 错误、调试和测试

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-26 13:15:09
在程序运行过程中,总会遇到各种各样的错误。 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。 有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。 还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。 Python内置了一套异常处理机制,来帮助我们进行错误处理。 此外,我们也需要跟踪程序的执行,查看变量的值是否正确,这个过程称为调试。Python的pdb可以让我们以单步方式执行代码。 最后,编写测试也很重要。有了良好的测试,就可以在程序修改后反复运行,确保程序输出符合我们编写的测试。 错误处理 在程序运行过程中,如果发生了错误,可以预先约定返回一个错误代码,这样就知道是否有错,以及错误的原因了。在操作系统提供的调用中,返回错误代码非常常见。比如打开文件的函数 open() ,成功时返回文件描述符,出错时返回-1。 用错误码来表示是否出错十分不便,因为函数本身该返回的正常结果和错误码混杂在一起,造成调用者必须用大量的代码来判断是否出错: 12345678910111213 def ():...

信必优银行自动化测试解决方案

爱⌒轻易说出口 提交于 2020-02-26 02:42:42
客户是提供全球金融服务的著名欧洲银行 系统是基于Web的 现金管理系统 ,80多个国家使用,有非常严格的质量和测试需求 新版本发布每月2次,需要频繁进行大量的冒烟测试和回归测试,而手工测试覆盖全部功能需要2个月/轮 现有测试用例数量达6900个;展现层使用Flex技术,测试工具支持差 解决方案 基于QTP搭建了 自动化测试 平台 采用数据驱动技术(Data-driven),将测试数据和测试程序分离,极大地提高了程序的可维护性 编写了可复用的模块,如文件读写、日志管理、异常处理、结果统一存储与分析等 将现有的测试用例分类,按照计划分批实现自动化,目前已完成80%的测试用例自动化 项目成果 每发布一次小版本,之前需要20.9人/月进行测试验证, 实施自动化测试后仅需5.7 人/月; 在测试周期和覆盖率也上满足了版本每月发布2次的任务 在此项目上实施的自动化测试框架和公用模块可复制到其他项目 来源: oschina 链接: https://my.oschina.net/u/4158156/blog/3158165

构建之法读书心得2

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-24 16:38:33
在第二章中,我们学习了如何进行单元测试,软件是由多个人共同完成的,如果某个模块出现问题,那么整个软件都会出错,所以我们就要进行单元测试。那么怎么样才能算是好的单元测试呢?最基本的一点,就是要在功能和参数上验证程序的正确性。其次,单元测试最好由代码的作者来写,因为代码的作者是最熟悉代码的,能更好的针对代码编写测试程序。单元测试还要保证测试之后,机器状态保持不变,速度也要快,并且重复测试结果应该一致。出了单元测试,还要对程序进行效能分析,保证程序运行的又快又好,占用资源少。效能分析有两种方法:抽样或代码注入。对于个人来说,我们应该对个人开发流程进行规划,大致的任务清单如下:预估任务所需时间、分析需求、生成设计文档、设计复审、代码规范、具体设计、具体编码、代码复审、测试、记录用时、测试报告、计算工作量、时候 总结、提出过程改进计划 来源: https://www.cnblogs.com/zzzzuuuuo/p/6752258.html

linux 中断和终端测试程序

╄→尐↘猪︶ㄣ 提交于 2020-02-22 03:57:52
该程序测试相应终端的 ctrl - c 中断和终端的控制等 /* * * testsignal.c */ #include < stdio.h > #include < signal.h > #include < termios.h > #include < fcntl.h > void ctrl_c_hander(); void set_cr_mode(); void reset_mode( int flag); int main( int ac, char * av[]) { int counts = 0 ,i = 0 ; reset_mode( 0 ); set_cr_mode(); signal(SIGINT,ctrl_c_hander); while ( 1 ) { counts ++ ; printf( " loop " ); for (i = counts;i > 0 ;i -- ) printf( " ! " ); printf( " \n " ); if (ac == 2 ) { // if(atoi(av[1][0])==counts) // exit(1); } sleep( 1 ); } reset_mode( 1 ); } void ctrl_c_hander() { puts( " do you want exit.(y/n)\n " ); if

偶然性不可重现BUG怎么处理?(转帖)

若如初见. 提交于 2020-02-20 23:08:47
一、一定要提交!! 1. 记得有这么个缺陷,以后再遇到的时候可能就会了解发生的原因。 2. 尽力去查找出错的原因,比如有什么特别的操作,或者一些操作环境等。 3. 程序员对程序比测试人员熟悉的多,也许你提交了,即使无法重新,程序员也会了解问题所在。 4. 无法重现的问题再次出现后,可以直接叫程序员来看看问题。 5. 对于测试人员来说,没有操作错误这条.既然遇到,就是问题。即使真的操作错了,也要推到程序员那里,既然测试人员犯错误,用户也可能会犯同样的错误。错误发生的时候,Tester最大。 二、程序不是测试人员写的,出问题也不是测试人员的原因。 至于无法重现,可能的原因很多,因为测试人员看到的只是程序的外部,无法深入程序内部,所以把责任推给测试人员是不对的。 测试人员的任务只是尽力重现问题,而不是必须重现!! 三、下次再遇到的时候,拉他们来看就可以了。 因为问题如果无论如何无法重现,程序员确实也没有什么好的解决方法。 而且此类问题即使程序员说修改了,测试员也没有好的方法去验证是不是。 : ) 四、你可以告诉程序员,测试过程是没有错误的。 测试人员只是检查程序中可能存在的问题,虽然测试人员使用一定的手段方法努力去覆盖所有的情况,但这些都是理论的推测。在实际中,可能因为人员、环境、配置等种种原因出现各种各样的问题,在测试人员这里发现问题是公司内部的事情,程序发到外面可就是公司的形象问题了

软件测试的原则

风格不统一 提交于 2020-02-20 21:46:48
软件测试的原则: 1.测试用例中一个必需的部分是对于预期输出或结果进行定义; 2.程序员应当避免测试自己编写的程序; 3.编写软件的组织不应当测试自己编写的软件; 4.应当彻底检查每个测试的执行结果; 5.测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况; 6.检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”; 7.应避免测试用例用后即弃,除非软件本身就是个一次性的软件; 8.计划测试工作时不应默许假定不会发现错误; 9.程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比; 10.软件测试是一项极富创造性、极具智力挑战性的工作。 来源: https://www.cnblogs.com/jitipaper/p/12337418.html

软件测试11项原则

谁都会走 提交于 2020-02-19 09:16:34
1.尽早地和不断地进行软件测试 说明:IBM研究表明缺陷存在放大趋势,故问题发现越早,解决问题的代价就越小,这是软件开发过程中的黄金法则。 2.不可能完全的测试 a.不可能测试程序对所有可能输入的响应。 b.不可能测试到程序每一条可能的执行路径。 c.无法找出所有的设计错误。 d.不能采用逻辑来证明程序的正确性。 3.增量测试,有小到大(软件测试的粒度) 单元测试 --> 集成测试 -->系统测试 4.避免测试自己的程序 原因如下: a.程序员不会轻易承认自己写的程序有错误。 b.程序员的测试思路有局限性,做测试时很容易受到变成思路的影响。 c.多数程序员没有严格正规的职业训练,缺乏专业测试人员意识。 d.程序员没养成错误跟踪和回归测试的习惯。 5.设计周密的测试用例 a.输入测试,即前端验证,如输入框、下拉框校验,有数据或无数据绑定情况下,下拉框显示是否正常等。 b.功能测试 c.各种错误数据的测试 d.特殊测试,如操作焦点逃逸(如:tab切换),分配内存不足,网络断线 6.注意错误集中的现象 7.确认BUG的有效性 无效bug来源: a.测试过程的混乱26% b.对设计的歧义29% c.无效运行环境11% d.人为因素9% e.工具或方法使用错误13% f.其他12% 8.合理安排测试计划 合理的测试计划有助于测试工作顺利有序地进行,因此要求在对软件进行测试之前所有的测试家华中

SpringBootTest测试时不启动程序

非 Y 不嫁゛ 提交于 2020-02-19 04:25:15
开发spring boot 程序过程,如果要针对某个方法做单元测试。一般使用开发工具新建项目都会自动生成单元测试单元。但是默认情况下的配置在测试中会启动程序,如果不想要启动可以修改如下代码 @RunWith(SpringRunner.class) @SpringBootTest public class ests { } 上面代码意思是针对所有class进行扫描,添加(classes=Tests.class)属性可以针对某些类做单元测试。 开发spring boot 程序过程,如果要针对某个方法做单元测试。一般使用开发工具新建项目都会自动生成单元测试单元。但是默认情况下的配置在测试中会启动程序,如果不想要启动可以修改如下代码 来源: CSDN 作者: 别抢我蓝buff 链接: https://blog.csdn.net/qq_44813090/article/details/104383548

SAP-ABAP程序开发规范

浪尽此生 提交于 2020-02-13 10:31:09
SAP--ABAP程序开发规范 1 范围 本标准规定了SAP S/4 系统程序开发过程中术语定义、命名规则、程序结构、测试方法和请求管理。 本标准适用于SAP S/4 系统的ABAP语言开发的程序。 2 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 GB/T 1.1-2000《标准化工作导则 第1部分:标准的结构和编写规则》 3 术语和定义 3.1 SAP SAP来自于Systems Applications and Products in Data Processing,它是德国思爱普公司的英文名称。 3.2 SAP S/4 SAP S/4 是一个基于客户/服务机结构的开放、集成的企业资源计划系统(Enterprise Resource Planning,简称:ERP)软件,其功能涵盖企业的财务管理、后勤管理(含采购、库存、生产、销售、设备、项目、质量等模块)和人力资源管理等各个方面。SAP S/4 软件由德国SAP公司所研创,其R 指实时(realtime), 而3表示S/4 系统是三层架构:数据库、应用服务器、展现层。 3.3 ABAP ABAP是一种高级商务应用编程语言(Advanced Business Application

软件测试之安装测试

南笙酒味 提交于 2020-02-12 03:10:27
1. 什么情况下需要安装测试组专门进行安装测试? 安装可以很简单,像一些简单的桌面应用程序,只是简单地复制一些文件,对于这种应用,不需要专门的安装测试组,安装测试能够和其他测试合并在一起。 安装也可以很复杂,需要支持多个操作系统平台,多种数据库,多个版本的中间件,多种网络服务器,多种拓扑结构等,这就要求测试人员具有较好的操作系统、数据库及网络服务器等知识。一般需要一个专门的安装测试组来进行相关测试。 一般来说,企业级Java EE应用都需要使用数据库软件。 2. 典型的拓扑结构是三层架构? 前端是网络服务器,中间是应用服务器,后端是数据库服务器。 3. 安装测试应该完成哪些内容? 确保待测产品能够在所有支持的操作系统、数据库、应用服务器中间件、网络服务器、拓扑结构等各种组合情况下,被正确地安装和卸载。 确保安装文档的正确性和易读性。 通俗来说,就是确保安装相关的代码和相关的安装配置文档的正确性。 4. 如何规划安装测试?——安装测试计划 每一个测试人员都需要认真仔细地阅读安装测试计划,并且按照这个文档的规定来进行具体的测试,这是对每一个测试人员最基本的要求。测试计划的主体部分详细描述了安装测试的测试配置和测试场景,这部分内容也最多。 5. 安装测试的基本流程?   a. 学习测试计划和测试用例:在安装测试计划中,包含所有的测试用例,一般要求每个测试人员对所有测试用例有一个基本的了解