软件测试 订阅
软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 展开全文
软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
信息
方    式
人工操作或者软件自动运行
领    域
IT行业、有信息化管理的各行业
工作内容
验证和确认
中文名
软件测试
目    的
鉴定、审核软件
外文名
software testing
软件测试概述
软件测试是伴随着软件的产生而产生的。早期的软件开发过程中软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。到了上世纪80年代初期,软件和IT行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。这个时候,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。人们还将“质量”的概念融入其中,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容,Bill Hetzel在《软件测试完全指南》(Complete Guide of Software Testing)一书中指出:“测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。”这个定义至今仍被引用。软件开发人员和测试人员开始坐在一起探讨软件工程和测试问题。软件测试已有了行业标准(IEEE/ANSI ),1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的,而且只是开发后期的活动,而是与整个开发流程融合成一体。软件测试已成为一个专业,需要运用专门的方法和手段,需要专门人才和专家来承担。
收起全文
精华内容
下载资源
问答
  • 软件测试工程师经典面试题

    万次阅读 多人点赞 2018-10-27 23:55:52
      软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux...

      软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件测试框架性的问题,测试环境搭建问题、当然还有一些自动化测试和性能测试的问题。测试工程师的面试题,基本上都是大同小异的,面试的核心主要在于框架模块(一到两年工作经验)
    。今天这篇帖子主要讲解之前面试自己面试过程中或者周围人面试过程中经常被问到且比较经典的面试题,一家之言,如有异议或者有想问的问题,可以在评论区留言,看到后将在第一时间内回复!


    1、软件测试的流程是什么?
      分析:每当HR问一个问题的时候我们都可以用1~2s的时间去想HR想要从这个问题中获取什么信息,这点搞清楚之后再去回答就很好回答了。如果有工作经验,直接按照公司流程回答即可,如果是刚转行或者刚实习,那按标准回答即可,文中回答仅供参考;
      回答: 项目经理或者PD把项目需求文档提前下发给相关的研发人员,研发人员抽出一定的时间记录文档内需求不明确或者遗漏的点为后面的评审做准备;在需求评审会议上,各研发人员提出自己的疑问并解决,需求评审最终通过之后会出一份最终的需求规格说明书;(需求评审阶段)
        需求规格说明书评审通过后,开发经理开始编写开发计划,测试经理开始编写测试计划,计划评审通过后开发人员开始进行程序的开发,测试人员开始测试用例的编写,等程序的第一个版本出来后,开发人员进行第二个版本的迭代,这时测试人员对程序进行测试并记录追踪管理缺陷,直到程序迭代完毕。(产品研发阶段)
        程序迭代完毕并修复大部分缺陷后,测试人员开始进行工作的总结,并最终输出一份测试报告书,记录此次的测试工作共,程序存在的相关问题。(产品发布阶段)

    2、测试用例主要有哪些元素?
      分析:每个公司因为使用的模板不一样,所以测试用例的内容也是不尽相同的,所以回答时只需要回答出基本的元素即可;
      回答: 测试用例主要元素有:ID、标题、模块、预置条件、操作步骤、预期结果、实际结果、是否通过、BugID等;

    3、软件测试有什么策略和阶段?
      分析:软件测试的策略就是测试将按照什么样的思路和方式进行如采用什么技术,什么步骤等。
      回答 :软件测试的策略主要有:动态测试和静态测试、白盒测试和黑盒测试。测试阶段按照研发顺序分别是:单元测试、集成测试、系统测试,有些公司还会有验收测试;(单元测试开发在调试代码时就完成,集成测试也是,但是有时测试人员也需要进行集成测试;测试人员平时主要的工作就是系统测试,验收测试是有客户参与进行的测试);

    4、黑盒测试和白盒测试是什么?二者有什么区别?
      分析:黑盒测试和白盒测试的概念百度百科上面都有,这里不再做太多介绍。黑盒测试和白盒测试的区别:https://www.cnblogs.com/i16i1007/p/6624072.html记得
      回答: 黑盒测试主要是在程序界面进行测试,通过设定某种场景检验程序在这种场景下是否给出了正确的反应,验证程序正确实现了需求规格说明书中的需求,而白盒测试主要是针对程序内部结构,对程序代码进行代码走查等,但是白盒测试的成本会比较大,当程序有多个路径时,可能会产生较多的遗漏;

    5、软件测试有什么类型?
      回答: 常见的软件测试类型有:功能测试、性能测试、兼容性测试、可靠性测试、安全性测试、压力测试、负载测试等;

    6、测试用例是什么?有什么作用?
      回答:测试用例就是设计一个特定场景,让软件在这种场景下运行,检验程序是否给出正确的反应,以此验证软件是否正确实现了客户需求。
      作用:1、避免盲目测试并提高测试效率;在软件版本更新之后只需修正少部分用例即可开展测试工作,降低工作强度,缩短测试周期;
             2、可以分清哪些是测试重点,测试用例是测试工作的见证,能知道测试了哪些功能,没测哪些模块;
             3、测试用例是量化测试工作的方法之一;

    7、你平时是怎么设计测试用例的?
      分析:这个问题的点主要考察是否掌握测试用例设计方法,在回答之后,HR可能会继续追问某种设计方法的概念或者实例,这时举例说明即可;如:等价类划分法就是把程序的输入域划分成等价类,从每个部分中选取少数代表性数据当做测试数据。
      回答:设计测试用例一般都会使用到等价类、边界值、场景/流程法、因果图还有错误推测法;

    8、软件缺陷的定义是什么?
      分析:什么样的问题才是一个缺陷,需要从客户需求出发;
      回答:1、软件未实现需求规格说明书中的要求;
            2、出现需求规格说明书中指明不应该出现的错误;
            3、软件未实现需求文档中虽未明确提及但应该实现的功能;(如:账密加密)
            4、软件出现难以理解、不易使用或者运行速度慢等问题都可以认为是软件缺陷;

    9、缺陷中应该包含什么元素?严重等级一般有哪些?
      分析:这个问题和上面测试用例一样,每个公司的要求可能都会不一样;
      回答:主要元素有:标题、BugID、复现步骤、实际结果、预期结果、截图、日志等;软件缺陷等级一般有四种,致命(程序奔溃)、严重(金额计算错误、数据出错)、一般(不影响使用但是会造成一定的麻烦)、优化(字体字号不统一)

    10、给你一个杯子,你会怎么测试?
      分析:给你一个杯子,给你一个电梯,这种问题在前期的面试中是经常遇到也是非常经典的一道面试题,这里给出一个链接,回答时从外观、功能、性能等各个角度说起,再结合自己的一些话就可以了。
      回答:经典测试用例,一个水杯的测试https://blog.csdn.net/ganhongxia/article/details/6025416

    11、测试报告里面包含什么内容?
      分析:测试报告,是测试工作结束后测试部门输出的一份测试结果,但每个公司的测试报告内容都会有些差别。有些公司的测试报告是有测试部门的负责人一人编写,或者是由每个测试工程师输出自己对应模块的测试报告再由测试组长整合成一份完整的测试报告;
      回答:测试报告内容一般有:编写目的、系统简介、测试环境、测试方法和工具、测试执行结果与记录、缺陷汇总、遗留缺陷跟踪、测试用例执行情况、测试结论与建议等;

    12、如果在测试过程中发现了BUG,可是开发不承认这是Bug,你会怎么办?
      分析:HR问这个问题主要还是想知道你平时是如何处理与同事之间的关系。开发和测试是两个即对立又统一的两个岗位,所以开发和测试之间关系的处理也是HR面试过程中需要考虑的一个点。当然,HR问这个问题也表名该公司有氛围不是很好的风险。
      回答:首先还是应该回归到客户需求上面,确认这个问题到底属不属于一个缺陷,如果确实是则要和开发同事解释清楚;如果开发还是坚持自己想法的话,则询问同事或者测试组长的意见,讨论这个问题到底属不属于缺陷问题,如果大家都觉得是则需要和开发解释清楚。

    13、你们公司的需求评审是怎么进行的?
      分析:需求评审,就是对客户需求,软件各个模块之间模糊的点进行审查,排除不理解或者没有考虑到的点。
      回答:需求评审,在一些分工比较明确的公司,都是由PD(产品设计师)负责,需求确认好后再下发到开发和测试部门;分工不怎么明确的公司可能就是开发测试产品等大家坐在一起共同探讨;评审形式一般分为线上和线下两种方式,负责人一般会提前把需求文档下发到大家手上供大家整理各自的疑惑点,为后续的评审会议做准备。

    14、MySQL的常用命令有哪些?
      分析:数据库知识,是测试工程师必备的一个基本技能,在面试过程中也是经常会遇到的一个考点。对于刚入行的测试,对数据库知识的要求不会太高,只要求能掌握基本的增删改查语句即可。关于数据库的知识,在后续的时间里,也会慢慢的整理出来,供大家学习、参考。
      回答:这里只给出几个标准的语法结构:
            增:insert into 表名(列名) values (数据);
        如:在stu表中插入id为001,姓名为张三的学生,(insert into Stu(stu_id,stu_name) values (001,‘张三’);)
            删:delete from 表名 where 指定数据;
        如:在stu表中删除id为001,姓名为张三的学生:(detele from Stu where stu_id=‘001’ and stu_name = ‘张三’;)
            改:update 表名 set 改变项 where 指定数据;
        如:在stu表中修改id为001的学生姓名为“张三”:(update Stu set stu_name = ‘张三’ where stu_id=‘001’ ;)
            查:select (查询项) from 表名 where 指定条件;
        如:在stu表中查询id为001,姓名为“张三”的学生信息:(select * from Stu where stu_name = ‘张三’ and stu_id=‘001’ ;)

    15、Linux下的一些常用命令是什么?
      分析:Linux系统,也是软件测试工程师必须要掌握的一项基本的技能,由于Linux具有运行稳定等很多优点,软件的服务器大多部署在Linux系统上,搭建测试环境也是测试工程师需要掌握的。关于Linux的知识,在后续的时间里,也会慢慢的整理出来,供大家学习、参考。由于Linux下很多命令都是常用的,所以这里不给出答案。

    16、你未来的职业规划是什么?
      分析:职业规划问题,是所有面试中最常问的问题,问的人可能是HR、部门主管、经理、甚至是董事长。同一个问题,问的人不同,想要获取的信息也肯定是不一样的。HR更多的想看你在公司的稳定性;技术主管可能更想知道你是否真的喜欢测试这个岗位,后期是否会主动学习型新的技能等;而经理更多的是看你的职业规划符不符合公司的发展方向;软件测试工程师的发展方向主要有:测试开发、产品经理、测试转开发、测试大牛、讲师等岗位;
      回答:HR:如果是HR问的话,多从稳定性的角度回答,如:家人、朋友都在公司附近,或者喜欢贵公司的文化氛围等;
            技术:回答之前可以先简单介绍一下自己为什么选择软件测试这个职业,以及自己对这个职业的看法,最后再回答自己的职业发展方向即可;
            经理or董事长:这个回答回答起来的话还是比较难把握的,因为在面试时,面试者往往对公司的发展方向不是非常了解,所以在回答时可以再带一句,“具体的发展方向,还需要公司的发展方向去调整”。这样回答就会保险一些。

    17、还有什么想要问我的吗?
      分析:这个问题在每个面试的尾声都会被问到,直接说没有,会让HR觉得你不关心这个岗位,问的多了又会显得面试之前没有做好充分的准备。所以问题一般控制在两到三个比较好。
      回答:1、公司的研发团队目前是什么规模?开发、测试分别有多少人?
            2、公司的业务方向是什么?
            3、如果我入职之后,我的工作职责是什么?

    18、为什么想要离职?
      分析:这个问题主要是想要了解你的近况,以及上一家公司是什么原因导致你离职,。在大部分情况下,HR都会理解你,但是在回答问题时千万不能太过于实诚,有些面试者一上来就在抱怨上一家公司如何压榨公司员工等,没有一家公司愿意接受这样的面试者,HR并不能完全感受你所遭遇到的,所以还是请控制好自己的负面情绪。

    展开全文
  • 软件测试技术经典教程 第2版

    热门讨论 2016-05-05 10:25:33
    软件测试技术经典教程(第2版)》是高级软件测试工程师专用教材。作者通过丰富的项目及培训经验,结合大量实际案例讲解软件测试技术和软件测试工具的应用,将最实用的技能及知识传授给读者,使读者尽快上手,少走...
  • google软件测试之道

    千次下载 热门讨论 2015-03-19 16:18:19
    《Google软件测试之道》从内部视角告诉你这个世界上知名的互联网公司是如何应对21世纪软件测试的独特挑战的。《Google软件测试之道》抓住了Google做测试的本质,抓住了Google测试这个时代最复杂软件的精华。《Google...
  • 软件测试面试题(面试前准备篇)

    万次阅读 多人点赞 2019-09-27 10:42:37
    是否了解软件测试需要掌握哪些知识(问到类似问题) 之前面试过,觉得自己需要补充哪些?做了哪些行动? 为什么做测试,觉得自己做测试有哪些优势?(有问到) 知道哪些Bug系统 9.测试用例的基本要素是? 二、...

    目录

    一、问题预测

    1. 让简单介绍下自己(每次面试开场)

    2. 让说下自己会的内容

    3. 看了哪些书籍(有问到)

    4. 了解过哪些技术博客/论坛(有问到)

    5. 是否了解软件测试需要掌握哪些知识(问到类似问题)

    6. 之前面试过,觉得自己需要补充哪些?做了哪些行动?

    7. 为什么做测试,觉得自己做测试有哪些优势?(有问到)

    8. 知道哪些Bug系统

    9.测试用例的基本要素是?

    二、介绍一下公司项目

    三、技能方面

    1、 数据库方面常识

    2、 linux操作

    3、缺陷方面(有问到)

    4、用例部分

    5、软件测试流程

    6、网络相关

    7、测试工具

    8、其他概念问题

    四、你还有什么想问的吗(必答)

    五、简历模板

    一、问题预测

    1. 让简单介绍下自己(这个不用说了每次面试开场)

    你好,我叫xx,来自xx,毕业于xx。目前有两年的功能测试经验。最近的一份工作是xx公司,主要参与app系统测试,负责xxapp,一款类似抖音的短视频app功能测试,负责过的功能模块有拍摄、上传、搜索、推荐引擎等。主要运用边界值,等价类,错误推测等常见黑盒测试方法。

    1. 让说下自己会的内容

    我熟悉软件测试基础理论和测试流程,测试方法等,有app测试、web测试、接口测试经验。熟悉数据库增删改查操作,熟悉使用测试管理工具。

    1. 看了哪些书籍(有问到)

    软件测试,软件测试的艺术、软件测试实用教程,在我负责短视频的推荐引擎测试期间看完了项亮的《推荐系统实战》主要是推荐系统的评测部分。

    1. 了解过哪些技术博客/论坛(有问到)

    51testing论坛,CSDN一些博客(面试经验:面试中会问具体哪些博客),和公众号(搜狗测试、软件测试资源分享)

    1. 是否了解软件测试需要掌握哪些知识(有问到类似问题)

    软件测试基础知识,流程,测试用例方法,数据库相关知识,抓包分析,接口测试、测试工具、性能测试等。

    1. 之前面试过,觉得自己需要补充哪些?做了哪些行动?

    很多公司对性能测试和自动化测试工具有要求,由于之前的工作主要涉及的是功能测试,所以这方面的知识储备不够。不过最近我在学习这方面的知识,希望以后在工作中能深入学习。

    1. 为什么做测试,觉得自己做测试有哪些优势?(有问到)

    我觉得我个人的性格比较适合做测试。我比较细心耐心,考虑事情比较全面,这样对于我在设计测试用例时很有帮助,而且我能够很好的与人协调沟通,当我们测试和开发发生沟通上的矛盾时我也能很好的解决,我平常喜欢刷微博、知乎看热门评论,喜欢考究大众心理,这有助于我站在用户角度设计测试点。

    1. 知道哪些Bug系统

    禅道/bugzila等

    9.测试用例的基本要素是?

    版本号,功能模块,优先级别,前置条件,步骤,预期结果,实际结果等。

    二、介绍一下公司项目

    xxapp,是一款集短视频、游戏、直播、社交互动于一体的内容娱乐APP。公司大约一个月发布一个较大的版本,需求数20几个-40几个不等(用例数xx+),每个版本包括的需求www\wap、后台以及客户端的需求。项目分客户端版本负责人、后台版本负责人、H5版本负责人等,负责人牵头及落实整个测试流程。我当过的角色有H5活动负责人、推荐引擎版本负责人、客户端和后台系统测试人员。负责过的模块用例数大概是500左右。

    三、技能方面

    1、数据库方面常识

    l关系型数据库:把复杂的数据结构归结为简单的二元关系(即二维表格形式),通过SQL结构化查询语句存储数据

    典型产品:

    Mysql:互联网领域、大中小型网站,游戏公司,电商平台等等。体积小、速度快、成本低、开放源代码

    Oracle:传统大企业、大公司、政府、金融、证券等。安全性、成本高、

    l非关系型数据库:非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL”。NOSQL为了高性能、高并发而生

    其他分类

    1)键值(Key-Value)存储数据库:主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。简单、易部署、高并发

    典型:Redis、Memcached

    2)列存储(Column-oriented)数据库:应对分布式存储的海量数据。如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄,而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族中。

    典型:Hbase

    3)面向文档数据库:数据存储的最小单位是文档

    典型:Mongodb、Hive

    Mongodb一个介于关系型数据库和非关系型数据库之间的产品。高性能、易部署、易使用,存储数据非常方便。

    Hive可以用来进行统计查询,HBase可以用来进行实时查询

    一些增删改查笔试题准备

    (另起一篇)

    2、linux操作

    linux搭建测试环境,比如web系统服务搭建。

    一些常见命令准备

    (另起一篇)

    3、缺陷方面(有问到)

    描述一个你印象最深刻的bug

    在做上传视频的测试时,发现华为荣耀V10上传手机自带相机专业模式录制的视频会闪退。而ios上传同个视频提示合成失败。

    我将手机自带相机录制的专业模式和普通模式录制的同样时长的视频发到电脑上,用格式工厂软件查看视频的不同之处,之后发现视频编码是不同的。

    我继续网上查阅了视频编码方面的知识,发现mp4视频有几种编码,而继续测试验证发现我们的app上传的视频只支持mp4视频中的H.264编码格式。于是提交了视频上传不支持非H.264格式的视频。并补充完善了相关用例。

    (因为在公司没有查日志权限,所以其实应该先查日志)

    4、用例部分

    现场让你设计个用例,比如水杯、凳子怎么测试?

    首先说明的是,遇到这样的测试题目,首先应该反问面试官,需求是什么样的,比如是测什么样的杯子。

    因为设计测试用例的规则应该是根据需求分析文档设计用例,客户需求什么,就测试什么。

    但是在没有需求分析文档的前提下,来设计测试用例,可以考查一个测试人员的基本功,比如考虑问题是否全面,设计测试用例的方法是否合理等。

    一般是根据自己的日常经验和测试的思维来设计测试用例。在设计测试用例时一般从以下几个方面进行分析:功能测试,性能测试,界面测试,安全性测试,兼容性测试,可用性测试,可靠性测试,本地化/国际化测试。

    例子(另起一篇)

    5、软件测试流程

    公司严格规范测试流程和测试文档,首先是参与需求评审,编写测试计划、测试方案、测试用例,进行测试方案及用例的测试组内部评审,外部评审。

    提取部分一级用例提交研发自测,研发自测通过后开开始执行一轮系统测试。

    测试过程中发现并提交、跟踪问题。

    问题修复后进行回归测试。

    一轮测试完成后对修复包进行冒烟测试,测试通过则进行二轮测试。

    二轮测试完成后会进行需求交叉测试。

    完成测试编写系统测试报告提交验收测试。验收测试通过输出验收测试报告。

    6、网络相关

    网络协议,如TCP/UDP的区别?(https://www.cnblogs.com/steven520213/p/8005258.html)

    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

    3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

    4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

    5、TCP首部开销20字节;UDP的首部开销小,只有8个字节

    6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

    三次握手与四次挥手

    三次握手通俗版:

    第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个SYN=1的连接请求信号,”服务端哥哥,我想给你说说话”。

    第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息,”我知道了(ACK),我这边已经准备好了,你现在能连吗(SYN)”。

    第三次握手:当客户端收到了服务端的确认连接信息后,要礼貌的告知一下服务端,“好的,咱们开始联通吧(ACK)”。

    到此整个建立连接的过程已经结束,接下来就是双方你一句我一句甚至同时交流传递信息的过程了。

    四次挥手断开连接通俗版:

    第一次挥手:双方交流的差不多了,此时客户端也已经结尾了,接下来要断开通信连接,所以告诉服务端“我说完了(FIN)”,此时自身形成等待结束连接的状态。

    第二次挥手:服务端知道客户端已经没话说了,服务端此时还有两句话要给客户端说“我知道你说完了(ACK),我再说两句&*…%¥”…

    第三次挥手:此时客户端洗耳恭听继续处于等待结束的状态,服务器端也说完了,自身此时处于等待关闭连接的状态,并对告诉客户端,“我说完了,咱们断了吧(FIN)”。

    第四次挥手:客户端收知道服务端也说完了,也要告诉服务端一声(ACK),因为连接和断开要双方都按下关闭操作才能断开,客户端同时又为自己定义一个定时器,因为不知道刚才说的这句话能不能准确到达服务端(网络不稳定或者其他因素引起的网络原因)。

    所以默认时间定为两个通信的最大时间之和,超出这个时间就默认服务器端已经接收到了自己的确认信息,此时客户端就关闭自身连接,服务器端一旦接收到客户端发来的确定通知就立刻关闭服务器端的连接。

    到此为止双方整个通信过程就此终结。

    这里要声明一下:断开链接不一定就是客户端,谁都可以先发起断开指令,另外客户端和服务端是没有固定标准的,谁先发起请求谁就是客户端。

    三次握手阐述:

    在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;

    第二次消息B使用ack对A的数据包进行确认,因为已经收到了序列号为x的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;

    第三条消息A告诉B收到了B的确认消息并准备建立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接收B序列号为y+1的数据包。

    四次挥手阐述:

    由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,

    收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。

    首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
    (1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
    (2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
    (3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
    (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

    7、测试工具

    测试工具,无非这几类:

    自动化测试工具 (如QTP)

    性能测试工具 (如loadrunner)

    测试管理类 (如jira)

    安全测试工具

    渗透测试工具

    8、其他概念问题

    Beta测试与Alpha测试有什么区别

    1、Alpha测试

    Alpha测试是由用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边,这是在开发者受控的环境下进行的测试。由开发者随时记录下错误情况和使用中的问题。

    2、Beta测试

    Beta测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,这是在开发者无法控制的环境下进行的测试。由用户记录下遇到的所有问题,定期向开发者报告。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试

    3、验收测试

    验收测试是以用户为主的测试,软件开发和QA人员也应该参加,测试一般在用户所在地进行,由用户验证软件产品是否满足了所有的需求的一系列的验收测试工作。

    仅限于做项目的公司,部门内部测试稳定后,根据合同中需求由发包商进行验收测试。验收测试的目的是为了以发现”未实现的需求”为目的,以评估”适合使用”为目标,该类测试的不是以发现缺陷为主要目的。

    区别:两者的主要区别是测试的场所不同。

    Alpha测试是指把用户请到开发方的场所来测试,beta测试是指在一个或多个用户的场所进行的测试。Alpha测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。

    而beta测试的环境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数量相对比较多,时间不集中。

    一般地,alpha测试先于beta测试执行。通用的软件产品需要较大规模的beta测试,测试周期比较长。如果产品通过了beta测试,那么就可以正式发行了。

    Alpha测试在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。

    Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。

    四、你还有什么想问的吗(必答)

    我非常希望能够加入公司,所以想请问您觉得我还有哪些地方比较不足,能否给一些建议?以及是否有复试时间呢?

    五、简历模板

    可在公众号《软件测试er》回复‘简历模板’获取
    文章首发于公众号

    关于我准备后的面试经历、面试题汇总、面试结果

    有兴趣请继续关注~

    展开全文
  • 软件测试报告 珍藏版。好用记得回复推荐哦 目 录 1. 测试概述 3 1.1. 编写目的 3 1.2. 测试范围 3 1.3. 参考资料 3 2. 测试计划执行情况 3 2.1. 测试类型 3 2.2. 测试环境与配置 4 2.3. 测试人员 4 2.4. ...
  • 免费的软件测试模板,免费分享
  • 软件测试入门知识了解

    万次阅读 多人点赞 2018-09-05 14:59:58
    1.软件测试定义两面性 2.测试的生命周期 测试需求分析-->测试设计-->测试计划-->测试执行-->质量评估 3.软件测试过程: 需求评审和设计评审是验证软件产品的需求定义和设计...

    一.概述

    1.软件测试定义两面性

    2.测试的生命周期

    测试需求分析-->测试设计-->测试计划-->测试执行-->质量评估

    3.软件测试过程:

     

     

    需求评审和设计评审是验证软件产品的需求定义和设计实现,验证所定义的产品特性是否符合客户的期望、系统的设计是否合理、是否具有可测试性以及满足非功能质量特性的要求。这个阶段主要通过对需求文档、设计文档等阅读、讨论,从中发现软件需求工程和系统设计中所存在的问题 。 

    单元测试的对象是程序系统中的最小单元---模块或组件上,在编码阶段进行,针对每个模块进行测试,主要通过白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。多个模块可以平行地、对立地测试,通常要编写驱动模块和桩模块 单元测试一般由编程人员和测试人员共同完成。

    集成测试,也称组装测试、联合测试、子系统测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题 两种集成方式:一次性集成方式和增殖式集成方式。

    功能测试一般须在完成集成测试后进行,而且是针对应用系统进行测试。功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用。

    系统测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括恢复测试、安全测试、强度测试和性能测试等。

    验收测试的目的是向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能如同用户所合理期待的那样 。

    安装测试是指按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用环境中,进行一步一步的安装操作性的测试。

    软件测试与开发关系:

    二.需求和设计评审

    1. 产品需求审查是软件开发重要环节之一,也是测试活动之一,即静态测试——需求验证。借助需求审查保证用户需求在市场/产品需求文档及其相关文档中得到准确、完整、无歧义的反映,并使各类开发人员在需求理解上达成一致。

    2.测试需求:

    测试目标取决于软件质量需求,而这种需求分为功能性需求和非功能性需求,功能性的需求相对容易确定,非功能性的测试需求难以确定。

    •  在制定测试计划之前,必须清楚测试需求
    •  明确测试需求的优先级
    •  测试需求分解得越细,对测试用例的设计质量越有帮助
    •  详细的测试需求还是衡量测试覆盖率的重要依据  
    • 测试需求是规划具体项目资源和时间的基础。

    3.功能性测试需求

    (1)功能性测试需求主要是根据产品规格说明书来检验被测试的系统是否满足软件各方面的功能的使用要求,包括用户界面的友好性。

    • 程序安装、启动正常,有相应的提示框、错误提示
    • 各项功能符合设计要求,正常运行并输出正确结果
    • 功能逻辑合理,并能处理各种异常操作
    • 能接受正确的数据输入,输出结果准确,格式清晰
    • 系统的各种状态按照业务流程而变化并保持稳定

    支持各种应用环境,能配合硬件设备

    (2)功能测试需求分析

    了解需求范围-->明确目标用户-->分析功能步骤-->挖掘隐藏需求

    • 了解需求想要做什么,要完成哪些功能模块
    • 需求目标是谁?不同的用户角色,功能和权限是否一样?
    • 要完成功能,用户需要哪些步骤
    • 挖掘隐藏需求

    4.用户界面及其显示要求

    用户界面是和用户进行交互的窗口,其友好程度直接影响用户对于软件产品或软件服务的满意度。良好的用户体验,简单、方便和明了,让用户舒畅、愉悦

    • 通用框架、浮动窗口和文字等整体布局合理
    •  文字显示正常,且内容格式正确、美观。
    •  色彩协调,风格前后一致,  文字标记和超链接可以打开和跳转成功

    5.非功能性需求

    非功能性质量需求,包括系统性能、安全性、兼容性、扩充性,其测试需求会因不同的项目类型差异较大。

    • 客户端软件,如字处理软件、媒体播放软件等占用较少资源,在容错性、兼容性等方面要求高。
    • Web应用系统对性能、安全性等有很高要求 客户端/服务器应用系统。
    • 大型复杂企业级系统。

    6.测试人员在需求评审中作用

    需求评审归为静态测试范畴,包含了文档评审和技术评审双重内容,通常通过正式的评审会议来进行。而测试人员主要起着评审员的作用,检查需求定义是否合理和清楚。

    • 明确自己的角色和责任
    •  熟悉评审内容,为评审做好准备  
    • 针对问题阐述观点,而非针对个人
    •  从客户角度想问题,多问几个为什么
    •  在会前或会后提出自己建设性的意见
    •  对发现的问题跟踪到底
    •  针对需求文档等报告问题

    7.设计审查

    1)成功的产品开发和演化依赖于体系结构恰当的选择。软件设计一般可以分为体系结构设计和详细设计。测试人员参与设计评审保证需求能在设计中得到准确和完整的表示,也就是保证产品规格说明书的质量。

    •  系统架构的审查
    •  设计规格说明书的审查
    •  系统部署设计的审查
    •  多层次审查:high-level  low-level

    2)系统架构设计的审查

    系统架构设计的基本要求就是保证系统具有高性能、高可靠性、高安全性、高扩展性和可管理性 。系统架构设计评审就是保证这些特性在设计中得到充分考虑。

    3)组件设计的审查

    • 功能和接口定义正  
    •  算法的有效性和优化
    •  合理的数据结构、数据流和控制流
    •  可测试性 等

    4)系统部署设计的审查

    系统部署设计的审查是基于软件服务的质量目标,用来审查软件部署的目标、策略是否合理,是否得到彻底的执行

    •  着重是否服从和遵守部署设计的技术规范
    •  逻辑设计的审查
    •  物理设计的审查
    •  可用性设计的审查  
    • 可伸缩型设计的验证
    •  安全性设计的验证

    三.测试用例设计

    1.测试用例(test case)是可以被独立执行的一个过程,这个过程是一个最小的测试实体,不能再被分解。测试用例也就是为了某个测试点而设计的测试操作过程序列、条件、期望结果及其相关数据的一个特定的集合。

    2.测试用例的元素:

    3.如何设计出高质量的测试用例

    • 客户需求导向的设计思路
    • 责任到人
    • 灵活的设计方法
    • 测试用例设计不能局限于输入数据 尽量避免含糊的、冗长的或复杂的测试用例
    • 尽量将具有相类似功能的测试用例抽象并归类

    4.良好测试用例的特征

    • 可以最大程度地找出软件隐藏的缺陷
    • 可以最高效率的找出软件缺陷
    • 可以最大程度地满足测试覆盖要求
    • 既不过分复杂、也不能过分简单 使软件缺陷的表现可以清楚的判定
    • 测试用例包含期望的正确的结果
    • 待查的输出结果或文件必须尽量简单明了
    • 不包含重复的测试用例
    • 测试用例内容清晰、格式一致、分类组织

    5.测试用例设计步骤

    6.测试用例的创建

    建立合适的、可扩展的测试用例框架,从而借助这个框架能有效地组织众多的测试用例,包括对测试用例的分类、清晰的层次结构等。

    7.测试用例套件

    测试套件是由一系列测试用例并与之关联的测试环境组合而构成的集合,已满足测试执行的特定要求。通过测试套件,将服务于同一个测试目标、特定阶段性测试目标或某一运行环境下的一系列测试用例有机地组合起来

    .

    四.单元测试

    1.单元测试方法:

    单元测试主要采用白盒测试方法,辅以黑盒测试方法。白盒测试方法应用于代码评审、单元程序检验之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中。

    2.黑白盒测试方法:

    黑盒测试方法(Blake-box Testing),是把程序看作一个不能打开的黑盒子,不考虑程序内部结构和内部特性,而是考察数据的输入、条件限制和数据输出,完成测试。

    白盒测试方法(White-box Testing),也称结构测试或逻辑驱动测试。白盒测试方法是根据模块内部结构了解,基于内部逻辑结构,针对程序语句、路径、变量状态等来进行测试,检验程序中的各个分支条件是否得到满足、每条执行路径是否按预定要求正确的工作。

    驱动程序(driver),对底层或子层模块进行(单元或集成)测试时所编制的调用被测模块的程序,用以模拟被测模块的上级模块

    桩程序(stub),也有人称为存根程序,对顶层或上层模块进行测试时,所编制的替代下层模块的程序,用以模拟被测模块工作过程中所调用的模块。 

     

    3.白盒测试方法的用例设计

    语句覆盖,使得程序中每一条可执行语句至少被执行一次

    分支覆盖,使得程序中每一个分支都至少被执行一次

                

    节点①

    N < 0 : 如N= -1, -2, …, -10, …

    N >= 0:  如N=1,2, …, 10, …

    节点③

    (K<N) and (R<=Max) 成立 (True)

    (K<N) and (R<=Max) 不成立 (False)

    节点⑤

    R<= Max 

    R> Max

    N= -2,Max = 10: 覆盖①②③④③④③⑥

    N= 5,Max = 1: 覆盖①②③④③④③⑦

    分支覆盖VS语句覆盖

    条件覆盖,程序中每一个条件至少有一次被满足

    条件覆盖 vs. 分支覆盖

    条件覆盖不能保证分支覆盖,例如设计两个测试用例N= 1、Max = -1和N= 0、Max = 1

        (K<N) and (R<=Max)=.T. 的分支没有被覆盖

    设计两个测试用例N= 3、Max = 10和N= -1、Max = 0,即覆盖了所有条件,也覆盖了所有分支  

    路径覆盖,对程序模块的所有独立的基本路径至少要测试一次

    路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证被测试程序的每个可执行语句至少被执行一次。

    示例:

    确定基本路径获得测试用例: 

    环路复杂性: 

    图形矩阵: 

    4.代码审查

    代码审查的目的就是为了产生合格的代码,检查源程序编码是否符合详细设计的编码规定,确保编码与设计的一致性和可追踪性 

    代码规范性的审查

    • 代码规范性的审查将助于更早地发现缺陷,代码质量的提高,而且可以帮助程序员遵守规则、养成好的习惯,以达到预防缺陷的目的
    • 代码风格和编程规则两者不可缺一,都应列入代码评审的范围里
    • 命名规则 、缩进与对齐 、注释 和函数处理 等。

    5.集成测试

    非渐增式测试模式

    采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试 。

    因为所有的模块一次集成的,所以很难确定出错的真正位置、所在的模块、错误的原因。这种方法并不推荐在任何系统中使用,适合在规模较小的应用系统中使用。 

    非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。

    渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进

    驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。

    桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口来测试。

    自顶向下法(Top-down Integration)  

    自底向上法(Bottom-up Integration) 

    微软VSTS的单元测试 

    Visual Studio Team System(VSTS)是一套工具集,全面整合了软件设计、开发、测试、部署和人员协作工具,其开发版(Development Edition)提供了静态分析、代码剖析、代码涵盖以及其它单元测试所需的功能特性。

    •  创建单元测试项目。
    •  设置项目引用。  
    • 添加适当的测试类(一个或多个)。
    •  生成主干的单元测试框架(Unit Test Framework)类和属性。
    •  创建单个测试方法。
    •  创建适合特定接口的逻辑

    五.自动化测试

     自动化测试(automated test)是相对手工测试(manual test)而存在的一个概念,由手工逐个地运行测试用例的操作过程被测试工具自动执行的过程所代替。 测试工具的使用是自动化测试的主要特征

    六.功能测试

    1.功能测试,依据产品设计规格说明书完成对产品功能进行操作,以验证系统是否满足用户的功能性需求

    2.等价类法

    等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的

    将程序可能的输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例

     在分析需求规格说明的基础上划分等价类,列出等价类表

    3.有效等价类是有意义的、合理的输入数据,可以检查程序是否实现了规格说明中所规定的功能和性能

    无效等价类和有效等价类相反,即不满足程序输入要求或者无效的输入数据构成的集合 

    (设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。经过正反的测试才能确保软件具有更高的可靠性。)

    4.确定等价类的方法

    在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

    (2)边界值计方法

    程序的很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以更有效地发现缺陷。

    设计方法: 确定边界情况(输入或输出等价类的边界) 选取正好等于、刚刚大于或刚刚小于边界值作为测试数据

    (3)因果图法

    在实际应用的测试之中,经常碰到多种条件及其组合的情况 通过因果图,可以建立输入条件和输出之间的逻辑模型,从而比较容易确定输入条件组合和输出之间的逻辑关系,有利于设计全面的测试用例

    输入与输出关系:

    E约束(异):多个条件中至少有一个条件不成立,即Ci不能同时为1。

    I约束(或):多个条件中至少有一个条件成立,即Ci不能同时为0。

    O约束(唯一);多个条件中必须有一个且仅有一个条件成立,即Ci中只有一个为1

    R约束(要求):一个条件对另一个条件有约束,如C1是1,C2也必须须是1。

    设计步骤:

    分析软件规格说明书中的输入输出条件并划分出等价类,将每个输入输出赋予一个标志符

    分析规格说明中的语义,通过这些语义来找出多个输入因素之间的关系。

    找出输入因素与输出结果之间的关系,将对应的输入与输出之间的关系关联起来,并将其中不可能的组合情况标注成约束或者限制条件,形成因果图。

    由因果图转化成决策表,任何由输入与输出之间关系构成的路径,形成决策表的一列 将决策表的每一列拿

    实例(1)

    根据因果图,就可以转化为判定表。这里根据条C2 与C3、C4与C5的E约束(互斥),可以减少组合

    决策表方法:

    一个决策表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合。所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。

    条件桩,列出问题的所有条件

    动作桩:列出可能针对问题所采取的操作

    条件项:针对所列条件的具体赋值(可取真值和假值)

    动作项:列出在条件项组合情况下应该采取的动作

    规则:任何一个条件组合的特定取值及其相应要执行的操作

    功能图法:

    每个程序的功能通常由静态说明和动态说明组成,静态说明描述了输入条件和输出条件之间的对应关系,而动态说明描述了输入数据的次序或者转移的次序。

    功能图法就是为了解决动态说明问题的一种测试用例的设计方法

    功能图由状态迁移图(state transition diagram,STD)和逻辑功能模型(logic function model, LFM)构成

    状态迁移图,描述系统状态变化的动态信息——动态说明,由状态和迁移来描述,状态指出数据输入的位置(或时间),而迁移则指明状态的改变

    如何设计测试用例?

    功能图法设计测试用例,就是如何覆盖软件所表现出来的所有状态,可以转化为两个层次的测试用例

     从功能逻辑模型(决策表或因果图)导出局部测试用例,即设计测试用例覆盖某个状态的各种输入数据的组合

    从状态迁移图导出整体的测试用例,以覆盖系统(程序)控制的逻辑路径

    功能图法是综合运用黑盒方法和白盒方法来设计测试用例,即整体上选用白盒方法——路径覆盖、分支和条件覆盖等,而局部上选用的是黑盒方法——决策表或因果图方法

    七.系统测试

    1.用户的需求可以分为功能性需求和非功能性需求,而非功能性的需求被归纳为软件产品的各种质量特性,如安全性、兼容性和可靠性等 系统测试就是针对这些非功能特性展开的,就是验证软件产品符合这些质量特性的要求,从而满足用户和软件企业自身的非功能性需求。所以,系统测试分为负载测试、性能系统、容量测试、安全性测试、兼容性测试和可靠性测试等  

    2.负载测试过程

    • 确定所要模拟的角色及其对应的关键业务操作路径。
    • 确定输入/输出参数,制定负载测试方案。
    • 准备测试环境,并完成相应的测试脚本的开发。
    • 设计具体的测试场景,如负载水平、加载方式等。
    • 执行测试,监控输出参数,如数据吞吐量、响应时间、资源占有率等。
    • 对测试结果进行分析。
    • 结果不满意,需要调整测试场景,进入下一个循环。

    输入参数:

    负载测试是通过模拟用户的操作方式来考察系统的行为,所以人们肯定会问:如何模拟用户的行为?

    • 并发用户数、并发连接数等。
    • 思考时间(think time),用户发出请求之间的间隔时间 加载的循环次数或持续时间 每次请求发送的数据量。
    • 加载的方式或模式,如均匀加载、峰值交替加载等

    输出参数:

    • 数据传输的吞吐量(Transactions)
    • 数据处理效率(Transactions per second)
    • 数据请求的响应时间(Response time)
    • 内存和CPU使用率 连接时间(Connect Time)、发送时间(Sent Time)
    • 处理时间(Process Time)、页面下载时间
    • 第一次缓冲时间
    • 每秒(SSL)连接数
    • 每秒事务总数、每秒下载页面数
    • 每秒点击次数、每秒HTTP 响应数
    • 每秒重试次数

    3.一些常见的性能问题

    • 资源泄漏,包括内存泄漏
    • 资源瓶颈,内部资源(线程、放入池的对象)变得稀缺
    • CPU使用率达到100%、系统被锁定等
    • 线程死锁、线程阻塞等
    • 数据库连接成为性能瓶颈
    • 查询速度慢或列表效率低
    • 受外部系统影响越来越大

    4.压力测试:

    压力测试是在系统(如CPU、内存和网络带宽等)处于饱和状态下,测试系统是否还具有正常的会话能力、数据处理能力或是否会出现错误,以检查软件系统对异常情况的抵抗能力,找出性能瓶颈、功能不稳定性等问题

    5.兼容性测试

    是在特定的或不同的硬件、网络环境和操作系统平台上、不同的应用软件之间,验证软件系统能否正常地运行,以及能否正确存取原先版本的用户数据所进行的测试

    • 与硬件兼容
    •  与操作系统、平台的兼容
    •  与数据库系统的兼容  
    • 与浏览器的兼容
    •  与第三方系统的兼容
    •  与内部业务系统的兼容
    •  与自身系统的不同版本的用户数据兼容等

    向后兼容是指新发布的软件版本可以使用该软件的以前版本所产生的数据。

    向前兼容是指在设计和开发软件一个新版本时,考虑如何和未来版本的数据兼容。

    八.总结

           软件测试定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

      软件测试过程:通常按照测试阶段分为单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试。

      单元测试,又称模块测试,是针对软件设计的最小单位 ─ 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。

      1. 单元测试的内容

      (1) 模块接口测试

      * 在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:

      – 调用本模块的输入参数是否正确;

      – 本模块调用子模块时输入给子模块的参数是否正确;

      – 全局量的定义在各模块中是否一致

      * 在做内外存交换时要考虑:

      – 文件属性是否正确;

      – OPEN与CLOSE语句是否正确;

      – 缓冲区容量与记录长度是否匹配;

      – 在进行读写操作之前是否打开了文件;

      – 在结束文件处理时是否关闭了文件;

      – 正文书写/输入错误,

      – I/O错误是否检查并做了处理。

      (2) 局部数据结构测试

      * 不正确或不一致的数据类型说明

      * 使用尚未赋值或尚未初始化的变量

      * 错误的初始值或错误的缺省值

      * 变量名拼写错或书写错

      * 不一致的数据类型

      * 全局数据对模块的影响

      (3) 路径测试

      * 选择适当的测试用例,对模块中重要的执行路径进行测试。

      * 应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。

      * 对基本执行路径和循环进行测试可以发现大量的路径错误。

      (4) 错误处理测试

      * 出错的描述是否难以理解

      * 出错的描述是否能够对错误定位

      * 显示的错误与实际的错误是否相符

      * 对错误条件的处理正确与否

      * 在对错误进行处理之前,错误条件是否已经引起系统的干预等

      (5) 边界测试

      * 注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。

      * 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。

      2. 单元测试的步骤

      * 模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。

      – 驱动模块 (driver)

      – 桩模块 (stub) ── 存根模块

      * 如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试

      * 对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。

      集成测试,也叫组装测试、联合测试

      1. 一次性集成方式(big bang)

      * 它是一种非增殖式组装方式。也叫做整体拼装。

      * 使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。

      2. 增殖式集成方式

      * 这种集成方式又称渐增式集成

      * 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统

      * 在集成的过程中边连接边测试,以发现连接过程中产生的问题

      * 通过增殖逐步组装成为要求的软件系统。

      (1) 自顶向下的增殖方式

      * 这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。

      * 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。

      * 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。

      (2) 自底向上的增殖方式

      * 这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。

      * 因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。

      * 自顶向下增殖的方式和自底向上增殖的方式各有优缺点。

      * 一般来讲,一种方式的优点是另一种方式的缺点。

      (3) 混合增殖式测试

      * 衍变的自顶向下的增殖测试

      – 首先对输入/输出模块和引入新算法模块进行测试;

      – 再自底向上组装成为功能相当完整且相对独立的子系统;

      – 然后由主模块开始自顶向下进行增殖测试。

      * 自底向上-自顶向下的增殖测试

      – 首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;

      – 然后对含写操作的子系统做自顶向下的组装与测试。

      确认测试,又成有效性测试。

      1. 进行有效性测试(黑盒测试

      * 有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。

      * 首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。

      * 通过实施预定的测试计划和测试步骤,确定

      – 软件的特性是否与需求相符;

      – 所有的文档都是正确且便于使用;

      – 同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试

      * 在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:

      – 测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。

      – 测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。

      2. 软件配置复查

      软件配置复查的目的是保证软件配置的所有成分都齐全;

      各方面的质量都符合要求;

      具有维护阶段所必需的细节;

      而且已经编排好分类的目录。

      应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。

      系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。

      验收测试,以用户为主的测试

      应交付的文档有:

      – 确认测试分析报告

      – 最终的用户手册和操作手册

      – 项目开发总结报告。

      软件测试方法:是指测试软件的方法。如,兼容性测试、UI测试、冒烟测试、随机测试、本地化能力测试、国际化测试、安装测试、卸载测试、白盒测试、黑盒测试、自动化测试、端到端、性能测试、负载测试、压力测试、强迫测试、健全测试、衰竭测试、恢复测试、安全测试、接口测试。

      兼容性测试,指测试软件是否可以被成功移植到指定的硬件或软件平台上。

      1,浏览器兼容测试

      2,分辨率兼容测试

      硬件兼容:与整机兼容、与外设兼容

      软件兼容:操作系统/平台、应用软件之间的兼容、不同浏览器的兼容、数据库的兼容、软硬件配合兼容

      数据兼容:不同版本间的数据兼容、不同软件间的数据兼容

      UI测试,是指软件中的可见外观及其底层与用户交互的部分。

      用户界面的风格是否满足客户要求

      文字是否正确

      页面是否美观

      文字,图片组合是否完美

      操作是否友好

      包括菜单,对话框及对话框上所有按钮,文字,出错提示,帮助信息 (Menu 和Help content)等方面的测试。

      冒烟测试的对象是新编译的每一个需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

      随机测试,没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行用例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试一起进行。

      本地化能力测试,指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。

      典型错误包括:字符的硬编码(即软件中需要本地化的字符写在了代码内部),对需要本地化的字符长度设置了固定值,在软件运行时以控件位置定位,图标和位图中包含了需要本地化的文本,软件的用户界面与文档术语不一致等。

      国际化测试,指验证软件程序在不同国家或区域的平台上也能够如预期的那样运行,而且还可以按照原设计尊重和支持使用当地常用的日期,字体,文字表示,特殊格式等等。国际化测试数据必须包含东亚语言、德语、复杂脚本字符和英语(可选)的混合字符。

      安装测试,是确保软件在正常情况和异常情况下,例如,进行首次安装、升级、完整的或自定义的安装都能进行安装的测试。异常情况包括磁盘空间不足、缺少目录创建权限等场景。核实软件在安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。

      卸载测试,是对软件的全部、部分或升级卸载处理过程的测试。主要是测试软件能否卸载,卸载是否干净,对系统有无更改,在系统中的残留与后来的生成文件如何处理等。还有原来更改的系统值是否修改回去。

      白盒测试,是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

      常用工具有:Jtest、VcSmith、Jcontract、C++ Test、CodeWizard、logiscope。

      黑盒测试,根据软件的规格对软件进行的测试,以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。

      常用工具有:Autorunner、winrunner

      自动化测试,使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试和功能测试中用得较多。通过录制测试脚本,然后执行这个测试脚本来实现测试过程的自动化。

      常用工具有QTP、Testcomplete、Autorunner和TAR等。

      端到端,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。端到端架构测试包含所有访问点的功能测试及性能测试。端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试和黑盒测试的优点的测试方法。

      性能测试,是在交替进行负荷和强迫测试时常用的术语。理想的“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。性能测试一般包括负载测试和压力测试。通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会不会出现内存泄露(memory leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢。

      负载测试,测试一个应用在重负荷下的表现。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

      压力测试,压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

      强迫测试,是在交替进行负荷和性能测试时常用的术语。也用于描述对象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。

      健全测试,是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试能力。例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,不具备进一步测试的条件。

      衰竭测试,是指软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。

      恢复测试,是测试一个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏或其他灾难性问题。恢复测试指通过人为的让软件(或者硬件)出现故障来检测系统是否能正确的恢复,通常关注恢复所需的时间以及恢复的程度。恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。

      安全测试,是测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。这可能需要复杂的测试技术。安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如:

      ①想方设法截取或破译口令;

      ②专门定做软件破坏系统的保护机制;

      ③故意导致系统失败,企图趁恢复之机非法进入;

      ④试图通过浏览非保密数据,推导所需信息,等等。

      接口测试,测试系统组件间接口的一种测试。要进行接口,需要完善的文档进行保障,没有测试文档,接口测试将寸步难行,接口测试将增加开发过程规范化产出,而规范化产出也保证了项目质量

     

    展开全文
  • 软件测试2小时入门

    万人学习 2018-10-10 16:14:16
    本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、...
  • 2021年软件测试面试题大全

    万次阅读 多人点赞 2020-11-30 15:16:59
    简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审...

    目录

     

    一、面试基础题

    简述测试流程:

    什么是软件测试?软件测试的目的与原则

    问:软件生存周期及其模型是什么?

    什么是软件质量?

    自动化测试脚本开发的主要步骤:

    目前主要的测试用例设计方法是什么?

    常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用

    测试的策略有哪些?

    单元测试的策略有哪些?

    正交表测试用例设计方法的特点是什么?

    软件的安全性应从哪几个方面去测试?

    需求测试的注意事项有哪些?

    问:你在测试中发现了一个  bug ,但是开发经理认为这不是一个  bug ,你应该怎样解决。

    问:给你一个网站,你如何测试?

    问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别? ?

    软件的安全性应从哪几个方面 去测试?

    软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么? ? 他们的编号和全称是什么? ?

    测试人员在软件开发过程中的任务是什么?

    在您以往的工作中,一条软件缺陷(或者叫 Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

    黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!

    什么是系统瓶颈?

    手机APP测试

    什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?

    详细的描述一个测试活动完整的过程。

    在您以往的工作中,一条软件缺陷(或者叫  Bug )记录都包含了哪些内容?如何提交高质量的软件缺陷( Bug )记录?

     您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员 良好的人际关系的关键是什么?

    软件测试项目从什么时候开始?为什么?

    测试结束的标准是什么?

    您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

    请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数量

    什么是兼容型测试?兼容性测试侧重哪些方面?

    软件测试项目从什么时候开始,?为什么?

     

    二、测试实战面试题

    我现在有个程序,发现在Windows上运行的很慢,怎么判别是程序存在问题还是软硬件系统存在问题

    一个程序有n个变量采用边界值分析可以产生几个测试用例

    请设计一个关于ATM自动取款机的测试用例。

    如何测试一个 纸杯?

    我手上这支笔,请你根据这支笔设计测试用例

    测试手机开机键 

    如何回答登录功能怎么进行测试?

    如何回答京东购物车功能怎么进行测试?

    支付流程测试

    对于有系统大量并发访问,你会如何做测试,有什么建议

    请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示

    请你说一说PC网络故障,以及如何排除障碍

    微信红包

    微信发朋友圈点赞

    如何对淘宝搜索框进行测试

    就linux下的CP命令设计测试用例。

    请问如果用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个问题

    现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

     

    三、基础知识点

    什么是桩模块?什么是驱动模块?

    什么是扇入?什么是扇出?

    8020原则:在需求分析开始到集成测试阶段引入测试手段,能发现所有缺陷的80%,系统测试阶段发现16%,在运行维护阶段经过长时间大量运行软件后,能够发现4%。起源于经济学。

    什么是耦合?什么是内聚?

    缺陷严重程度:

    缺陷优先级:

    缺陷状态:

    简单的软件缺陷生命周期:

    复杂的软件缺陷生命周期:

    什么是在线用户数?什么是并发用户数?

    分布式软件架构分为:

    测试人员的能力:

    简述负载测试与压力测试的区别。

    软件缺陷管理工具有哪些

    弱网测试

     

    四、智力题


    一、面试基础题

    简述测试流程:

    • 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。
    • 2、参加需求评审会议。
    • 3、根据最终确定的需求文档编写测试计划。
    • 4、编写测试用例(等价类划分法、边界值分析法等)。
    • 5、用例评审(主要参与人员:开发、测试、产品、测试leader)。
    • 6、开发提交代码至SVN或者GIT ,配管搭建测试环境。
    • 7、执行测试用例,记录发现的问题。
    • 8、验证bug与回归测试。
    • 9、编写测试报告。
    • 10、产品上线。

    补充测试用例设计过程:
    
    根据需求得出测试需求
    
    设计测试方案,评审测试方案
    
    方案评审通过后,设计测试用例,再对测试用例进行评审

     

    什么是软件测试?软件测试的目的与原则

    使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

    软件测试的目的:

    • 测试是程序的执行过程,目的在于发现错误。
    • 一个成功的测试用例在于发现至今未发现的错误。
    • 一个成功的测试是发现了至今未发现的错误的测试。
    • 确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。
    • 确保产品满足性能和效率的要求。
    • 确保产品是健壮的和适应用户环境的。

     

    问:软件生存周期及其模型是什么?

    软件生存周期是软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为"生命周期模型"(Life Cycle Model)。

     

    什么是软件质量?

    软件质量:软件产品的特性可以满足用户的功能、性能需求的能力。

     

    自动化测试脚本开发的主要步骤:

    1、通过某些方式定位到我们要执行的对象、目标( Target)

    2、对这个对象进行什么操作(command)

    3、通过操作对定位到的元素赋值(value)

    4、添加断言操作

     

    目前主要的测试用例设计方法是什么?

    白盒测试:

    • 逻辑覆盖
    • 循环覆盖
    • 基本路径覆盖

    黑盒测试:

    • 边界值分析法
    • 等价类划分
    • 错误猜测法
    • 因果图法
    • 状态图法
    • 测试大纲法
    • 随机测试场景法

     

    常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用

    1)等价类划分划分

    等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。

     

    2)边界值分析法

    边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设(面试题目:什么样的工作环境适合你&#from一个常见的软件测试面试题来自end#lt;结束)计测试用例,可以查出更多的错误。

     

    使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

     

    3)错误推测法

    基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。

    错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如,在单元测试时曾列出的许多在模块中常见的错误。以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行。这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。

     

    4)因果图方法

    前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(逻辑模型)。因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。

     

    5)正交表分析法

    有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。

     

    6)场景分析方法

    指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。

     

    测试的策略有哪些?

    黑盒/白盒/灰盒,静态/动态,手工/自动,冒烟测试,回归测试,公测(Beta测试的策略)

    补充:公测是什么?还有没有其他的测试策略?测试策略和测试方法以及测试类型有什么区别?

    按测试 策略分类:
      1、静态与动态测试
      2、黑盒与白盒测试
      3、手工和自动测试
      4、冒烟测试
      5、回归测试;
      按测试阶段分类:单元测试、集成测试、系统测试;
      其他常见测试方法:1、功能测试 2、性能测试 3、压力测试 4、负载测试 5、易用性测试 6、安装测试 7、界面测试 8、配置测试 9、文档测试 10、兼容性测试 11、安全性测12、恢复测试

    α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。

    β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或测试员完成。

    回归测试(对软件的新版本测试时,重复执行上一个版本测试时的用例,是为了验证缺陷是否真正修复,确认修复后是否影响其它功能);

    冒烟测试:对新版本测试之前,先验证下软件的基本功能是否实现,是否具备可测性。

     

    单元测试的策略有哪些?

    逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析

     

    正交表测试用例设计方法的特点是什么?

    答:用最少的实验覆盖最多的操作,测试用例设计很少,效率高,但是很复杂;对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的;具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法。

    补充:什么时候用系统测试,测试的每个阶段是什么,比如单元、集成、系统、公测,每个阶段需要什么技术,有什么要求

     

    软件的安全性应从哪几个方面去测试?

    • (1) 用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议
    • (2) 加密机制
    • (3) 安全防护策略:如安全日志、入侵检测、隔离防护、漏洞扫描
    • (4) 数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理
    • (5) 防病毒系统

    软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。

    用户认证安全的测试要考虑问题:

      • 明确区分系统中不同用户权限
      • 系统中会不会出现用户冲突
      • 系统会不会因用户的权限的改变造成混乱
      • 用户登陆密码是否是可见、可复制
      • 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
      • 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
      • 系统网络安全的测试要考虑问题
      • 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
      • 模拟非授权攻击,看防护系统是否坚固
      • 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,
      • 现在最常用的是 NBSI 系列和 IPhacker IP )
      • 采用各种木马检查工具检查系统木马情况
      • 采用各种防外挂工具检查系统各组程序的外挂漏洞

    数据库安全考虑问题:

      • 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
      • 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这
      • 个系统的功能实现有了障碍)
      • 系统数据可管理性
      • 系统数据的独立性
      • 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)

     

    α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环

    境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。

    β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在

    测试现场,Beta 测试不能由程序员或测试员完成。

    需求测试的注意事项有哪些?

    •        是否使用了公司的模板
    •   文档内容是否符合规范
    •   所有的需求是分级是否清析适当?
    •   所有的需求是否具有一致性
    •   需求是否可行(即,该需求组合有解决方案)
    •   需求可否用己知的约束来实现
    •   需求是否足够(即,可以把它送到一个规范的开发组织,并有一个生产出所需要产品的合理的可能性)
    •   所有的其它需求是交叉引用是否正确
    •   用户描述是否清楚
    •   是否用客户的语言来描述需求
    •   每个需求描述是否清楚没有岐义,可以移交给一个独立的组去实现时也能理解
    •   是否所有的需求都是可验证的
    •   是否每条需求都具有独立性,即使发生了变化也不会影响其它需求
    •   性能指标是否明确
    •   非功能性需求是否得到充分表现
    •   是否完整列出适用的标准或协议
    •   标准和协议之间是否存在冲突

    问:你在测试中发现了一个  bug ,但是开发经理认为这不是一个  bug ,你应该怎样解决。

    1. 将问题提交到缺陷管理库里面进行备案。
    2. 要获取判断的依据和标准:     根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;     如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;   根据用户的一般使用习惯,来确认是否是缺陷;
    3. 与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
    4. 合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。
    5. 等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。

     

     

    问:给你一个网站,你如何测试?

    1、查找需求说明、网站设计 m 等相关文档,分析测试需求。

    2、制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:

         功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试

    3、设计测试用例:

         功能性测试可以包括,但不限于以下几个方面:

         链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。提交功能的测试。

         多媒体元素是否可以正确加载和显示。多语言支持是否能够正确显示选择的语言等。

         界面测试可以包括但不限于一下几个方面:

    • 页面是否风格统一,美观
    • 文字检查
    • 对于必须但为安装的空间,是否提供自动下载并安装的功能
    • 控件是否正常使用
    • 页面布局是否合理,重点内容和热点内容是否突出                                                       

     

    问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别? ?

    300 个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。300 个用户在一个客户端上,需要更大的带宽。IP 地址的问题,可能需要使用 IP Spoof 来绕过服务器对于单一 IP 地址最大连接数的限制。所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。

    你工作中遇到最具价值的bug,就是重大bug咯,例如app性能测试测哪些,那你就看一看性能测试的视频咯

     

    软件的安全性应从哪几个方面 去测试?

    软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。

    用户认证安全的测试要考虑问题:

    • 明确区分系统中不同用户权限
    • 系统中会不会出现用户冲突
    • 系统会不会因用户的权限的改变造成混乱
    • 用户登陆密码是否是可见、可复制
    • 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
    • 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
    • 系统网络安全的测试要考虑问题
    • 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
    • 模拟非授权攻击,看防护系统是否坚固
    • 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,
    • 现在最常用的是 NBSI 系列和 IPhacker IP )
    • 采用各种木马检查工具检查系统木马情况
    • 采用各种防外挂工具检查系统各组程序的外挂漏洞

    数据库安全考虑问题:

    • 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
    • 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
    • 系统数据可管理性
    • 系统数据的独立性
    • 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)

     

     

    软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么? ? 他们的编号和全称是什么? ?

    SQA 由一套软件工程过程和方法组成,以保证(软件的)质量。SQA 贯穿整个软件开发过程,(它)应包括需求文档评审、代码控制、代码评审、变更管理、配置管理、版本管理和软件测试。

     

    测试人员在软件开发过程中的任务是什么?

    1、寻找 Bug;

    2、避免软件开发过程中的缺陷;

    3、衡量软件的品质;

    4、关注用户的需求。

    总的目标是:确保软件的质量。

     

    在您以往的工作中,一条软件缺陷(或者叫 Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

    一条 Bug 记录最基本应包含:编号、Bug 所属模块、Bug 描述、Bug 级别、发现日期、发现人、修改日期、修改人、修改方法、回归结果等等;

    要有效的发现 Bug 需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认

    肯定,然后再向外发布如此才能提高提交 Bug 的质量。

     

     

    黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!

    黑盒测试的优点有:

           比较简单,不需要了解程序内部的代码及实现;与软件的内部实现无关;从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;在做软件自动化测试时较为方便。

    黑盒测试的缺点有:

           不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的 30%;自动化测试的复用性较低。

    白盒测试的优点有:

         帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

    白盒测试的缺点有:

           程序运行会有很多不同的路径,不可能测试所有的运行路径;测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;系统庞大时,测试开销会非常大。

     

     

    什么是系统瓶颈?

    参考答案:

    瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。

    严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。

    因此我们测试系统瓶颈主要是实现下面两个目的:

    -发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。

    -发现潜在的瓶颈并解决,保证系统的长期稳定性。主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。

     

    手机APP测试

    :主要包括功能、性能测试、稳定性、兼容性、用户测试。

     

    性能测试:CPU占用/内存占用 /耗电测试 /流量消耗测试 /安装包大小 /加载时间测试 /核心功能相应时间 (①启动时间检测:检测App在终端上首次启动时间。 ②内存、CPU耗用检测:检测App在终端上运行时不同时段占用内存、CPU情况。 ③流量耗用检测:检测App在终端上运行时的网络流量消耗情况。 ④电池温度检测:检测App在终端上运行时,对终端的电池温度等性能指标的影响情况 )

     

    兼容性测试:屏幕分辨率 /网络状态,状态切换 /android版本 /安装卸载升级等 /权限设置 /与其他APP兼容性 (①安装卸载测试:测试App在指定终端上是否可正常安装、正常卸载,准确定位错误原因。 ②遍历测试:自动识别App可执行的功能,在一定时间内遍历App的不同功能界面,通过截图记录操作路径 并输出日志、定位异常现象。 ③运行稳定性测试:类似Monkey的随机性压力测试,测试App运行期的稳定性。 ④UI适配测试:测试App的UI与目标终端的屏幕是否适配,记录是否存在渲染失败、错位、黑边框、黑白屏等现象。)

     

    稳定性测试包括:服务器异常时稳定性 /外部事件影响(电话,短信等) /内存是否有溢出或者泄漏 /多线程问题 。

     

     

     

    什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?

    参考答案:

    在同一时间点,支持多个不同的操作。

    LoadRunner中提供IP伪装,集合点,配合虚拟用户的设计,以及在多台电脑上设置,可以比较好的模拟真实的并发。

    集合点,即是多个用户在某个时刻,某个特定的环境下同时进行虚拟用户的操作的。集合点失败,则集合点的才操作就会取消,测试就不能进行。

     

     

    详细的描述一个测试活动完整的过程。

    答案:(供参考,本答案主要是瀑布模型的做法)

           项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后 SQA 进入项目,开始进行统计和跟踪开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。测试用例完成后,测试和开发需要进行评审。测试人员搭建环境开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现 BUG后提交给 BugZilla。开发提交第二个版本,包括 Bug Fix 以及增加了部分功能,测试人员进行测试。重复上面的工作,一般是 3-4 个版本后 BUG 数量减少,达到出货的要求。如果有客户反馈的问题,需要测试人员协助重现并重新测试。

     

    在您以往的工作中,一条软件缺陷(或者叫  Bug )记录都包含了哪些内容?如何提交高质量的软件缺陷( Bug )记录?

    在传统的 BugZilla 中,BUG 描述应该包括以下的信息和 BUG 产生对应的软件版本和模块开发的接口人员BUG 的优先级BUG 的严重程度BUG 可能属于的模块,如果不能确认,可以用开发人员来判断BUG 标题,需要清晰的描述现象BUG 描述,需要尽量给出重新 Bug 的步骤BUG 附件中能给出相关的日志和截图。高质量的 BUG 记录就是指很容易理解的 BUG 记录,所以,对于描述的要求高,能提供的信息多且准确,很好的帮助开发人员定位,因此提交高质量的软件缺陷记录需要注意对 BUG 记录的描述质量多且准确。

     

     您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员 良好的人际关系的关键是什么?

           尽量面对面的沟通,其次是能直接通过电话沟通,如果只能通过 Email 等非及时沟通工具的话,强调必须对特性的理解深刻以及能表达清楚。运用一些测试管理工具如 TestDirector 进行管理也是较有效的方法,同时要注意在TestDirector 中对 BUG 有准确的描述。在团队中建立测试人员与开发人员良好沟通中注意以下几点:一真诚二是团队精神三是在专业上有共同语言四是要对事不对人,工作至上当然也可以通过直接指出一些小问题,而不是进入 BUG Tracking System 来增加对方的好感。

     

    软件测试项目从什么时候开始?为什么?

          软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺陷发现的越晚,修复它所花费的成本就越大.

     

    测试结束的标准是什么?

           从微观上来说,在测试计划中定义,比如系统在一定性能下平稳运行 72 小时,目前 BugTracking System 中,本版本中没有一般严重的 BUG,普通 BUG 的数量在 3 以下,BUG 修复率 90%以上等等参数,然后由开发经理,测试经理,项目经理共同签字认同版本 Release。如果说宏观的,则是当这个软件彻底的消失以后,测试就结束了。

     

    您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

    开发过程---需求调研(需求人员)、需求分析(需求人员)、概要设计(设计人员)、详细设计(设计人员)、编码(开发人员)测试过程---需求评审、系统测试设计、概要设计评审、集成测试设计、详细设计评审、单元测试设计、测试执行测试工作的整个过程都做过,擅长做测试设计过程决定质量,软件的过程改进正是为了提高软件的质量,将过往的种种经验和教训积累起来。

    补充

    1.明确测试的目标,增强测试计划的实用性编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确

    2.坚持“5W”规则,明确内容与过程

    “5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。

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

    测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。分别创建测试计划与测试详细规格、测试用例,应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。

     

    请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数量

    参考回答:

    性能测试常用指标:

    从外部看,主要有

    1、吞吐量:每秒钟系统能够处理的请求数,任务数

    2、响应时间:服务处理一个请求或一个任务的耗时

    3、错误率:一批请求中结果出错的请求所占比例

    从服务器的角度看,性能测试关注CPU,内存,服务器负载,网络,磁盘IO

    对登录功能做性能测试

    单用户登陆的响应界面是否符合预期

    单用户登陆时后台请求数量是否过多

    高并发场景下用户登录的响应界面是否符合预期

    高并发场景下服务端的监控指标是否符合预期

    高集合点并发场景下是否存在资源死锁和不合理的资源等待

    长时间大量用户连续登录和登出,服务器端是否存在内存泄漏

    怎么测出可同时处理的最大请求数量

    可以采用性能测试工具(WeTest服务器性能),该工具是腾讯wetest团队出品,使用起来很简单方便,但测试功能相当强大,能提供10w+以上的并发量,定位性能拐点,测出服务器模型最大并发

     

    什么是兼容型测试?兼容性测试侧重哪些方面?

    兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了

    兼容和配置测试的区别在于,做配置测试通常不是在Clean OS下做测试,而兼容测试多是在Clean OS环境下做的。

    补充:做兼容测试的具体步骤:在列好的软硬件环境清单做冒烟测试,还是每一步都测试。测出不兼容,怎么和开发沟通,开发面对这些不兼容需要做什么。如果修复成本很高,怎么和产品经理沟通。和谁确认表单

     

     

    软件测试项目从什么时候开始,?为什么?

    软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发

    过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺陷发现的越晚,修复它所花费

    的成本就越大.

     

     

    二、测试实战面试题

     

    我现在有个程序,发现在Windows上运行的很慢,怎么判别是程序存在问题还是软硬件系统存在问题

    1、检查系统是否有中毒的特征

    2、检查软件/硬件的配置是否符合软件的推荐标准

    3、确认当前的系统是否独立,即没有对外提供什么消耗CPU资源的服务

    4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成

    5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况

    补充:每一步该怎么实现,需要用到什么技术

     

    一个程序有n个变量采用边界值分析可以产生几个测试用例

    4n+1

     

    请设计一个关于ATM自动取款机的测试用例。

    1)功能

    a)ATM所识别卡的类型;

    b)密码验证(身份登陆、是否为掩码、输入错误密码时是否提示,连续三次错误吞卡等);

    c)取款功能:

    i、金额多少的限制,单次最大最小提取金额、每天最大提取金额等);

    Ii、取款币种的不同,如人民币、美元、欧元等。

    d)是否提示客户操作完成后,打印相关操作信息;

    e)查询功能是否正常;

    f)转账功能是否正常;

    g)是否提示客户操作完成后,取回客户卡;

     

    2)性能

    a)是否有自动吞卡:非法客户\密码错误客户\规定时间内未完成相关操作功能的客户。(如果有,有无报警功能(保密报警))

    b)平均无故障时间,平均故障修复时间,输入密码后验证时间,出钞票时间,查询余额等待时间。

     

    3)易用性

    a)ATM各个操作功能(硬件)是否正常、易懂;

    b)ATM的界面显示是否友好;

    c)ATM是否支持英文操作;

    d)ATM是否存在异常(断电、黑客入侵)有自动保护(报警)功能;

     

    如何测试一个 纸杯?

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

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

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

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

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

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

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

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

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

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

     

     

     

    我手上这支笔,请你根据这支笔设计测试用例

       首先我要测它的外观、颜色是否符合要求、所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等

     

     

    测试手机开机键 

    功能测试:按下开机键,屏幕能否亮起

    性能测试:按下开机键,屏幕能否在规定时间内亮起

    压力测试:连续多次按下开机键,观察屏幕是否能一直亮起,到多久时间失灵

    健壮性测试:给定一个中了病毒的手机或者是淘汰许久的老机子,安歇开机键观察屏幕能否亮起

    可靠性测试:连续按下开机键有限次数,比如1万次,记录屏幕未亮起的次数

    可用性测试:开机键按下费不费力,开机键的形状设计是否贴合手指,开机键的位置设计是否方便

     

     

    如何回答登录功能怎么进行测试?

     

    首先,进行界面测试。

    查看界面上的所有元素是否齐全;

    没有输入内容时,是否有相应的提示语;

    验证码是否能够显示;

    移动鼠标,【登陆】按钮默认不能点击;

    【忘记密码】是否有个小问号“?”(其他都有);

     

    第二,进行功能测试。

    输入正确的用户名、密码、验证码,点【登陆】能登陆;

    输入正确的用户名、错误的密码、正确的验证码,提示用户名或密码错误;

    输入错误的用户名、正确的验证码,提示用户名或密码错误;

    输入正确的用户名、密码,错误的验证码,提示验证码错误;

    输入不符合规则的手机号或者邮箱应该提示错误;

    页面长时间不登陆和操作,验证码会不会过期;

    点【记住密码】,登录后退出,再次登陆是不是可以不输入密码;

    点【忘记密码】能够跳转到密码设置页面(至于是什么不用管,就是能不能跳转)

    只点击验证码图案,验证码能不能刷新;

    页面刷新,验证码图案能不能刷新;

    输入栏是否设置快速删除按钮;

    用户名和密码是否大小写敏感;

    用户名和密码前后有空格的处理;

    登陆成功,是否有记住密码功能;

    登陆失败后,不能记录密码的功能;

    新用户第一次登陆成功,是否有修改密码提示;

    用户登录过程中log中是否有个人信息明文打印;

    是否支持第三方登陆;

    刷新页面时是否会刷新验证码;

    输入密码的时候,大写键盘开启的时候要有提示信息  ;

    不同级别的用户,比如管理员用户和普通用户,登录系统后的权限是否正确;

     

    第三、业务安全测试。

    有没有登陆错误次数的限制;

    每次登陆错误之后有没有限制再次登陆的时间间隔;

    是否支持一个账号多地登陆;

    不同机型登陆,异地登陆是否有提醒  ;

    不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面;

     

    第四、兼容性测试。

    在相同浏览器的不同版本上打开登录页面,效果是否一致;在不同浏览器上打开登录页面,效果是否一致;在不同操作系统的不同浏览器打开登录页面,效果是否一致;在不同的屏幕分辨率下打开登录页面,效果是否一致;

     

    第五、代码安全性测试。

    用户输入登录信息登陆时,个人信息是不是会显示在浏览器地址栏;

    用户登陆的时候,通过抓包工具抓数据,密码是否加密;

    查看页面源代码,验证码是否直接显示在代码中;

    密码在后台储存时是否加密;

    是否可以使用登录的API发送登录请求,并绕开验证码校验;

    用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面;

    用户名和密码的输入框中分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改;

     

    第六、页面性能测试。

    单用户登录的响应时间是否小于3秒;

    通过工具向登录页发起大量请求,查看页面响应时间的变化;

    通过工具对登陆功能进行并发测试;通过工具向登录页发起大量请求,查看页面何时崩溃;

    通过工具向登录页发起大量请求,查看页面崩溃后有没有良好的提示信息;

    通过工具向登录页发起大量请求,查看页面崩溃后多长时间能够恢复服务;

    弱网,不同网速时登陆的时间,网络切换和网络延迟时登陆界面是否正常;

     

    最后、易用性测试。

    页面是否美观;

    功能是否都可以使用;

    页面速度快不快;

    页面元素加载是否耗费网络流量;

    能不能第三方登陆;

    为什么不使用手机验证码登陆;

    输入框能否可以以Tab键切换。

     

     

    如何回答京东购物车功能怎么进行测试?

     

    1.功能测试

    a)、未登录时:

    将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加。

    b)、登录后:

    所有链接是否跳转正确;

    商品是否可以成功加入购物车;

    没有限购要求的商品,添加数量能不能超过库存数;

    购物车商品总数是否有限制;

    商品总数统计是否正确;

    全选功能是否可用;

    删除功能是否可用;

    删除功能是否有提示;

    价格总计是否正确;

    商品文字太长时是否显示完整;

    购物车中下架的商品是否有标识,是否还能支付;

    新加入购物车商品排序(添加购物车中存在的店铺的商品和购物车中不存在的店铺的商品);

    是否支持快TAB、ENTER等快捷键;

    商品删除后商品总数是否减少;

    收藏功能是否可用;

    账号退出后,购物车添加的内容是否还在;

    购物车结算功能是否可用。

    限购商品按照规则购买完成后,还能不能再次添加购物车并购买;

    2.兼容性测试

    BS架构:不同浏览器测试,比如:IE,火狐,谷歌,360这些。

    APP:在主流的不同类型,不同分辨率,不同操作系统的手机上测试,华为,vivo,oppo等

    3.用户体验测试

    删除商品是否有提示;

    是否支持快捷键功能;

    是否有回到顶部的功能;

    商品过多时结算按钮是否可以浮动显示;

    购物车有多个商品时,能不能只对单个商品结算;

    界面布局、排版是否合理;

    文字是否显示清晰;

    不同卖家的商品是否区分明显。

    4.性能测试

    打开购物车页面要多长时间

     

     

    支付流程测试

    功能测试。

    用等价类和边界值,判断支付的金额;

    如果没有登陆能否支付,支付成功后是否可以正常跳转;

    支付方式是否支持扫码支付,第三方平台支付(支付包,云网等),语音支付,指纹支付;

    支付时是否需要身份验证,支付后有无手机短信提示,是否可以找他人代付;

    用边界值法有无支付额度限制,余额不足时有无提示,支付时是否是动态加密支付;

    待支付状态:订单是否可以正常支付;是否可以取消;有相同订单是否可以支付两次;

    是否可以扫码支付,输入错误的密码会怎样显示,有无错误次数限制;

    若支持扫码支付,二维码是否支持支付包和微信扫码,若两人同时扫描怎么处理;

    有无最小支付金额限制,无意义的支付金额0,重复支付如何处理;

    如果支付包含优惠金额,该怎么处理优惠额度;

     

    性能测试 

    弱网,无网时是否可以支付;

    退款到账时间,耗电量的多少;

    带负载情况下的响应时间和吞吐率,在某个时间段内同时访问系统的用户数量 ;

     

    压力测试

    多人同时付款;

    界面测试;

    支付界面有无错别字,排版是否合理,颜色搭配是否合理;

     

    兼容性测试

    是否可以跨平台,不同电脑机型下显示有无区别;

    安全性测试;

    若支付不成功是否原路退款,若支付成功,有无支付信息提示;

    用fiddler抓包尝试修改价格,对订单金额有无效验;

    直接输入需要权限的页面地址可用访问;

     

    接口测试

    第三方平台支付 

     

     

     

    对于有系统大量并发访问,你会如何做测试,有什么建议

    参考回答:

    如何做高并发系统的测试,一般而言,整体的测试策略是:先针对部分系统进行性能测试及压力测试,得到各部分的峰值处理性能,再模拟整体流程测试,重点测试整体业务流程以及业务预期负荷,着重测试以下几点:

    1、不同省份,不同运营商CDN节点性能,可采用典型压力测试方案

    2、核心机房BGP网络带宽,此部分重点在于测试各运行商的BGP网络可靠性,实际速率,一般采用smokeping,lxChariot等工具

    3、各类硬件设备性能,一般采用专业的网络设备测试工具

    4、各类服务器并发性能,分布式处理能力,可采用压力测试方案工具

    5、业务系统性能,采用业务系统压力测试方案

    6、数据库处理性能,这部分需要结合业务系统进行测试,以获取核心业务场景下的数据库的TPS/QPS,

    7、如果有支付功能,需要进行支付渠道接口及分流测试,此部分相对而言可能是最大的瓶颈所在,此外还涉及备份方案,容灾方案,业务降级方案的测试。

     

    请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示

    参考回答:

    功能:

    1.每个摄像头都能抓拍车牌;

    2.每个摄像头抓拍到的车牌能正常交给系统处理;

    3.系统能够正确识别车牌;

    4.系统能够将识别出的车牌上传;

    5.上传至网络的车牌能够正常展示出来;

    一、功能测试

    1.使用正常的车牌,保持车牌静止,检查每个摄像头是否能抓拍车牌;

    2.使用类似非车牌的写有字的纸板,检查每个摄像头是否抓拍;

    3.使用正常的车牌,保持车牌较高速移动,检查每个摄像头是否能抓拍车牌;

    4.在多种情况下检查每个摄像头抓拍到的车牌能否正常交给系统处理,如临时断电、断网后能否正常将数据交给系统;

    5.使用抓拍到的正常的车牌,交由系统处理,检查系统能否识别车牌;

    6.使用非车牌的其他图片,交由系统处理,检查系统能否识别;

    7.在多种情况下检查系统能否将正常识别出的车牌进行上传,如临时断电、断网后未上传数据是否能继续上传;

    8.构造非车牌的其他内容的数据,检查系统能否将异常内容进行上传;

    9.检查上传至网络的车牌能否正常展示出来;

    10.上传非车牌的其他内容的数据,检查能否正常显示出来。

    二、性能测试

    1.同时向一个摄像头展示多个静止的车牌,检查摄像头能否抓拍到多个车牌;

    2.同时向一个摄像头展示多个较高速运动的车牌,检查摄像头能否抓拍到多个车牌;

    3.抓拍后,检查系统识别车牌的时间是否在需求要求的时间内;

    4.模拟大量抓拍照片同时交由系统处理,检查一定压力下系统能否正常识别车牌;

    5.模拟大量车牌同时上传,检查一定压力下能否上传成功。

    三、安全性测试

    1.检查是否能够通过给车牌加装饰物等方法,使摄像头无法抓拍或抓拍后系统无法正常识别车牌。

     

     

    请你说一说PC网络故障,以及如何排除障碍

    参考回答:

    (1)首先是排除接触故障,即确保你的网线是可以正常使用的。然后禁用网卡后再启用,排除偶然故障。打开网络和共享中心窗口,单击窗口左上侧“更改适配器设置”右击其中的“本地连接“或”无线网络连接”,单击快捷菜单中的“禁用”命令,即可禁用所选网络。接下来重启网络,只需右击后单击启用即可。

    (2)使用ipconfig查看计算机的上网参数

    1、单击“开始|所有程序|附件|命令提示符“,打开命令提示符窗口

    2、输入ipconfig,按Enter确认,可以看到机器的配置信息,输入ipconfig/all,可以看到IP地址和网卡物理地址等相关网络详细信息。

    (3)使用ping命令测试网络的连通性,定位故障范围

    在命令提示符窗口中输入”ping 127.0.0.1“,数据显示本机分别发送和接受了4个数据包,丢包率为零,可以判断本机网络协议工作正常,如显示”请求超时“,则表明本机网卡的安装或TCP/IP协议有问题,接下来就应该检查网卡和TCP/IP协议,卸载后重装即可。

    (4)ping本机IP

    在确认127.0.0.1地址能被ping通的情况下,继续使用ping命令测试本机的IP地址能否被ping通,如不能,说明本机的网卡驱动程序不正确,或者网卡与网线之间连接有故障,也有可能是本地的路由表面收到了破坏,此时应检查本机网卡的状态是否为已连接,网络参数是否设置正确,如果正确可是不能ping通,就应该重新安装网卡驱动程序。丢失率为零,可以判断网卡安装配置没有问题,工作正常。

    (5)ping网关

    网关地址能被ping通的话,表明本机网络连接以及正常,如果命令不成功,可能是网关设备自身存在问题,也可能是本机上网参数设置有误,检查网络参数。

     

     

    微信红包

    功能

    1.在红包钱数,和红包个数的输入框中只能输入数字

    2.红包里最多和最少可以输入的钱数  200  0.01

    3.拼手气红包最多可以发多少个红包  100

    3.1超过最大拼手气红包的个数是否有提醒

    4.当红包钱数超过最大范围是不是有对应的提示

    5.当发送的红包个数超过最大范围是不是有提示

    6.当余额不足时,红包发送失败

    7.在红包描述里是否可以输入汉字,英文,符号,表情,纯数字,汉字英语符号,

    7.1是否可以输入它们的混合搭配

    8.输入红包钱数是不是只能输入数字

    9.红包描述里许多能有多少个字符   10个

    10.红包描述,金额,红包个数框里是否支持复制粘贴操作

    12.红包描述里的表情可以删除

    13.发送的红包别人是否可以领取

    13.1发的红包自己可不可以领取   2人

    14. 24小时内没有领取的红包是否可以退回到原来的账户

    14.1  超过24小时没有领取的红包,是否还可以领取

    15.用户是否可以多次抢一个红包

    16.发红包的人是否还可以抢红包   多人

    17.红包的金额里的小数位数是否有限制

    18.可以按返回键,取消发红包

    19. 断网时,无法抢红包

    20.可不可以自己选择支付方式

    21.余额不足时,会不会自动匹配支付方式

    22.在发红包界面能否看到以前的收发红包的记录

    23.红包记录里的信息与实际收发红包记录是否匹配

    24.支付时可以密码支付也可以指纹支付

    25.如果直接输入小数点,那么小数点之前应该有个0

    26.支付成功后,退回聊天界面

    27.发红包金额和收到的红包金额应该匹配

    28.是否可以连续多次发红包

    29.输入钱数为0,"塞钱进红包"置灰

     

    性能

    1.弱网时抢红包,发红包时间

    2.不同网速时抢红包,发红包的时间

    3.发红包和收红包成功后的跳转时间

    4.收发红包的耗电量

    5.退款到账的时间

     

    兼容

    1.苹果,安卓是否都可以发送红包

    2.电脑端可以抢微信红包

     

    界面

    1.发红包界面没有错别字

    2.抢完红包界面没有错别字

    3.发红包和收红包界面排版合理,

    4.发红包和收到红包界面颜色搭配合理

     

    安全

    1.对方微信号异地登录,是否会有提醒   2人

    2.红包被领取以后,发送红包人的金额会减少,收红包金额会增加

    3.发送红包失败,余额和银行卡里的钱数不会少

    4.红包发送成功,是否会收到微信支付的通知

     

    易用性(有点重复)

    1.红包描述,可以通过语音输入

    2.可以指纹支付也可以密码支付

     

     

    微信发朋友圈点赞

    参考回答:

    功能测试:

    点赞某条朋友圈,验证是否成功

    接口测试:

    点赞朋友圈,验证朋友能否收到提示信息

    性能测试

    点赞朋友圈,是否在规定时间显示结果,是否在规定时间在朋友手机上进行提示

    兼容性测试

    在不同的终端比如ipad,手机上点赞朋友圈,验证是否成功

     

     

    如何对淘宝搜索框进行测试

    参考回答:

    一, 功能测试

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

    1.1输入可查到结果的正常关键字、词、语句,检索到的内容、链接正确性;

    1.2输入不可查到结果的关键字、词、语句;

    1.3输入一些特殊的内容,如空、特殊符、标点符、极限值等,可引入等价类划分的方法等;

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

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

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

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

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

    7, 网速慢的情况下的搜索

    8. 搜索结果为空的情况

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

    二.性能测试:

    1压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)

    2负载测试:看极限能承载多大的用户量同时正常使用

    3稳定性测试:常规压力下能保持多久持续稳定运行

    4内存测试:有无内存泄漏现象

    5大数据量测试:如模拟从庞大的海量数据中搜索结果、或搜索出海量的结果后列示出来,看表现如何等等。

    三. 易用性:交互界面的设计是否便于、易于使用

    1依据不同的查询结果会有相关的人性化提示,查不到时告知?查到时统计条数并告知?有疑似输入条件错误时提示可能正确的输入项等等处理;

    2查询出的结果罗列有序,如按点击率或其他排序规则,确保每次查询出的结果位置按规则列示方便定位,显示字体、字号、色彩便于识别等等;

    3标题查询、全文检索、模糊查询、容错查询、多关键字组织查询(空格间格开)等实用的检索方式是否正常?

    4输入搜索条件的控件风格设计、位置摆放是否醒目便于使用者注意到,有否快照等快捷查看方式等人性化设计?

    四. 兼容性

    1WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用

    2IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用

    3SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试

    4简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试

    5IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试

    6与各相关的监控程序的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用

    五. 安全性

    1被删除、加密、授权的数据,不允许被SQL注入等攻击方式查出来的,是否有安全控制设计;

    2录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生漏洞,如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。

    3通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;

    4对涉及国家安全、法律禁止的内容是否进行了相关的过滤和控制;

     

     

     

     

    就linux下的CP命令设计测试用例。

    功能

     

    拷贝的文件

    1)大小:0k, 1k, 10k, 100k, 1000k…

    2)类型:二进制文件、文本文件、mp3、avi、压缩文件…

     

    文件源目录

    1)文件中包含各种类型的文件

    2)目录深度为0,1,2,3…

     

    文件目标目录

    1)目标目录中存在与源文件同名同类型的文件

    2)目标目录中存在与源文件同名不同类型的文件

    3)目标目录中存在与源文件不同名同类型的文件

    4)目标目录中存在与源文件不同名不同类型的文件

     

    异常

     

    参数异常

    1)包含特殊字符

    2)参数长度超过限制

    3)源目录不存在

    4)目标目录不存在

     

    文件异常

    1)文件没有拷贝权限

    2)非法的文件格式和内容

     

    存储介质异常

    1)存储介质由损坏

    2)拷贝前存储介质已满

    3)拷贝中存储介质存满

     

    执行过程异常

    1)拷贝过程中删除源文件

    2)拷贝过程中删除目标文件

     

    性能

    1)拷贝大文件

    2)拷贝源目录中存在大量小文件

    3)跨文件系统拷贝

    4)跨存储介质拷贝

    5)并发执行拷贝

     

    关注性能点:拷贝完成时间,CPU,内存,磁盘IO

     

     

     

    请问如果用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个问题

    • 是否手机出现故障,是否手机缓存过多造成内存不够用
    • 是否手机网络连接不稳定(弱网/无网),若是,有无网络差提示
    • 是否手机内存溢出(关注人数达上限否)
    • 是否是版本问题或者是安装包问题(更新系统,重新安装安装包)

     

    现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

    标题:这一组只有一个记录,其内容为输出成绩报告的名字。

    试卷各题标准答案记录:每个记录均在第80个字符处标以数字"2"。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3……个记录相应为第51至第100,第101至第150,…题的答案。

     

    每个学生的答卷描述:该组中每个记录的第80个字符均为数字"3"。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3……纪录分别给出他的第51至第100,第101至第150……题的解答。然后是学生乙的答卷记录。

    学生人数不超过200,试题数不超过999。

    程序的输出有4个报告:

        a)按学号排列的成绩单,列出每个学生的成绩、名次。

        b)按学生成绩排序的成绩单。

        c)平均分数及标准偏差的报告。

        d)试题分析报告。按试题号排序,列出各题学生答对的百分比。

    分别考虑输入条件和输出条件,以及边界条件。给出右表所示的输入条件及相应的测试用例。

     

     

     

    三、基础知识点

    什么是桩模块?什么是驱动模块?

    桩模块:被测模块调用模块

    驱动模块 调用被测模块

     

    什么是扇入?什么是扇出?

    扇入:被调次数,扇出:调其它模块数目

     

    8020原则:在需求分析开始到集成测试阶段引入测试手段,能发现所有缺陷的80%,系统测试阶段发现16%,在运行维护阶段经过长时间大量运行软件后,能够发现4%。起源于经济学。

     

    什么是耦合?什么是内聚

    耦合:对一个软件结构内各个模块之间互连程度的度量。

    内聚:一个模块内各个元素彼此结合的紧密程度。强内聚,松耦合。

     

    缺陷严重程度

    致命(Fatal)、严重(Critical)、一般(Major)、较小(Minor)。

     

    缺陷优先级

    立即解决P1、高优先级P2、正常排队P3、低优先级P4。

     

    缺陷状态

    打开(open)、修正(fixed)、重新打开(reopen)、关闭(closed)、重复(Duplicate)、推迟(Deferred)、保留(On hold)、不修复(wontfix)。

     

    简单的软件缺陷生命周期:

    发现(new)-打开-修复-关闭。

     

    复杂的软件缺陷生命周期:

    新建-打开-Bug审查(设计需要修改/延期/关闭)-关闭。

       新建-打开-是否清楚,可再现(不能再现缺少信息返回到打开状态)-修正-关闭。

     

    什么是在线用户数?什么是并发用户数

    在线用户数:

    用户同时在一定时间段的在线数量

    并发用户数:

    某一时刻同时向服务器发送请求的用户数

     

     

    分布式软件架构分为

    B/S架构(浏览器、web版)       C/S架构:客户端(先进行安装)

     

    测试人员的能力

    搭建环境的能力(配置JDK、数据库、Tomcat/Apace、程序放相应路径下、检查配置是否成功‚数据库管理和设置ƒ程序设计C++④测试方法论⑤工具的使用能力(QC\QTP\LR\Bugfree)

     

    简述负载测试与压力测试的区别。

    参考答案:

     

    压力测试(Stress Testing)

    压力测试的主要任务就是获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确执行的能力。例如,对服务器做压力测试时就可以增加并发操作的用户数量;或者不停地向服务器发送请求;或一次性向服务器发送特别大的数据等。看看服务器保持正常运行所能达到的最大状态。人们通常使用测试工具来完成压力测试,如模拟上万个用户从终端同时登录,这是压力测试中常常使用的方法。

     

    负载测试(Volume Testing)

    用于检查系统在使用大量数据的时候正确工作的能力,即检验系统的能力最高能达到什么程度。例如,对于信息检索系统,让它使用频率达到最大;对于多个终端的分时系统,让它所有的终端都开动。在使整个系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。

     

    软件缺陷管理工具有哪些

    答:   QC ALM BugFree jira Mantis 禅道

     

    弱网测试

     

     

     

    四、智力题

    一,5只猫 五分钟捉5只老鼠 请问100分钟捉100只老鼠需要多少只猫?

    答案:5只

    二,圆桌,两个人,轮流放硬币,不能重叠,半径为1,某一方不能放下去,则为输。问先手赢 后手赢

    答案:先手赢,圆桌对称,先手先放,后手都可以找对称位置,除了圆心

    三,3升的杯子一个,5升的杯子一个,杯子不规则形状 问怎么得到4升的水 水无限多

    答案:略

    四,晚上有四个人过桥,一次只能过两个人,但是只有一只手电筒,四个人过桥时间分别是1,2,5,8,求最短过桥时间

    答案:甲乙,甲回,丙丁,乙回,甲乙,15分钟

    五,有十张扑克牌,每次可以只出一张,也可以只出两张,要出完有多少种出法

    答案:89 F(9)=N F(8)=P F(10)=F(8)+F(9) F(1)=1 F(2)=2

    六,井盖为什么是圆的

    答案:用料少,受压均匀,成本低

    七,两个盲人各买了一白一黑两双袜子,不小心弄混了,问他们自己怎么分成刚好每人一白一黑

    答案:袜子是连在一起的

    八, 烧一根不均匀的绳子,从头烧到尾总共需要1个小时,问如何用烧绳子的方法来确定15分钟?

    答案:烧两根,一根点两头,一根点一头,烧完,剩下的把另一投点了,烧完,看重合点

    九,海盗分金,五人,过半同意,否则喂鱼,问1方案?

    答案:45,5反对,4喂鱼,所3(100,0,0),故2(98,0,1,1),故1(97,0,1,2,0)

    十,岔路口,通往1,2,两人,一人必说谎,一人永真话,怎么去1

    答案:问一人,另一人会回答那条路去1,回答答案必假

    十一,果冻,有黄色、绿色、红色三种,闭眼抓同种颜色两个,抓取多少个,可确定有两个同色果冻?

    答案:根据抽屉原理,4个

    十二,下水道为什么是圆的

    答案:方便人员进出,井盖不容易掉落,不易如棱角磨损节约材料,保护车辆 和行人的安全

    十三,一共100个球,两人轮流拿,每人每次最多拿5个,最后一个拿的人赢;如果我先拿,怎么拿一定会赢?

    答案:每次拿的球总数控制为6;第一次拿4个;

    十四,有120g面粉,现有一个天平和一个2g的砝码以及一个7g的砝码,最少称几次可以将面粉分为70g与50g

    答案:4次,第一次120g=111g+9g  第二次111g=93g+18g  第三次93g=57g+36g  第四次50g=57g-7g  70g=7g+36g+18g+9g

    十五,扔鸡蛋不碎问题(腾讯校招面试题)?

    答案:14次

    十六,智力题:一千瓶中有一瓶毒药 十只小白鼠找出这瓶毒药

    答案:2^10=1024,小白鼠编号1-10,瓶子编号1-1000,把瓶子的编号转变为二进制数,第几位1,就给第几个小白鼠喝

     

     

     

    第二篇测试面试总结---->测试面试二

    参考资料:

     

    https://www.nowcoder.com/ta/review-test

    https://zhaiyujia.blog.csdn.net/article/details/81604085

    https://blog.csdn.net/weixin_30363263/article/details/80110247?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242

    https://my.oschina.net/u/4296112/blog/3569084

    https://bbs.huaweicloud.com/blogs/172015

    https://zhuanlan.zhihu.com/p/122493284

    https://blog.csdn.net/weixin_44264744/article/details/104948526?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control#%E4%B8%89%EF%BC%8C%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95Jmeter%2CFiddler

     

    展开全文
  • sql面试题 软件测试 含答案
  • 软件测试环境搭建

    千次阅读 2019-09-28 14:02:51
    首先在搭建软件测试环境前,我们要明白一个软件运行起来都需要什么条件,而这些条件就是我们所说的软件测试的环境。 软件测试环境是由硬件环境、软件环境、网络环境构成。 硬件环境: 所需计算机数量 对每台...
  • 2019年互联网企业软件测试面试题(常考)

    万次阅读 多人点赞 2019-04-22 09:32:26
    很多软件测试工程师在面试互联网企业的时候都会遇到考官给的几道面试题,这也反应了测试工程师对企业的重要性,今天传智播客整理了一份2019年的互联网企业软件测试面试题,希望能帮助到大家。 2019年互联网企业软件...
  • 软件工程导论—软件测试

    万次阅读 多人点赞 2020-05-13 21:26:49
    1. 软件测试基础 2. 单元测试 3. 集成测试 4. 确认测试 5. 白盒测试技术 6. 黑盒测试技术 7. 调试 8. 软件可靠性
  • 软件测试面试的自我介绍

    万次阅读 多人点赞 2019-04-13 18:27:27
    面试官,你好,我叫Jayce,16年本科毕业,从事软件测试将近3年的时间。在此期间做过一些项目也积累过一些经验,能够独立地完成软件测试流程的一个工作。我之前主要做过的是功能测试,web自动化测试、app专项测试、...
  • 分享一份适合练手的软件测试实战项目

    万次阅读 多人点赞 2020-11-21 19:28:50
    最近,不少读者托我找一个能实际练手的测试项目。开始,我觉得这是很简单的一件事,但当我付诸行动时,却发现,要找到一个对新手友好的练手项目,着实困难。 我翻了不下一百个web网页,包括之前推荐练手的政府网站...
  • 软件测试笔试面试题目完全汇总

    万次阅读 多人点赞 2019-03-06 13:29:37
    1、软件测试的流程 2、web测试和APP测试的区别 仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的。那么区别在哪里呢? 由于载体不一样,所以系统测试和一些细节可能会不一样。 那么我们就要先...
  • 软件测试

    千次阅读 多人点赞 2019-10-10 17:39:15
    软件测试 软件测试全景图 软件测试的九个模块: 测试的定义,包括测试标准、原则、历史等; 测试五大流派,包括传统测试、敏捷测试、探索式测试、SBTM 测试方法:MBT、ReBT、RiBT等等 测试层次和类型:单元测试、...
  • 软件测试软件测试方法

    千次阅读 2019-06-15 15:50:40
    软件测试过程中,最主要的就是要掌握好软件测试的方法,掌握好了软件测试方法,有利于测试技能的大幅度提高。 软件测试方法 软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样...
  • 软件测试学习(一)软件测试基础知识

    千次阅读 多人点赞 2020-01-09 16:05:29
    1. 软件测试定义 首先要明确测试的定义,所谓测试,就是以检验产品是否满足需求为目标。 而软件测试,自然是为了发现软件(产品)的缺陷而运行软件(产品) 比较标准的软件测试的定义是:在规定的条件下对程序进行操作,以...
  • 软件测试面试题汇总

    万次阅读 多人点赞 2018-09-27 12:31:09
    转载自: ... 软件测试面试题汇总 测试技术面试题 ...........................................................................................................
  • 软件测试基础知识 + 面试理论(超详细)

    千次阅读 多人点赞 2021-02-25 10:47:13
    三、软件测试工程师的工作内容四、常见的软件生命周期模型五、软件开发的几个阶段六、软件bug的五个要素七、软件测试的分类八、什么是测试用例九、测试用例几大要素【面试理论知识】1、你的测试职业发展是什么?...
  • 软件测试测试工具总结

    万次阅读 多人点赞 2019-06-14 17:52:48
    软件测试的过程中,多多少少都是会接触到一些测试工具,作为辅助测试用的,以提高测试工作的效率,使用好了测试工具,能对测试起到一个很好的作用,同时,有些公司,也会要求掌握一些测试工具,或者,是在面试时,...
  • 《微软的软件测试之道》中文版

    热门讨论 2012-12-02 21:15:59
    微软雇佣的软件测试人员和软件开发人员一样多。这个事实也许会让你吃惊。但你不会惊奇微软对测试流程,以及这个流程在微软多种多样的超过150种的产品的质量管理中所起的作用的强调。 本书由微软的三位卓越的专业测试...
  • 软件测试总结

    千次阅读 多人点赞 2019-06-19 15:45:11
    1、软件测试的定义: 软件测试就是一系列活动,这些活动是为了评估一个程序或软件系统的特征或能力,并确定其是否达到了预期结果。 2、测试和开发的关系 软件测试和软件开发在整个软件开发生命周期中交互协作,...
  • 问:软件测试的原则? 答:https://blog.csdn.net/weixin_30363263/article/details/102986878 问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 1、将问题提交到缺陷...
  • 软件测试简历,这一点你是否漏掉

    万次阅读 多人点赞 2017-11-29 21:04:11
    几乎所有的测试简历都在长篇大论谈如何做测试,参加过多少项目的测试测试过程是怎么样的,测试如何管理,会黑盒、白盒、灰盒、彩盒.....、会写方案、测试用例。从这些内容中我无法看出你会什么,技术上哪些是你的...
  • 软件测试之测试用例

    千次阅读 2019-06-10 21:50:51
    软件测试的流程里,制定好了测试计划后,接下来,就要开始做测试的准备工作了。测试的准备工作,除了,测试环境的配置,准备,测试工具的准备外,还有一个就是设计测试用例了。 设计测试用例的人员,在有些公司...
  • 软件测试期末复习

    万次阅读 多人点赞 2019-06-18 10:30:19
    1.软件测试的目的是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。 2.测试阶段的基本任务是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组测试用例利用这些实例执行程序找出软件中潜在...
  • 软件测试_笔记(完整版)

    万次阅读 多人点赞 2018-07-02 08:51:28
    软件测试复习(部分) 概述 程序+文档+数据=软件 狭义的软件测试定义:为发现软件缺陷而执行程序或系统的过程 广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或...
  • 一、软件测试的定义 软件测试的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。因为软件是由文档、数据以及程序组成的,所以软件测试的对象也就不仅仅是程序本身,而是包括软件形成过程的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,429,470
精华内容 571,788
关键字:

软件测试