今天给各位分享软件测试笔试题的知识,其中也会对软件测试笔试题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
软件测试笔试题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于软件测试笔试题、软件测试笔试题的信息别忘了在本站进行查找喔。
本文导读目录:
2、软件测试笔试题
3、12 事务的特性 https://blog.csdn.net/u010960184/article/details/82557978
1. 等价类划分 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类. 2. 边界值分析法 边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误. 使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据. 3. 错误推测法 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法. 错误推测方法的基本思想就是: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结。还有, 输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例. 4. 因果图方法 前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况. 5. 正交表分析法 有时候,可能因为大量的参数组合而引起测试用例数量上的增加,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。 6. 场景分析方法 指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。 --- 5种常见的测试用例设计方法 一、等价类划分 1)概念 某个输入域的集合,在这个集合中每个输入条件都是等效的,如果其中一个的输入不能导致问题发生,那么集合中其它输入条件进行测试也不太可能发现错误。 关于等价类划分的两个重要概念: 有效等价类:有效等价类是程序规格说明有意义,合理的输入数据。 比如用正确的用户名和密码来登录系统就是有效等价类。 无效等价类:无效等价类是程序规格说明无意义,不合理的输入数据。 比如用不存在的用户名和密码来登录系统就是无效的等价类。 2)等价类法设计测试用例的步骤 为每个输入划分等价类,得到等价类表,为每个等价类规定一个唯一编号 设计一个测试用例,使其尽可能多的覆盖所有尚未覆盖的有效等价类。重复这一步骤,使得有效等价类均被测试用例所覆盖设计一个测试用例,使其只覆盖一个无效等价类。重复这一步骤使得所有无效等价类均被覆盖。 假设上面的文字你都没有看懂,那么做个题目就懂啦。 3)案例来了 程序规定:输入三个正整数作为三边的边长构成三角形。请用等价类方法设计测试用例分别判断输入3个整数时的三角形为一般三角形、等腰三角形、等边三角形时情况: 提示: 需求提取: 1、三条边需求:整数/3个数/非零数/正数 2、一般三角形的要求:二边之和大于第三边 3、等腰三角形:二二边相等且满足二边之和大于第三边 4、等边三角形:三条边相等 参考答案 答案解析:符合的需求条件的即是有效等价类,比如,等腰三角形,那么要求至少有两条边相等,所有有效等价类就包括a=b b=c a=c ,那么不符合条件的就是无效等价类包括a!=b b!=c a!=c 二、边界值分析 1)概念 边界值分析方法的理论基础是假定大多数的错误是发生在各种输入条件的边界上,如果在边界附近的取值不会导致程序出错,那么其它的取值导致程序错误的可能性也很小。 2)边界值分析法设计用例的步骤 分析输入参数的类型:从测试规格中分析得到输入参数类型 等价类划分(可选):对于输入等价类划分方法进行等价类的划分 确定边界:运用域测试分析方法确定域范围的边界(上点、离点与内点) 相关性分析(可选):如果存在多个输入域,则需要运用因果图、判定表方法这些输入域边界值的组合情况进行进一步分析 形成测试项:选择这些上点、离点与内点或者这些点的组合形成测试项 3)案例来了 假设存在以下的测试场景,某个网站的登录页面: 1、用户名:1—20个字符,包括1和20,其他不考虑 2、密码:6个数字,其他不考虑 现要求用边界值分析法测试用户名和密码这两个输入框。 参考答案 边界值分析方法如下: 答案解析:密码这个字段的范围是闭区间【1-20】,用边界值设计用例,那么去找这两个数的左邻右舍+自己,1则是0和1和2,20则是19,20,21。 三、判定表 1)概念 判定表是分析和表达多种输入条件下系统执行不同动作的工具,它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确 。 2)判定表法设计用例的步骤 列出所有的条件桩和动作桩 填入条件桩、条件项 填入动作桩、动作项 化简,合并相似规则 将每条规则转化为用例 3)案例来了 假设有以下逻辑: 运用判定表设计用例。 参考答案 答案解析:判定表的解题思路就是先列出所有条件,然后列出每个条件的取值,最后如上图,一列就是一条用例。 四、正交试验法 1)概念 正交试验设计(Orthogonal experimental design)是研究多因子多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点。 关于正交试验表的两个重要概念: 1、所有参与试验、影响试验结果的条件称为因子。 2、影响试验因子的取值或输入叫做因子的水平。 如何选择正交表: 1、考虑因子的个数 2、考虑水平的个数 3、考虑正交表的行数 4、取行数最少的一个 ------- 1、 缺陷的概要描述要清晰准确,要使相关开发负责人员能够一目了然问题是什么。 2、 一个完整的缺陷报告单,必须包含其必要的元素信息,例如:概要描述,缺陷发现人,测试环境,浏览器,缺陷重现步骤,严重等级,指派人,所属功能模块等等,必要元素信息必须描述全面清楚。 3、 缺陷的重现步奏必须描写清晰明了,使相关开发负责人能够根据重现步骤准确的重现所提交的缺陷,使其定位缺陷的原因所在。 4、 指派给人一定要明确,如知道缺陷是所属具体的某一个开发人员时,应该直接指派给对应的负责人,这样就能减少中间分配环节的时间。 5、 测试数据,测试的数据作为重现缺陷的一个重要元素信息,一定要将测试时所使用的信息给描写清楚准确。让开发人员根据测试所提供的测试数据准确重现缺陷。 6、 附件截图信息,附件或截图信息能让开发人员能够一目了然的清楚问题的所在,所以必要的时候提供附件或者截图信息也非常的重要。 7、描述缺陷内容的语气,在进行缺陷单书写时,尽量使用专业术语(体现测试的专业性),其次注意书写缺陷报告单时不要带有个人客观的语气内容,以免影响开发和测试人员之间的关系。 功能度:用水杯装水看漏不漏;水能不能被喝到 安全性:杯子有没有毒或细菌 可靠性:杯子从不同高度落下的损坏程度 可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用 兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等 易用性:杯子是否烫手、是否有防滑措施、是否方便饮用 用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述 疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等 压力测试:用根针并在针上面不断加重量,看压强多大时会穿透 1、用例编号:相当于一个人的身份证号、一个用例也有一个英里编号 2、用例名称:也就是一个人的名字,每一个都有一个名字,用例也有一个自己的名字 3、测试背景:就是测试环境背景,说明什么项目,测什么,在什么情况背景下去测 4、优先级:根据自己安排来确定哪一个优先 5、重要级:根据事情的重要程度来确定,和优先级有一点差别 6、测试数据:测试的参数数据 7、测试步骤:也就是测试的一个过程我 8、预期结果:想象的一个可能达到的结果 9、实际结果:实际测试过程出现的最终结果 10、备注:强调特殊情况内容 11、前置条件:测试的前提条件,比如你要测一个登陆界面,你要有一个已注册的账号密码,这才能测 1-项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后sqa进入项目,开始进行统计和跟踪 2-开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。 3-测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。 4-测试用例完成后,测试和开发需要进行评审。 5-测试人员搭建环境 6-开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现bug后提交给bugzilla。 7-开发提交第二个版本,包括bug fix以及增加了部分功能,测试人员进行测试。 8-重复上面的工作,一般是3-4个版本后bug数量减少,达到出货的要求。 9-如果有客户反馈的问题,需要测试人员协助重现以及回归测试。 什么是接口测试?为什么要做接口测试? - Zoraliu - 博客园 (cnblogs.com) 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。 1.请求模型 接口的请求可以理解为接口就是一个电灯的开关,它在接口里面给你提供了一个参数,参数的值一个是 “开”,一个是“关”。 2.请求结构 HTTP的URL是怎么组成为一个接口的 一个URL就是一个接口:接口大致会分为一下几个部分: 3.接口HTTP参数 http请求方式 http请求头 请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度。例如: http请求体 请求体就是请求等正文了,可以有很多种请求体。 json格式 xml格式 html格式 二进制格式( 多数用于图片 ) 字符串格式 看到上面的请求结构,就能接口测试了,只需要修改接口的参数,就可以像功能测试一样测了。可以用功能测试设计用例的方法来设计接口测试的用例。可以使用各种测试用具辅助测试,以“postman”测试为例。 首先,确认需求 面试官简单描述这道题后,你是否真的已经了解了他的需求呢,如上描述,需求范围过于笼统,也就是要明确用户故事。请问这个需求是怎样的项目背景或基于什么前提下而做的;会涉及到哪些支撑平台;具体需要怎样的权限可以上传操作;该功能的迭代会影响到哪些其他的存量功能等,是否有明确的性能需求等 第二,梳理需求,确认测试范围 是否需要考虑历史数据,数据来源,用户角色,支持哪些操作系统,兼容性要求(考虑平台兼容性、浏览器兼容性、手机型号 版本等),是否提供接口文档,DB设计文档等等 第三,制订测试计划 通过测试需求与测试范围,制订测试计划,我需要运用到的测试方法,工作量预估,测试资源,每个节点的测试类型,以及结束测试标准等等(可以针对此面试题来描述) 测试计划需要经过项目组干系人评审通过后才可以进行下一步 第四,根据测试计划设计测试用例 当然,此步会根据个人习惯和经验来适当增减,如先使用思维导图理出测试想法, 然后再扩展。可以按可接受性测试用例、系统测试用例(接口、功能、性能、安全、UI、DB...)来开始设计用例。这样就可以按照所学的N+测试方法来充分设计Case了,而有了测试计划中的相关策略来指导 ,也不会疏漏其他的需求点了。 第五,后续的执行测试步骤(可以依情况来作描述)我们暂且就此面试题展开分析 ,故不作深入探讨 一、首先测试需求分析要全面。 测试需求分析分两步: 1、测试需求的获取 需求的来源: 显式需求: (1)原始需求说明书 (2)产品规格书 (3)软件需求文档 (4)有无继承性文档 (5)经验库 (6)通用的协议规范 隐式需求:用户的主观感受,市场的主流观点,专业人士的评价分析 2,需求的分析 ,产生测试需求文档 将不同的需求来源划分成一个个需求点,针对每一点进行测试分析: (1)界定测试范围 (2)利用各种测试设计的方法产生测试点 在测试方法方面,可做如下注意: 其一,分析出口入口。从入口分析,将可能出现的环境,条件,操作等内容分类组合,然后根据各位测试达人的方法进行整合,逐一验证。从出口分析,将可能出现的结果进行统计,根据结果的不同追根溯源,再找到不同的操作以及条件等内容,统计成文档,逐一验证。 其二,多种测试手法的学习和使用。大家可能更多的关心测试方法,但是具体操作的手法也是需要注意的。毕竟测试方法比较容易找到,各位达人都很熟悉。如果将每个人不同的测试手法总结出来并在自己的测试实施中加以使用,可能会收到意想不到的成果。 在测试流程方面,可作如下注意: 其一,初期要做好需求分析。将需求逐渐细化到小功能点,针对每个功能点进行测试设计。对于完成的测试设计文档,经过项目相关人员的检查评审,做成所需要的初稿。 其二,在测试过程中,根据需求变更和具体测试执行过程中遇到的问题完善测试设计文档。 其三,测试执行结束后,对于出现的问题进行总结。其中包含自己本身发现的问题,也可能会有客户提出的问题。将总结出来的结果融合到测试设计当中去,进一步完善测试设计文档。 对于一次测试,是不可能有覆盖度全面的测试的。需要多次去总结积累,才会使测试越来越全面。 在测试流思维方面,可作如下注意: 其一,测试全面不等于全面测试。不同阶段对于软件测试有不同的要求,比如在0.8版本以前,对于不重要的画面问题或是细小的功能问题就不需要关心。但是在验收阶段,这些内容可能更需要注意。 其二,学无止境,只有不断的去学习不断的去思考,才能使自己测试的能力更强,测试对象的全面性也更完整。 二、 当测试需求分析完成,并且形成文档后,要进行测试需求评审,保证需求的准确性以及完整性。 三、 测试需求完成以后,可以根据测试需求设计测试用例。 要保证测试用例能够全面覆盖测试需求,要包含所有的情况。 测试用例设计上划分为单功能测试用例和测试场景设计,单功能测试覆盖的需求中的功能点,测试场景覆盖需求中的业务逻辑。 在设计测试用例的时候,可以使用多种测试用例设计方法。 ●首先进行等价类划分,包括输入条件和输出条件的等价类划分,合理设置有效等价类和无效等价类,这是减少工作量和提高测试效率最有效的方法。 ● 必须使用边界值分析,经验表明,这种方法设计出的用例能发现很多程序错误。 ● 可以使用错误推测法追加一些测试用例,这需要依靠您的智慧和经验。 ● 对照程序逻辑检查已设计出的测试用例的逻辑覆盖度,如果没有达到覆盖标准应当再补充足够的测试用例。 ● 如果程序的功能说明中含有输入条件的组合情况,一开始就可选因果图和判定表驱动法。 ●对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。 ● 对于业务流清晰的系统,可以利用场景法贯穿整个测试方案过程,在案例中综合使用各种测试方法。 当测试用例设计完成后,要组织测试用例的评审,这样可以吸取别人的意见,减少遗漏,补全测试用例。 四、 测试用例编写完成后,就是测试执行, ● 测试用例执行100%覆盖。 ●在测试执行过程中,要继续对测试用例补充完善,确保提高测试覆盖率。 五、 在整个测试过程中,需求都是不可能不变的,所以要及时的更新测试需求、测试用例。 六、 要将测试需求、测试用例以及发现的bug关联起来,便于管理和跟踪,同时也便于查看覆盖率。 一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式 SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL>SELECT * FROM emp WHERE ename like 'S__T%'; 7. 在where条件中使用In SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST'); 8. 查询字段内容为空/非空的语句 SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL; 9. 使用逻辑操作符号 SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%'; 10. 将查询结果按字段的值进行排序 SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部门升序,并按薪酬降序) 二、复杂查询 1. 数据分组(max,min,avg,sum,count) SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp; SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp)); SQL>SELEC COUNT(*) FROM emp; 2. group by(用于对查询结果的分组统计) 和 having子句(用于限制分组显示结果) SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno; SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000; 对于数据分组的总结: a. 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中) b. 如果select语句中同时包含有group by, having, order by,那么它们的顺序是group by, having, order by。 c. 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子句中,否则就是会出错。 使用group by不是使用having的前提条件。 3. 多表查询 SQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno; SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal; 4. 自连接(指同一张表的连接查询) SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno; 5. 子查询(嵌入到其他sql语句中的select语句,也叫嵌套查询) 5.1 单行子查询 SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');查询表中与smith同部门的人员名字。因为返回结果只有一行,所以用“=”连接子查询语句 5.2 多行子查询 SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);查询表中与部门号为10的工作相同的员工的姓名、工作、薪水、部门号。因为返回结果有多行,所以用“IN”连接子查询语句。 in与exists的区别: exists() 后面的子查询被称做相关子查询,它是不返回列表的值的。只是返回一个ture或false的结果,其运行方式是先运行主查询一次,再去子查询里查询与其对 应的结果。如果是ture则输出,反之则不输出。再根据主查询中的每一行去子查询里去查询。in()后面的子查询,是返回结果集的,换句话说执行次序和 exists()不一样。子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去。符合要求的输出,反之则不输出。 5.3 使用ALL SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);查询工资比部门号为30号的所有员工工资都高的员工的姓名、薪水和部门号。以上两个语句在功能上是一样的,但执行效率上,函数会高 得多。 5.4 使用ANY SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);查询工资比部门号为30号的任意一个员工工资高(只要比某一员工工资高即可)的员工的姓名、薪水和部门号。以上两个语句在功能上是 一样的,但执行效率上,函数会高得多。 5.5 多列子查询 SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH'); 5.6 在from子句中使用子查询 SQL>SELECT emp.deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno) t_avgsal where emp.deptno=t_avgsal.deptno AND emp.sal>t_avgsal.avgsal ORDER BY emp.deptno; 5.7 分页查询 数据库的每行数据都有一个对应的行号,称为rownum. SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2 WHERE rn>=6; 指定查询列、查询结果排序等,都只需要修改最里层的子查询即可。 5.8 用查询结果创建新表 SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp; 5.9 合并查询(union 并集, intersect 交集, union all 并集+交集, minus差集) SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER'; 合并查询的执行效率远高于and,or等逻辑查询。 5.10 使用子查询插入数据 SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2)); 先建一张空表; SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10; 再将emp表中部门号为10的数据插入到新表myEmp中,实现数据的批量查询。 5.11 使用了查询更新表中的数据 SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT'; 1、下列关于alpha测试的描述中正确的是(BD) A alpha测试需要用用户代表参加 B alpha测试不需要用用户代表参加 C alpha测试是系统测试的一种 D alpha测试是验收测试的一种 2、软件质量的定义(D) A 软件的功能性、可靠性、易用性、效率、可维护性、可移植性 B 满足规定用户需求的能力 C 最大限度达到用户满意 D 软件特性的总和,包括满足规定的和潜在的用户需求 3、软件验收测试的合格通过准则是(ABCD) A 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。 B 所有测试项没有残余一级、二级和三级错误。 C 立项审批表、需求分析文档、设计文档和编码实现一致。 D 验收测试工件齐全。 4、软件测试计划评审会需要哪些人员参加(ABCD) A 项目经理 B SQA 负责人 C 配置负责人 D 测试组 5、测试设计员的职责有(BC) A 制定测试计划 B 设计测试用例 C 设计测试过程、脚本 D 评估测试活动 6、软件实施活动的进入准则是(ABC) A 需求工件已经被基线化 B 详细设计工件已经被基线化 C 构架工件已经被基线化 D 项目阶段成果已经被基线化 7、软件测试的对象包括(B) A 目标程序和相关文档 B 源程序、目标程序、数据及相关文档 C 目标程序、操作系统和平台软件 D 源程序和目标程序 8、从测试阶段角度,测试正确的顺序是(A-B-C-D),同时给出所选择的正确策略含义和被测对象是什么? A 单元测试 B 集成测试 C 系统测试 D 验收测试 单元测试:又称模块测试、逻辑测试或结构测试,是针对软件设计的最小单元—程序模块进行正确性检验的工作。其目的在于检查每个单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。被测试对象是各子模块程序。 集成测试:又称组装测试、综合测试或联合测试。是按设计要求把通过单元测试的各模块按一定的方式组装在一起后,进行测试,以便发现与接口有关的各种错误。被测对象是组装的软件部件。 系统测试:是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。被测对象是完整的系统。 验收测试:是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试是向未来的用户表明系统能够像预定要求那样工作。被测对象是完整的系统。 9、从测试方法的角度来分,正确的选择是(BD),并写出下面各项的含义? A 静态测试:指不运行程序,通过人工对程序和文档进行分析和检查。 B 黑盒测试:通过软件的外部表现来发现缺陷和错误。黑盒测试法把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程;它是在程序界面处进行测试,检查程序是否按照需求规格说明书的规定正常实现。 C 动态测试:指通过人工或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现。 D 白盒测试:通过对程序内部结构的分析、检测来寻找问题。白盒测试可以把程序看成装在一个透明的盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部结构动作是否按照设计说明的规定正常进行。 1、在 UNIX 下文件 exer1 的访问权限为 rw-r–r–,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是 :chmod a+x g+w exer1 2、在 UNIX 操作系统中,查看系统进程使用 ps –ef 命令。 3、软件能力成熟度模型 CMMI 一共有 五 个级别。 4、黑盒测试的常用方法:等价类划分、边界值、因果图、功能图、正交试验、场景法或错误推测法或判定驱动法等。 5、白盒测试中逻辑覆盖法中常用的方法:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖或修正条件判定覆盖等。 1、测试计划的目的是什么?测试计划的内容都包括什么?其中哪些是最重要的? 软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是先评审)。 2、什么是测试用例,它是由哪些基本元素组成? 测试用例是为特定目标开发的测试输入、执行条件和预期结果的集合。 测试用例的组成:测试用例编号,测试用例标题,测试的模块,测试的输入条件,操作步骤,测试的预期结果,其它说明等。 3、软件测试过程中都有哪些工作要做? 软件测试流程:需求分析–>测试计划–>测试设计–>测试环境搭建–>测试执行–>测试记录–>缺陷管理–>软件评估 4、如果业务层和数据层之间有依赖关系,你该怎么写单元测试? 这个时候我们需要模拟数据层,给业务层提供数据,比如简单的返回各类数据,直接从文本文件、数据库中读取我们需要的测试数据等来完成单元测试。 5、性能测试中压力测试和负载测试的区别? 压力测试测试系统在不同压力情况下的效率状况,以及系统可以承受的压力情况。 负载测试指在测试过程中,逐渐增加被测系统负担,直到出现系统不能接受到的性能点,目的是发现被测系统的负载极限。 压力测试和负载测试的主要区别在于目的不同。 对教学数据库的三个基本表: S(S#、Sname、AGE、SEX) SC(S#、C#、GRADE) C(C#、Cname、TEACHER) 用SQL语句表达下列对教学数据中三个基本表S、SC、C的查询 1、求DENG老师所授课的每门课程学生的平均成绩 select C#,AVG(GRAEDE) from SC where C# IN(select C# from C where TECHER=’DENG’) GROUP BY C# 2、统计每门课程的学生选修人数(超过14人的课程才统计),要求输出课程好和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 select C#,COUNT(S#) from SC group by C# HAVING COUNT (*)>14 ORDER BY 2 DESC C# 1、设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下: “有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角银币,按下“可乐”、“雪碧”或“红茶”按钮,相应得饮料就送出来。若投入的是2元硬币,在送出饮料的同时还退还5角硬币。”设计测试该软件的全部测试用例 分析这一段说明,我们可以列出原因和结果。 原因: (1)投入1元5角硬币 (2)投入2元硬币 (3)按“可乐”按钮 (4)按“雪碧”按钮 (5)按“红茶”按钮 中间状态: (1)已投币 (2)已按钮 结果: (1)退还5角硬币 (2)送出“可乐” (3)送出“雪碧” (4)送出“红茶” 测试用例: 2、请根据以下程序片段,设计最少的测试用例实现条件覆盖 记条件A>0,取真时为T1,取假时为F1 记条件B>0,取真时为T2,取假时为F2 记条件A>1,取真时为T3,取假时为F3 记条件X>1,取真时为T4,取假时为F4 3、在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示“错误”, 若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角型”;若是三角型“提示一般三角型”,使用等价类划分法设计测试用例。 等价类表: 测试用例: 最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 关于static变量,请选择下面所有说法正确的内容: A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题; D、静态全局变量过大,可那会导致堆栈溢出。 答案与分析: 对于A,B:根据本篇概述部分的说明b),我们知道,A,B都是正确的。 对于C:根据本篇概述部分的说明a),我们知道,C是正确的(所谓的函数重入问题,下面会详细阐述)。 对于D:静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的。 因此,答案是A、B、C。 问题:不可重入函数 曾经设计过如下一个函数,在代码检视的时候被提醒有bug,因为这个函数是不可重入的,为什么? 查看原始代码 unsigned int sum_int( unsigned int base ) { unsigned int index; static unsigned int sum = 0; // 注意,是static类型的。 for (index = 1; index <= base; index++) { sum += index; } return sum; } 答案与分析: 所谓的函数是可重入的(也可以说是可预测的),即:只要输入数据相同就应产生相同的输出。 这个函数之所以是不可预测的,就是因为函数中使用了static变量,因为static变量的特征,这样的函数被称为:带“内部存储器”功能的的函数。因此如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量,这种函数中的static变量,使用原则是,能不用尽量不用。 将上面的函数修改为可重入的函数很简单,只要将声明sum变量中的static关键字去掉,变量sum即变为一个auto 类型的变量,函数即变为一个可重入的函数。 当然,有些时候,在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。软件测试笔试题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于软件测试笔试题、软件测试笔试题的信息别忘了在本站进行查找喔。
未经允许不得转载! 作者:谁是谁的谁,转载或复制请以超链接形式并注明出处。
原文地址:http://www.zgj9.cn/post/14554.html发布于:2026-01-28




