系统测试 订阅
系统测试,英文是System Testing。是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统分析和设计中的错误。如安全测试是测试安全措施是否完善,能不能保证系统不受非法侵入。再例如,压力测试是测试系统在正常数据量以及超负荷量(如多个用户同时存取) 等情况下是否还能正常地工作。 [1] 展开全文
系统测试,英文是System Testing。是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统分析和设计中的错误。如安全测试是测试安全措施是否完善,能不能保证系统不受非法侵入。再例如,压力测试是测试系统在正常数据量以及超负荷量(如多个用户同时存取) 等情况下是否还能正常地工作。 [1]
信息
主要步骤
制定系统测试计划、设计系统测试用例、 执行系统测试
外文名
System Testing
分    类
恢复测试、安全测试、压力测试
中文名
系统测试
目    的
验证最终软件系统是否满足用户规定的需求
主要内容
功能测试、健壮性测试
系统测试内容
系统测试是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。流程如图1所示。系统测试的目的是验证最终软件系统是否满足用户规定的需求。 主要内容包括:功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如《产品需求规格说明书》。由于正确性是软件最重要的质量因素,所以功能测试必不可少。健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力
收起全文
精华内容
参与话题
问答
  • 软件测试入门视频教程

    万人学习 2015-01-22 16:21:44
    该课程将带你走进“软件测试”的大门,具体内容包括软件测试环境搭建、软件开发模型、产品模型、CMM模型、测试用例、等价类划分、边界值划分、白盒测试、单元测试、bugfree搭建、系统测试、回归测试、验收测试等。...
  • 4、区块链之币币交易所资管系统性能测试,登录、交易买入、交易卖出等测试场景设计、脚本开发/调试、数据 准备、性能调优、性能测试报告。       5、性能测试流程和性能...
  • 接口测试工具Postman接口测试图文教程

    万次阅读 多人点赞 2018-07-11 13:10:03
    市场上有很多优秀的,完善的接口测试工具,比如SoapUI,Postman等,能够高效的帮助后端开发人员独立进行接口测试。这里使用Postman接口测试工具,此处以请求方式为POST的userLogin登录接口为例。

    目录

    一、前言

    二、Postman安装和使用

    三、请求方式

    四、资金记录接口实例演示


    一、前言

        在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上,都无法及时完成功能模块的测试。
        做为后端开发人员,要求独立开发完成某个接口后,开发人员自己需要先测试通过后再提交给测试人员进行测试,否则会出现到测试人员哪里业务流程根本就走不通,或者BUG会过多的情况等。
        市场上有很多优秀的,完善的接口测试工具,比如SoapUI,Postman等,能够高效的帮助后端开发人员独立进行接口测试。这里使用Postman接口测试工具,此处以请求方式为POST的userLogin登录接口为例。

    二、Postman安装和使用

        1、这个直接去官网下载即可,我们使用免费版即可满足基本接口测试,根据个人或者公司的项目实际情况考虑是否需要专业版或者其他。
     
    免费版官网链接:https://www.getpostman.com/postman
    下载好的安装程序Postman-Win64-xxx-Setup.exe,双击安装即可。建议安装在非系统盘,即C盘在外的其他盘,另建议使用全英文路径,避免使用中文路径。
     
        2、打开Postman如下图2-1,可以关闭该页面跳过注册账户,非登陆状态下该工具可以直接使用。接下来出现引导页面,类似IDEA,Android Studio等开发工具的引导页。此处关闭即可。
    图2-1注册账户图
     
    图2-2项目创建引导图

    3、进入Postman主页面并创建项目接口集合

        这里是我之前用过,所以左侧文件栏存在几个已有的文件夹。
        选择功能菜单New下的Collection创建项目接口集合。新建一个亿的项目A hundred million,可在Description部分写一下项目描述。

    图2-3Postman主页面
     
    图2-4新建项目接口集合图

    4、创建项目模块文件夹

        一般项目会分多个管理模块或者功能模块进行开发。这里可根据项目具体情况创建子文件夹方便接口管理。此处在A hundred million项目右键创建资产管理assets文件夹、user用户管理文件夹。可将测试的接口实例保存在对于管理模块下。

    图2-5新建资产管理文件夹

    5、后台登录接口演示

        开发完成后台接口,编写正确严谨的逻辑代码处理前端请求。此处登录接口代码如下,运行后台开发项目,使该接口能够访问。接口请求路径为:http://localhost:8080/manage/app/user/login

    @Controller
    @RequestMapping("/manage/app/")
    @Scope("prototype")
    public class AppUserController {
    
       /**
        * 日志
        */
    public static Logger customFile = LoggerFactory.getLogger("manageCustomFile");
    
    @Resource
    private AppUserService appUserService;
    
        /**
         * 用户登录
         * @param baseResult
         * @return
         */
        @RequestMapping(value = "user/login" , produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
        @ResponseBody
        public BaseResult loginUser(@RequestBody BaseResult baseResult) {
            customFile.info("appId:"+ baseResult.getTreasureID()+ "用户登陆访问:" + baseResult.toString());
            return appUserService.loginUser(baseResult);
        }
    }

    6、新建接口测试

        在Postman主页面Content部分点击'+'按钮,新增一个接口测试。在图2-6所示第一部分填写接口请求路径,左侧下拉列表可选择请求方式,此处选择POST请求方式。接口请求路径为http://localhost:8080/manage/app/user/login。第二部分是请求体,即包含接口所需请求参数的Body,此处选择原始数据RAW,数据类型使用JSON数据作为请求数据。点击蓝色Send按钮发送请求,后台项目接口接收请求并响应返回执行结果。此处后台处理数据返回结果仍是JSON数据,这个看实际项目而定,此处仅做演示。第三部分是接口响应体,即接口响应请求处理并返回的数据。点击Pretty自动匹配接口返回的数据格式并对数据美化显示,使数据看起来更加直观。如果接口测试出现异常,则可以通过PreView视图查看浏览器响应接口的页面信息,也可以通过Header了解请求状态等参数。一般出现异常还是直接去后台看控制台的异常信息及项目日志来处理解决异常,再进行接口测试。

    图2-6接口测试图

        接口测试通过后,可Ctrl+S保存接口测试实例,填写接口测试名称和接口描述信息,选择要保存的路径,此处保存在user用户管理模块文件夹。当项目的接口全部测试通过后,可在A hundred million项目右键Export导出接口文档,保存为JSON接口测试文件,该文件可通过Postman导入查看。

    三、请求方式

        对于后台开发的接口,请求方式肯定不止POST一种,Postman也支持多种请求方式。在新建接口测试实例时可选择接口的请求方式,如图3-1。

    图3-1接口请求方式图

        请求类型可以模拟Form表单文本提交,Form表单文件提交,raw原始数据提交,二进制文件提交。对于原始数据类型raw还支持不同文件格式,包括JSON,TXT,HTML等多种文件格式。

    图3-2数据请求类型图

     

    四、资金记录接口实例演示

        后台开发接口如下,服务器部署运行后台项目。接口请求路径为:http://localhost:8080/manage/app/user/asset/withdrawRecord

    @Controller
    @RequestMapping("/manage/app/")
    @Scope("prototype")
    public class AppUserAssetController {
     
        /**
         * 日志
         */
        public static Logger customFile = LoggerFactory.getLogger("manageCustomFile");
    
        @Resource
        private AppUserAssetService appUserAssetService;
        
        /**
         * 获取提现记录
         * 即我的页面中的资金记录
         * @param baseResult
         * @return
         */
        @RequestMapping(value = "user/asset/withdrawRecord" , produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
        @ResponseBody
        public BaseResult getUserWithdrawRecord(@RequestBody BaseResult baseResult){
            customFile.info( "appId:"+ baseResult.getTreasureID() + "用户提现记录获取"+baseResult.toString());
            return appUserAssetService.getUserWithdrawRecord(baseResult);
        }
    }

    新建资金接口测试
    请求方式为POST,
    请求URL为http://localhost:8080/manage/app/user/asset/withdrawRecord
    请求体为JSON类型的原始数据
    点击Send请求接口,接口响应请求处理返回结果如图3-3所示


    图3-3资金记录接口测试图
     
    展开全文
  • 文章目录系统测试概述功能测试性能测试负载测试压力测试性能测试、压力测试、负载测试的关系兼容性测试安全测试健壮性测试配置测试可用性测试文档测试 系统测试概述 系统测试的定义 将已经集成好的软件系统,作为...

    系统测试概述

    • 系统测试的定义
      • 将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下, - 对计算机系统进行一系列测试活动。
    • 根本任务
      • 证明被测系统的功能和结构的稳定性;还要有一些非功能测试:性能测试、压力测试、可靠性测试等等。
    • 目的
      • 确保软件产品能够被用户或操作者接受。
    • 系统测试属于黑盒测试范畴,不再对软件的源代码进行分析和测试。
    • 系统测试的组织
      • 系统测试主要是由质量部门的测试工程师来主导工作。
        • 测试组组长:组织测试;
        • 测试分析员:负责设计和实现测试脚本和测试用例;
        • 测试者:负责执行测试脚本中记录的测试用例。
      • 系统测试员和用户
        • 相似的地方
          • 都是使用软件,一般不接触软件的代码
          • 都是假设软件应该正确实现说明书的功能
        • 不同的地方
          • 使用软件的目的
          • 对待错误
    • 系统测试的内容
      • 功能特性的测试:功能测试、用户界面测试、安装/卸载测试、可使用性测试。
      • 非功能特性的测试:性能测试、负载测试、压力测试、疲劳测试、安全测试、恢复测试、兼容性测试、可靠性测试、强度测试、容量测试、配置测试。

    功能测试

    功能测试(Functional Test)是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。

    • 目标
      • 检验产品功能是否正确实现
    • 内容
      • 正常功能、异常功能、边界测试、界面测试、接口测试、安全测试、错误处理测试等。
    • 依据
      • 需求规格说明书
    • 方法
      • 黑盒测试
        在这里插入图片描述

    性能测试

    性能测试(Performance Testing)通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

    • 目标
      • 对产品的性能进行测试,检验是否达标、是否能够保持。
    • 工具
      • 在需要大访问量时候尤其需要使用工具。
      • 并发性能测试工具 (load—负载)
        • LoadRunner、 QALoad、 SilkPerformer、 WebLoad
    • 用户视角的软件性能
      • 从用户角度来说,软件性能就是软件对用户操作的响应时间。
    • 系统管理员视角的软件性能
      • 系统的响应时间;
      • 系统运行时服务器的状态,如CPU利用情况、内存使用情况等;
      • 系统是否能够实现扩展;
      • 系统支持多少用户访问;
      • 系统性能可能的瓶颈在哪里;
      • 系统是否支持7*24小时的业务访问。
    • 软件性能指标
      • 并发用户
        • 一给定时间内,某个时刻与服务器同时进行会话操作的用户数。
      • 响应时间
        • 客户端发出请求到得到服务器返回结果的整个过程所经历的时间。
      • 吞吐量
        • 单位时间内系统处理的客户请求的数量
        • 一般来说,吞吐量用请求数/秒或页面数/秒来衡量。
        • 从业务的角度,吞吐量也可以用访问人数/天或处理的业务数/小时等单位来衡量。
        • 从网络的角度来说,也可以用字节数/天等单位来考察网络流量。
      • 资源利用率
        • 指系统资源的使用程度,比如服务器的CPU利用率、内存利用率、磁盘利用率、网络带宽利用率等。
    • 软件性能要素
      • 环境要素
        • 软件、硬件、网络
      • 业务要素
        • 用户数、执行功能、数据量
      • 在使用性能指标描述软件的性能特征时,应该给出明确的软件性能要素,否则,所给出的性能指标无法参考。
    • 性能测试用例的设计:主要是通过改变模拟的业务因素来测试软件的性能。
      • 并发用户数
        • 精算法
          在这里插入图片描述
        • 估算法
          在这里插入图片描述
        • 经验值
          • 对于一些系统,可以通过同类软件系统的用户数据来估算,这种估算可以通过类似系统的日志分析和问卷调查来进行。
      • 吞吐量
      • 基于业务的设计

    负载测试

    • 定义
      • 数据在超负荷环境下运行,测试软件系统是否能够承担。这种超负荷主要指多并发用户。
    • 方法
      • 人为生成大数据量,并利用工具模拟频繁并发访问
    • 工具
      • 一般需要使用自动化工具
    • 考察指标
      • 响应时间、交易容量、资源使用率等

    压力测试

    • 定义
      • 指系统不断施加越来越大的负载(并发,循环操作,多用户,网络流量)的测试。
    • 目标
      • 通过确定一个系统的瓶颈或者不能接收的性能点,来确定系统能提供的最大服务级别的测试。

    性能测试、压力测试、负载测试的关系

    • 性能测试是正常情况下的性能指标;
    • 压力测试是测试系统的瓶颈所在;
    • 负载测试是指系统重负荷性能指标;
    • 性能测试、压力测试、负载测试在广义上讲都是性能测试的内容,建议将三种测试结合起来并行进行。

    兼容性测试

    • 定义
      • 测试软件在一个特定的硬件、软件、操作系统、网络等环境下系统能否正常运行。
    • 目的
      • 检验被测软件对其他应用软件或者其他系统的兼容性。

    安全测试

    • 定义
      • 安全测试检测系统对非法入侵的防范能力。
    • 应用程序级别的安全性测试
    • 数据库安全性测试
    • 系统级别的安全性测试

    健壮性测试

    • 定义
      • 又称为容错测试。主要检查系统容错能力。当系统出错时,能否在指定的时间间隔内修正错误并重启系统。
    • 方法
      • 容错测试首先要通过各种手段让软件系统强制发生故障,然后验证系统能否快速恢复。

    配置测试

    • 定义
      • 配置测试将验证软件与其所依赖硬件环境的依赖程度。
    • 测试中的硬件环境指进行测试所必需的服务器、客户端、网络连接设备,以及打印机、扫描仪等辅助硬件设备所构成的环境。
    • 所有软件都需向用户说明其运行的硬件环境,对于多层结构的软件系统来说,需要分别说明其服务器、客户端以及网络所需的环境。

    可用性测试

    可用性测试是面向用户的系统测试。让一群有代表性的用户尝试对产品进行典型操作,- - 同时观察员和开发人员在一旁观察,聆听,做记录。

    • 系统中是否存在繁琐的功能以及指令;
    • 安装过程是否复杂;
    • 错误信息提示内容是否详细;
    • GUI接口是否标准;
    • 登录是否方便;
    • 需要用户记住内容的多少;
    • 帮助文本是否详细;

    文档测试

    • 定义
      • 文档测试是对系统提交给文档进行验证,它要求检查系统的文档是否齐全。
    • 文档的种类
      • 包括联机帮助文档或用户手册,指南和向导,
      • 安装、设置指南,示例及模板,错误提示信息,
      • 用于演示的图像和声音,
      • 授权/注册登记表及用户许可协议,
      • 软件的包装、广告宣传材料等。
    展开全文
  • 软件测试2小时入门

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

    万次阅读 多人点赞 2018-04-12 10:40:58
    努力成为一个优秀的测试开发从业者,加油!... - 假装在测试的回答 - 知乎白盒与黑盒测试什么区分1、黑盒测试 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检...

     努力成为一个优秀的测试开发从业者,加油!!!   

    目录

    一、白盒与黑盒测试什么区分

    1、黑盒测试

    2、白盒测试

    3、白盒测试&黑盒测试对比

    4、白盒测试&黑盒测试详细介绍

    黑盒测试

    白盒测试

    二、测试相关经验

    三、测试能力培养

    一、业务分析能力

    二、缺陷洞察能力

    三、团队协作能力

    四、专业技术能力

    五、逻辑思考能力

    六、问题解决能力

    七、沟通表达能力

    八、宏观把控能力


    借楼发个招聘信息:
    【2021 MEGQA-用户质量效能部校园提前批开始啦】
    工作职责:
    -负责百度核心产品的测试工作,如信息流、搜索、百度APP、小程序、好看视频、贴吧等
    -参与产品需求、系统设计和程序代码的评审工作并提出改进意见
    -评估项目质量风险并制定项目测试方案,设计并执行测试用例,跟踪定位产品软件中的缺陷或问题,保证项目质量和进度
    -根据产品和项目特点,提出合理的自动化解决方案,并负责产品线特色化的测试框架和测试工具,运用技术手段提升代码交付的质量和效率
    -参与互联网产品整个工程生产、发布过程中的技术创新,包括研发敏捷研发工具、线上监控系统、性能测试和监督工具等精确评估线上系统表现,以创新的工作模式提升产品的用户价值
    职位要求:
    -计算机相关专业,本科及以上学历
    -能熟练地应用以下一门或几门技术进行相关开发:C/C++/Java/object-c、Linux/Unix Shell、Perl/Python/PHP、JavaScript/Html/Ajax、MySql/Oracle及相关数据库技术等
    -具备快速的产品及业务学习能力,敏捷全面的逻辑思维能力
    -有责任心、敢于担当,工作积极主动,具备良好的团队合作精神,能融入多功能团队并与其他部门同事进行良好的沟通及合作
    -热爱互联网,对互联网相关业务或技术充满好奇及热情;在软件测试领域,对发现、分析及解决问题的工作有浓厚兴趣

    感兴趣的同学可以将简历投递至liujunping@baidu.com

     

    ========================================================================================

    一些视频链接:我这有一些软件测试的视频,你可以点开看看。

    转行互联网测试需要哪些技能? - 假装在测试的回答 - 知乎

    作为一名软件测试人员,有哪些网站是你应该多多关注的,哪些书籍是你必须要看的? - 假装在测试的回答 - 知乎

    一、白盒与黑盒测试什么区分

    1、黑盒测试

    黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

    2、白盒测试

    白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

    “白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。

    软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:
    – 对程序模块的所有独立的执行路径至少测试一次;
    – 对所有的逻辑判定,取 “ 真 ” 与取 “ 假 ” 的两种情况都至少测试一次;
    – 在循环的边界和运行界限内执行循环体;
    – 测试内部数据结构的有效性,等。
    具体包含的逻辑覆盖有: – 语句覆盖 – 判定覆盖 – 条件覆盖 – 判定-条件覆盖 – 条件组合覆盖 – 路径覆盖。

    3、白盒测试&黑盒测试对比

    白盒测试技术 (White Box Testing) : 深入到代码一级的测试,使用这种技术发现问题最早,效果也是最好的。该技术主要的特征是测试对象进入了代码内部,根据开发人员对代码和对程序的熟悉程度,对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,在 JAVA 平台使用 Xunit 系列工具进行测试, Xunit 测试工具是类一级的测试工具对每一个类和该类的方法进行测试。

    黑盒测试技术( Black Box Testing ):黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面:

    1正确性 (Correctness) :计算结果,命名等方面

    2可用性 (Usability) :是否可以满足软件的需求说明。

    3边界条件 (Boundary Condition) :输入部分的边界值,就是使用一般书中说的等价类划分,试试最大最小和非法数据等等。

    4性能 (Performance) : 正常使用的时间内系统完成一个任务需要的时间,多人同时使用的时候响应时间在可以接受范围内。 J2EE 技术实现的系统在性能方面更是需要照顾的,一般原则是 3 秒以下接受, 3-5 秒可以接受, 5 秒以上就影响易用性了。如果在测试过程中发现性能问题,修复起来是非常艰难的,因为这常常意味着程序的算法不好,结构不好,或者设计有问题。因此在产品开发的开始阶段,就要考虑到软件的性能问题

    5压力测试 (Stress) : 多用户情况可以考虑使用压力测试工具,建议将压力和性能测试结合起来进行。如果有负载平衡的话还要在服务器端打开监测工具 , 查看服务器 CPU 使用率,内存占用情况,如果有必要可以模拟大量数据输入,对硬盘的影响等等信息。如果有必要的话必须进行性能优化 ( 软硬件都可以 ) 。这里的压力测试针对的是某几项功能。

    6错误恢复 (Error Recovery) :错误处理,页面数据验证,包括突然间断电,输入脏数据等。

    7安全性测试 (Security) :这个领域正在研究中,防火墙、补丁包、杀毒软件等的就不必说了,不过可以考虑。破坏性测试时任意看了一些资料后得知 , 这里面设计到的知识 内容可以写本书了 , 不是一两句可以说清的,特别是一些商务网站,或者跟钱有关,或者和公司秘密有关的 web 更是需要这方面的测试,在外国有一种专门干这一行的人叫安全顾问,可以审核代码,提出安全建议,出现紧急事件时的处理办法等,在国内没有听说哪里有专门搞安全技术测试的内容。

    4、白盒测试&黑盒测试详细介绍

    黑盒测试

      · 等价类划分方法
      · 边界值分析
      · 错误推测
      · 因果图方法
      · 判定表驱动分析方法
      · 正交实验设计方法:取正交的测试用例组合
      · 功能图分析方法
    1)等价类划分:
      把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一个子集中选取少数具有代表性的数据作为测试用例,该方法是一种重要的,常用的黑盒测试用例设计方法。等价类划分可有两种不同的情况:有效等价类和无效等价类。
      有效等价类:对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
      无效等价类:与有效等价类的定义相反。
    2)边界值分析法:
      边界值分析方法是对等价类划分方法的补充。长期的测试工作经验告诉我们,大量的错误是发生在输入或者输出范围的边界上,而不是发生在输入输出范围的内部,因此针对各种边界情况设计测试用例,可以查出更多的错误。
      使用边界值分析方法设计测试用例,首先应确定边界情况,通常输入和输出等价类的边界,就是应着重测试的边界情况,应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取边界类中的典型值或任意值作为测试数据。
    3)错误推测法:
      基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
      列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如,在单元测试时列出的许多在模块中常见的错误,以前产品测试中经常发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为零的情况;输入表格为空格或者输入表格只有一行,这些都是容易发生错误的情况,可选这些情况下的例子作为测试用例。
    4)因果图方法:
      前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系。考虑输入条件之间的相互组合,可能会产生一些新的情况,但要检查输入条件的组合意识一件容易的事情,因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图。
    因果图方法最终生成的是判定表,它适合于检查程序输入条件之间的各种组合情况。
    利用因果图生成测试用例的基本步骤:
      (1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.
      (2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.
      (3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.
      (4) 把因果图转换为判定表.
      (5) 把判定表的每一列拿出来作为依据,设计测试用例.
      从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.
      前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.
    5)判定表通常由四个部分组成.
      条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.
      动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.
      条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.
      动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.
      规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.
      判定表的建立步骤:(根据软件规格说明)
      ①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有 种规则.
      ②列出所有的条件桩和动作桩.
      ③填入条件项.
      ④填入动作项.等到初始判定表.
      ⑤简化.合并相似规则(相同动作)
      B. Beizer 指出了适合使用判定表设计测试用例的条件:
      ①规格说明以判定表形式给出,或很容易转换成判定表.
      ②条件的排列顺序不会也不影响执行哪些操作.
      ③规则的排列顺序不会也不影响执行哪些操作.
      ④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.
      ⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.

    白盒测试

    白盒测试的方法:总体上分为静态方法和动态方法两大类。

    静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

    动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后 , 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

    本文介绍六种白盒子测试方法:(强度由低到高)语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

    1)所谓语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖率的公式可以表示如下:

    语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%

    2判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支(t or f)至少经历一次

    [优点]:判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例。

    [缺点]:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

      例如:

      int a,b;

      if(a || b)

      执行语句1

      else

      执行语句2

    要达到这段程序的判断覆盖,我们采用测试用例:1)a = true , b = true ;2)a = flase, b = flase

    3条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支

    条件覆盖要检查每个符合谓词的子表达式值为真和假两种情况,要独立衡量每个子表达式的结果,以确保每个子表达式的值为真和假两种情况都被测试到。

    4 判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。

    5) 条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。

    6路径覆盖:是每条可能执行到的路径至少执行一次;

     说明:其中语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。

    举例:

    if A and B then Action1

    if C or D then Action2

    1)语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。

    2)分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。

    3)条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,所以上例中可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。

    4) 路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。

    二、测试相关经验

          测试流程方面我的组长是一位经验丰富的老测试了,到目前已经9年了,我在她的带领下,从最开始的分析需求开始,逐步地跟着项目走完整个测试流程,包括纯手工测试,包含了自动化的测试流程,包含了性能测试的测试流程,直至每一个测试报告的最终形成。使我完全理解了一个科学,正确,严谨,正规化的测试流程。

           测试方法方面我个人特别注重理论知识和实际操作相结合,在理论知识方面,我主要是购买一些书籍,从最基础的软件测试理论到各种各样的程序设计语言,再到自动化测试,包括Java语言的自动化测试,Python语言的自动化测试,到性能测试的各项性能指标的分析,数据分析都是我自己提供书籍上的知识来获得的,在淘宝上面有各种各样的书籍和视频教程,我基本上都看了个遍,到目前为止,我的各种学习资料用了1T的移动硬盘来装,书籍也有一百多本了,在实际操作方面,我主要向我的组长请教,她是因为女生,特别注重细节,当我有不懂得地方就去请教她,我会问她为什么要这么操作,然后我会对比理论和实际的区别,为什么有这种区别。就这样我就通过一个个的项目来夯实理论知识和实际操作,每一次做完项目我都会进行一个总结,自己学到了哪些新的技术和方法?遇到了哪些新的问题?以后再遇到怎么处理?

           新的知识补充方面:随着项目的不同,所运用的知识也不同,每一次学习不同的知识既是工作项目的需要,也是自己学习新知识的契机,比如说学习python语言,本来我们测试人员是不用写代码的,或者说可以用Java写,但是目前市面上都在用python语言来写自动化测试脚本,肯定是有它的道理的,那么我当时给自己的目标并不是仅仅为了满足写自动化脚本那么简单,我还想把python语言全部学会,我下定决心之后就立即着手执行,因为我本来就是开发出身,会代码,所有的语言都是相通的,都有变量,流程控制语句,和方法三大内容。JavaScript和Python都是弱类型,解释性的语言,所以在学习的时候我就在对比起来学习,很快学会了这门语言,所以我个人觉得,不管做什么,我们不仅仅要会用它,而且要知道它为什么这样用?最好是能够精通,对我们的测试工作是十分有利的。

           知识结构方面我们作为一个测试人员,不仅仅要做好本职工作,把自己的测试技术练好,而且还要一个广泛涉猎,对前台,后台,硬件知识,网络知识都应该去学习,对我们快速定位bug,提出有效针对性的修改硬件非常有好处,如果有条件的话,尽量向全栈发展。开发的发展方向是向深度和精度发展,而测试是一个向广度发展的岗位,需要不同的知识来融合,因为我们测试的是一个集成的,有多种技术融合而成的系统项目,就需要我们广泛涉猎和学习,所以从职业规划和寿命度上面来看,测试的工作也是非常的不错,所以不断的学习才是硬道理!

           团队的氛围方面我本人是军人出身,历来重视团结的重要性,所以和开发人员,测试人员,需求人员以及上级相处要从大局出发,我们的每一个人员都是一个项目不可或缺的一份子,必须团结起来,才能为最后产品的顺利交付打好基础条件,所以同事之间的相处是最需要拿捏分寸的,特别是开发人员,人和人都是相互的,只要讲道理,相信别人是会理解的,总之一句话:从整个项目的大局出发,把工作做好。

           回首测试经历,我总结了以下几点:

           1.不断学习,不能丧失对新知识学习的渴望,对旧的知识形成体系,夯实基础,测试理论知识基本上这么多年以来没有变过,主要是一些方法和工具的改变和升级,广泛涉猎相关知识,为测试工作服务;

           2.搞好内部团结,建立起亲密的同事关系,不仅是对个人社交能力还是对自己的工作上的能力都是一个提升,都是百利而无一害的!

    三、测试能力培养

    一、业务分析能力

    1.分析整体业务流程

    不了解整个公司的业务,根本就没办法进行测试

    2.分析被测业务数据

    了解整个业务里面所需的数据有哪些?哪些是需要用户提供的?哪些是自己提供的?有哪些可以是假数据?有哪些必须是真数据?添加数据的时候可以用哪个库?

    明白了整个软件的数据库架构,才能知道哪一个数据是从哪一个表里头带出来的,它的逻辑是什么,有没有连带关系。

    3.分析被测系统架构

    用什么语言开发的?用的是什么服务器?测试它的话需要用什么样的环境进行测试?整体的测试环境是什么样的?

    如果缺少了,需要进行环境搭建,架构搭建。一般去一家新公司之后,架构是搭建好的,了解它即可,熟悉之前的这些老员工们使用什么样的架构去做的。

    4.分析被测业务模块

    整个软件有哪些模块,比如说首页面、注册页面、登录页面、会员页面、商品详情页面、优惠券页面等等

    明白有多少个模块需要测试,每个模块之间的连带关系,进而怎样进行人员分工

    5.分析测试所需资源

    我需要几台计算机,需要几部手机,手机需要什么样的系统,什么样的型号。

    比如测一个网站的性能的时候,电脑的配置达不到测试并发5000人的标准,要么升级电脑的硬件配置,要么多机联合,多机联合时需要几台电脑,都需要提前筹划。

    6.分析测试完成目标

    我的性能目标是什么样的?我的功能目标是什么样的?我要上线达到的上线标准是什么样的?

    性能目标,比如我要达到并发5000人的时候,CPU占用率不能高于70%,内存占用率不能高于60%,响应时间不能超过5秒

    功能目标,比如整体的业务流程都跑通,所有的分支流程都没有问题,所有的接口都能够互相调用,整体的UI界面没有问题,兼容性没有问题等

    把这些问题都弄清楚,测试的思路会非常的清晰

    二、缺陷洞察能力

    1.一般缺陷的发现能力

    至少你要满足一般缺陷的发现能力,这个是最基本的,如果要连最简单的一般的缺陷都发现不了的话,别说优秀测试工程师了,你说你是测试我都不信

    2.隐性问题的发现能力

    在软件的测试过程当中有一些缺陷藏的比较深,有的是性能方面的问题,有的是功能方面的问题,它需要有一些设定特定的条件的情况下才会出现这样的问题。

    比如说买双鞋必须选择的是什么品牌,必须选择是红颜色,必须选择44号,而且必须选择用特定的支付方式才会出现这样的bug的时候,那么这种就属于特别隐性的bug,对于这样的问题的发现能力一定要比别人更强,要找到一些别人可能发现不了的bug

    3.发现连带问题的能力

    当发现了一个缺陷之后,能够想到通过这个缺陷可能会引发其他哪个地方出现问题,这就叫做连带的问题。而不是说发现这一个bug之后提了这一个就算完了,一定要有一个察觉,可能其他地方也存在这样的问题。

    4.发现问题隐患的能力

    有些软件里边可能有一些操作模块,或者是代码写的接口,表面上没有什么问题,但是它是有隐患的,比如说这个接口写的不稳定,当他传的数据有一些问题的时候,可能它最后返回的结果就是报错就是报404或者报乱码。

    5.尽早发现问题的能力

    如果你只能停留在界面级别的话,那你根本就没有办法达到尽早发现问题的这个能力

    你必须要等到前端人员把每个界面都做好了之后才能进入测试,而我能比你早一个月进入测试了,然后我比你结束测试时间快一个月,而你又比我晚一个月,那么咱俩的薪资一下就拉开了

    6.发现问题根源的能力

    需要知道这个缺陷它到底是由什么原因产生的,是属于什么类型的缺陷,是ui前端人员做的问题,还是后台接口人员做的问题?

    不仅要找到这个bug,还要知道这个bug产生的原因,这样的测试人员是非常棒的,而且很是受人尊敬,提bug的方式也就不一样了

    三、团队协作能力

    1.合理进行人员分工

    合理的进行人员分工是提高效率的重要保证

    2.协助组员解决问题

    比如说测试在赶进度,或者这个软件项目的质量把控是一个团队来把控的,协助组员解决问题就显得尤为关键

    3.配合完成测试任务

    一个团队里边的人员分工,他们的任务都是不一样的,这就是咱们说的配合。你的东西做完了,要轮到我了,我的性能测完了之后该轮到你了,所以整个的一个流程下来之后,大家应该是各司其职,配合得非常紧密的一个过程

    4.配合开发重现缺陷

    我给你提bug,你改我的bug,咱们的目的只有一个,就是让这个软件变得更好,所以在这样的情况下,咱们就一定要配合开发

    5.督促项目整体进度

    既然是一个团队协作的过程,就一定要互相的去督促对方,包括督促开发去改bug,因为开发人员他们有时候工作很忙,他们不知道要先改哪些问题,要后改哪些问题,但是往往有一些缺陷,它影响了测试的这个时间,影响了测试的进度,那么这个时候就需要测试员去督促开发人员,让他尽快的去解决你棘手的问题。这个东西能够提高咱们的测试效率

    6.出现问题勇于承担

    愿意背锅的最后都成为了领导,不愿意背锅的最后依然是员工

    四、专业技术能力

    1.掌握测试基础知识

    基础知识就是根基,根基打好了,你才能够更有效地往后期发展,也就是为了以后的学习做一个铺垫。如果根基都没打好,功能测试不会,就想直接学性能,那性能是做不好的

    2.娴熟运用测试工具

    熟悉工具和熟练使用工具完全是两个概念,熟悉工具基本上等同于不会,遇到过很多简历上写会使用什么什么工具,都没有实际能力。比如loadrunner只会一个简单的录制,增强一下脚本,觉得会用了,那知识会用了1/5,其他4/5 都不会。

    3.了解工具操作原理

    它是怎么样给服务器发送请求的,是用什么样的方式去发送请的,是用什么样的方式去监控的,它的操作原理是什么样的,咱们要把这件事情搞清楚,这样的话能有助于更好的去使用这些东西。包括一些请求的协议,每个协议代表什么意思,它是用来干什么的。

    4.自主完成测试任务

    一定要能够自己完成一个独立的内容,独立的工作,这件事情领导你交给我好了,放心我能给你搞定,要的是这样的人

    5.找出问题出现原因

    找出缺陷的时候,不仅要看它的表面,还要看它的本质

    6.提供问题解决方案

    发现问题不是能力,发现问题并提出解决方案才是真的能力

    7.提供完整测试报告

    测试报告能够说明你表达的清不清楚?领导能不能看懂?还有就是能不能够把你整个测试的过程给它梳理得非常详细,人家能够通过你的报告,能够了解到整个的项目的情况,而不是只了解一个片面的情况

    8.了解相关技术领域

    触类旁通

    五、逻辑思考能力

    1.判断逻辑的正确性

    面试官也经常会给测试人去出一些逻辑题,逻辑题能够分析出来你这个人思维有没有?活跃不活跃?还有他的维度,包括他想的问题的全面性,都能够判断得出来。

    比如说去买一样商品,它的里边逻辑就会经常会出现很多问题,比如说它的会员的级别,什么样的级别去买什么样的商品,它的价格不一样,什么情况下会给优惠券,什么样的情况下不给优惠券?达到多少钱的情况下才能够使用优惠券?如果说这里边的逻辑出现了问题的话,那么整个的业务不用再测了

    2.对可行性逻辑分析

    要去测一个网站的逻辑的时候,一定要先思考这一个业务流程可能会涉及到哪些逻辑,这些逻辑哪些是可行的,有些是正向逻辑,有些是逆向逻辑,都要考虑全面,而不是说只是把正向的逻辑测试全面了,逆向逻辑不考虑。其实往往更容易出错的地方就是逆向逻辑

    3.思维导图梳理思路

    思维导图工具能够起到什么作用,能够让你更有效的进行测试,能够让你的思路更清晰

    4.站在客观角度思考

    去测试的时候,不要仅仅只是站在测试人员的角度上去对整个网站进行测试,还更多的要站在用户的角度,要替用户考虑

    六、问题解决能力

    1.技术上的问题

    把自己的个人能力提升起来,多跟别人虚心请教,多去自己想办法解决问题

    2.工作中的问题

    在任何的企业里边去工作,肯定会遇到一些工作当中的一些不愉快的事情,而不是什么事情都会让你很顺心。所以要去处理工作上的一些不顺心的事情,不要把它带到你的工作上,或者是你的生活上,尽可能的去跟别人沟通,去解决这个工作上遇到的麻烦

    3.同事间的问题

    在工作当中可能会涉及到跟开发人员的沟通,跟产品人员的沟通,跟ui人员的沟通,跟这三方的人员去沟通的时候,就要用不同的沟通方式

    4.领导层的问题

    如果你觉得你的领导不好,或者说你觉得对你的领导一些建议,不要的去跟同事之间去说他坏话或者怎么样的,领导需要的是解决问题的人,而不是制造问题的人

    七、沟通表达能力

    1.和技术人员的沟通

    跟开发人员阐述缺陷时要简洁明了、清晰易懂。当发现严重缺陷时,也不要大惊小怪,要站在开发人员的角度思考如何解决问题。而不是踩在开发头上,炫耀自己发现问题的能力。

    2.和产品人员的沟通

    当对产品提出意见时,要站在用户的角度去说明自己的想法,而不要主观认为不好而要求产品进行修改。

    3.和上级领导的沟通

    跟领导沟通时要有大局观,不能只考虑自己部门的情况。并且与领导沟通时,尽量直奔主题,不要拐弯抹角,当与领导意见不一致时,也不要直接反驳,应该先给予认可,再阐述自己的想法。

    4.在集体会议中沟通

    在集体会议中不要一味的突出自己的个人能力,不要当话痨,也不要默默无闻。适当的提出一些自己的见解,有助于让大家更加重视你的存在。切记不要在多人会议中,去指责别人和推卸问题。各个部门的同事,都要面子~

    5.与下级员工的沟通

    与下级沟通时不要摆高姿态,不要让下级产生畏惧感,应该更多的为下级解决问题。服务好部门的同事,才能更好的产生凝聚力。

    八、宏观把控能力

    1.有效控制测试时间

    测试周期的时间控制,应当采取多种方法去衡量,例如人员能力,人员数量,项目复杂程度,同类项目的测试经验等多方面去衡量。

    2.有效控制测试成本

    测试成本指的是人员成本跟时间成本,不要浪费每个人的时间跟劳动力,要让每个人充分发挥最大的价值。

    3.有效制定测试计划

    测试计划对于一个项目是核心关键,它的存在为了让测试进行中有依据可查。所以测试计划,一定要切合实际情况,要经过思考和衡量最后得出计划安排。

    4.有效控制组员情绪

    组员的情绪可以直接影响测试进度跟测试的质量,当有组员出现思想问题时,应当及时沟通,采取一些必要的措施去解决问题。而不能装看不见。

    5.有效进行风险评估

    任何项目在进行期间都存在许多潜在的风险,例如,人员离职,生病请假,业务变更,需求变更,服务器或其他组件故障等。应当提前做出相应的解决方案,以免到时候手忙脚乱。

    6.有效控制测试方向

    测试的方向是指测试的目标和测试的范围,很多项目的测试是有针对性的,例如性能测试,所以在测试中,一定要随时清楚测试的目标和目的是什么,以免把时间浪费在无关紧要的业务上。

    展开全文
  • 软件测试工程师经典面试题

    万次阅读 多人点赞 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并不能完全感受你所遭遇到的,所以还是请控制好自己的负面情绪。

    展开全文
  • 1、本课程针对JMETER软件性能测试八大组件:配置元件、前置处理器、定时器、sampler(采样器)、后 置处理器、断言、监听器以及逻辑控制器等内容全方位讲解。 2、参数化、badboy测试脚本开发...
  • 测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容
  • 软件测试_笔记(完整版)

    万次阅读 多人点赞 2018-07-02 08:51:28
    广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果和实际结果间的差别 为什么要做软件测试 发现软件缺陷 功能错 功能遗漏 超出需求部分(画蛇添足) ...
  • 软件测试_自动化测试

    千次阅读 2019-11-19 13:39:29
    一切由计算机系统自动完成的测试任务都已经由计算机系统或软件工具、程序来承担并自动执行 自动化测试的特点 运行速度快 测试结果准确 高复用性 永不疲惫 可靠 能力 自动化测试的好处 测试周期短 更高质...
  • 性能测试,又称为多用户并发性能测试,通过模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,压力测试和负载测试都属于性能测试。 二、压力测试(Stress Test) 压力测试,又叫强度测试,...
  • 软件测试

    千次阅读 多人点赞 2019-10-10 17:39:15
    测试层次和类型:单元测试、集成测试、系统测试、验收测试等; 测试方式:手工 vs. 自动化的,静态 vs. 动态,主动的 vs. 被动的 自动化测试(含测试工具),包括其策略、自动化测试框架 测试技术: 面...
  • 游戏测试_怎么样测试游戏(入门)

    万次阅读 多人点赞 2018-11-15 17:04:19
    游戏测试测试的一种,逃不开软件测试的魔爪。 所以—— 游戏测试的目的:发现游戏中存在的缺陷。 游戏测试分两种:大型网络游戏和手游。 大型网络游戏网游 一般大型的网络游戏中测试都分很多个阶段: 前期...
  • 系统测试方案

    千次阅读 2018-12-07 17:29:12
    测试计划是从管理角度规划和控制测试活动。... 系统测试方案的核心内容: 系统测试策略选取 系统测试子项划分 测试策略(测试策略是如何用尽量少的资源来尽量好的完成测试): 单元测试策略(对应多...
  • 2019年互联网企业软件测试面试题(常考)

    万次阅读 多人点赞 2019-04-22 09:32:26
    很多软件测试工程师在面试互联网企业的时候都会遇到考官给的几道面试题,这也反应了测试工程师对企业的重要性,今天传智播客整理了一份...主要查看软件在不同操作系统、浏览器、数据库中运行是否正常。 2、你能不能...
  • 负载测试和压力测试

    千次阅读 2011-07-25 23:33:36
    在一些公司的笔试题目中,喜欢问什么是负载测试,什么是压力测试,和两者的区别,下面做一个解释:负载测试:是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大...
  • 压力测试工具

    千次阅读 2018-12-20 16:06:28
    目录 1 性能测试... 2 2 压力测试(Stress Test)... 2 2.1 网站测试... 2 2.2 系统测试要求... 3 3 测试工具... 3 3.1 Webbench. 4 3.1.1 Ubuntu 下载安装... 5 3.1.2 ...
  • 最全渗透测试工具讲解

    千人学习 2018-08-31 08:44:31
    渗透测试工具详解视频教程,该课程分为三个部分,1、针对web扫描工具介绍,2、针对抓包工具介绍,3、针对信息探测介绍。...让小白测试人员在面对一个web系统时有一个基本的思路,方便后续深入学习web渗透。
  • Web测试和App测试区别

    万次阅读 多人点赞 2018-10-27 14:14:40
    从技术上来说,WEB测试和APP测试测试类型也基本相似,都需要进行功能测试,性能测试,安全性测试,GUI测试测试类型。他们的主要区别在于具体测试的细节和方法有区别,比如:性能测试,在WEB测试只需要测试响应...
  • JMeter性能测试,完整入门篇

    万次阅读 多人点赞 2018-06-20 08:42:04
    原文转自:...相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整...
  • 单元测试时针对每个单元的测试,是
  • APP要做哪些测试?APP测试要注意哪些问题?

    千次阅读 多人点赞 2019-08-02 16:23:38
    而针对手机应用软件APP的系统测试,我们通常从如下几个角度开展:功能测试(流程测试、功能点测试)、兼容性测试、交叉测试、安装卸载测试(包括应用的升级)、压力测试(接口压力测试)、安全测试等等。 一、APP要做哪些...
  • 软件测试面试题(面试前准备篇)

    万次阅读 多人点赞 2019-09-27 10:42:37
    目录 一、问题预测 让简单介绍下自己(每次面试开场) 让说下自己会的内容 看了哪些书籍(有问到) ...了解过哪些技术博客/论坛(有...知道哪些Bug系统 9.测试用例的基本要素是? 二、介绍一下公司项目 三、技能...
  • 软件测试面试的自我介绍

    万次阅读 多人点赞 2019-04-13 18:27:27
    我之前主要做过的是功能测试,web自动化测试、app专项测试、接口测试、也有用过Jmeter做过一些性能方面的测试。我对于缺陷管理工具比如禅道,版本控制器git与svn能够熟悉应用。数据库、linux、Fiddler、Jmeter这些...
  • 系统测试

    万次阅读 2018-01-19 10:56:10
    系统测试 系统测试是将已经继承好的软件系统,作为计算机系统的一个元素,与计算机硬件、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。...
  • 软件测试面试题合集【乐搏TestPRO】

    万次阅读 多人点赞 2019-09-10 18:04:37
    又到了金九银十跳槽求职旺季。...以下是“大佬”本人从乐搏学院VIP学员面试经验中收集的,然后分门别类整理了这套面试题,很具备参考性,毕竟都是企业真实面试题目。 接下来,针对以下知识类型列出具体的面试点(其中...
  • 游戏测试一年半总结

    万次阅读 2018-10-13 20:11:20
    游戏测试一年半总结 决定 2015.06毕业后在一家做移动APP的项目里担任软件测试工程师。前期一年工作学习都在有序的进行,对于老板的每次画饼都听的津津有味。项目在后期一个功能需求提出都耗时一两个月,工作生活太...
  • 软件测试-系统测试和非系统测试

    千次阅读 2019-11-26 17:32:52
    title: 软件测试_系统测试和非系统测试 date: 2019-11-26 16:22:00 categories: 软件测试 tags: 系统功能测试和非系统功能测试 功能测试 依据产品设计规范说明书完成对产品功能的操作,以验证系统是否满足用户...
  • 软件测试简历,这一点你是否漏掉

    万次阅读 多人点赞 2017-11-29 21:04:11
    几乎所有的测试简历都在长篇大论谈如何做测试,参加过多少项目的测试测试过程是怎么样的,测试如何管理,会黑盒、白盒、灰盒、彩盒.....、会写方案、测试用例。从这些内容中我无法看出你会什么,技术上哪些是你的...

空空如也

1 2 3 4 5 ... 20
收藏数 1,396,768
精华内容 558,707
关键字:

系统测试