Giter VIP home page Giter VIP logo

software-testing's Introduction

一、软件测试基础知识

1.分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试。

(1)单元测试:最小模块的测试,可以是一个函数或子程序,一般由开发者在系统开发过程中进行执行。
单元测试针对每一个程序模块进行正确性检验,检查各个程序 模块是否正确地实现了规定的功能。
单元测试是测试的第一步,其依据是详细设计,单元测试应对模块内所有重要的控制路径设计测试用例,
以便发现模块内部的错误。
(2)集成测试:被测试系统的所有组件都集成在一起,找出被测试系统组件之间关系和接口中的错误。
该测试一般在单元测试之后进行。
——自顶向下增式测试
——自底向上增式测试(常用):
(3)系统测试:是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、
某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行全面的功能覆盖。
(确认测试:由集成测试进入系统测试之前,需要对软件是否可以进入系统测试进行评价,这个过程称为确认测试)
(4)验收测试:
——Alpha testing (α测试),是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境
下进行的受控测试,Alpha测试不能由程序员或测试员完成。(受控的场所)
——Beta testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在
测试现场,Beta测试不能由程序员或测试员完成。(不受控的场所)
(5)回归测试:在发生修改之后重新测试先前的测试用例以保证修改的正确性。理论上,软件产生新版本,都要进行
回归测试。

2.请说一说黑盒与白盒的测试方法。

(1)黑盒测试也称功能测试或数据驱动测试,它是在已知产品所具有的功能,通过测试来检测每个功能是否都能正常
使用。在测试时,把程序看作一个不能打开的黑盒子,在不考虑程序内部结构和内部特性的情况下,测试者在程序接口
进行测试。
   黑盒法着眼于程序外部结构,不考虑程序内部逻辑,针对软件界面和软件功能进行测试。常用的黑盒测试方法有:
 等价类划分法;边界值分析法;因果图法;场景法;正交实验设计法;判定表驱动分析法;错误推测法;功能图分析法
 (2)白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部如何进行工作的测试。它根据程序的控制结构设计
 测试用例,主要用于软件或程序验证。
   常用的白盒测试法:
   静态测试:不用运行程序的测试。
   动态测试:需要执行代码,通过运行程序找到问题。
   白盒测试中的逻辑覆盖覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种
   覆盖标准发现错误的能力呈由弱到强的变化。

3.软件测试的一般流程是怎么样的?

(1)项目立项后,参加需求评审。
(2)根据需求文档制定测试用例,然后进行用例评审。
(3)项目提测后,执行用例,记录问题,及时有效地跟进问题的解决情况。
(4)测试环境测试通过后,产品进行验收测试。

4.设计测试用例的方法有哪些?

最常用的3种 等价类划分、边界值、场景法 
(1)等价类划分 分为有效等价类和无效等价类,将测试的范围划分成几个互不相交的子集,从每个子集选出若干个有代表性的值作为测试用例。 
(2)边界值:因为大多数错误都在输入输出的边界上,选取正好等于、刚刚大于、刚刚小于边界的值,如果边界附件取值不会导致程序出错,那么
其他取值出错的可能性也就很小。 
(3)场景法:划分不同的场景,然后逐一进行验证。

5.软件测试工程师在一个团队中,都需要做什么,有什么价值?

(1)在产品需求会上,可以站在用户的角度,提一些贴合用户需求的建议。
(2)测试阶段,根据自己对项目的了解和专业的测试技能 尽可能在项目上线前测出更多问题,保证产品质量 
(3)对测试过程中出现的问题 合理有效的进行风险评估。
(4)对质量严格把关 测试不通过的一定不能发布生产。

6.请说一下手动测试和自动化测试的优缺点。

(1)手动测试的缺点:
重复的手工回归测试,代价昂贵、容易出错;
依赖于软件测试人员的能力;
(2)手动测试的优点:
测试人员具有经验和对错误的猜测能力;
测试人员具有审美能力和心理体验;
测试人员具有是非判断和逻辑推理能力。
(3)自动化测试的优点:
对程序的回归测试更方便;
可以运行更繁琐的测试;
可以执行手工测试困难或不可能完成的测试,比如对于大量用户的测试,可以模拟多用户;
更好地利用资源;
增加软件信用度,因为是自动执行的,不存在执行过程中的疏忽和错误,完全取决于测试的设计质量。
(4)自动化测试的缺点:
不能取代手工测试;
手工测试比自动化测试发现的缺陷更多;
对测试质量的依赖性极大;
测试自动化不能提高有效性;
测试自动化可能会制约软件发展,由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。
工具本身并无想象力。

7.请回答集成测试与系统测试的区别,以及他们的应用场景主要是什么?

区别:
(1)计划和用例编制的先后顺序:从V模型来讲,在需求阶段就要制定测试计划和用例,HLD的时候做集成测试计划
和用例,有些公司的具体实践不一样,但顺序肯定是先做系统测试计划用例,再做集成。
(2)用例的粒度:系统测试用例相对很接近用户接受测试用例,集成测试用例比系统测试用例更详细,而且对于接口
部分要重点写,毕竟要集成各个模块或者子系统
(3)执行测试的顺序:先执行集成测试,待集成测试出的问题修复后,再做系统测试。
应用场景:
集成测试:完成单元测试后,各模块联调测试;集中在各模块的接口是否一致、各模块间的数据流和控制流是否按照设计
实现其功能、以及结果的正确性验证等等;可以是整个产品的集成测试,也可以是大模块的集成测试;集成测试主要是
针对程序内部进行测试,特别是程序之间的接口进行测试。集成测试对测试人员的编写脚本的能力要求比较高。测试方法
一般选用黑盒测试和白盒测试相结合。
系统测试:针对整个产品的全面测试,既包含各模块的验证性测试和功能性测试,又包括对整个产品的健壮性、安全性、
可维护性及各种性能参数的测试。测试方法一般都使用黑盒测试法。

8.软件测试的核心竞争力是什么?

测试人员的核心竞争力在于提早发现问题,并能够发现别人无法发现的问题。
(1)早发现问题:问题发现的越早,解决的成本越低。如果一个需求在还未实现的时候就能发现需求的漏洞,那么这种
问题的价值是最高的。
(2)发现别人无法发现的问题。

9.你觉得自动化测试有什么意义?都需要做什么?

自动化测试的意义在于:
(1)可以对程序的新版本自动执行回归测试;
(2)可以执行手工测试困难或者不可能实现的测试,如压力测试,并发测试;
(3)能够更好的利用资源,节省时间和人力。
执行自动化测试之前首先判断这个项目适不适合自动化测试,然后对项目做需求分析,指定测试计划,搭建自动化测试框架,
设计测试用例,执行测试,评估。

10.测试用例是什么?如何写测试用例?

测试用例:为了测试某个产品,编制的一组测试输入、执行条件以及预期结果。
设计有效的测试用例:
(1)明确需求,清晰的知道需求要实现哪些功能;
(2)根据需求文档,拆分出功能点和测试要点;
(3)详细地梳理业务需求,设计不同的业务场景,尽可能多的覆盖,尤其重要的逻辑,颗粒度要精细;
(4)具体逻辑的设计方法,遵循边界分析法,出问题最多的就在边界值,然后用等价类划分方法补充一些测试用例;
(5)UI测试,界面元素测试+样式+操作控件设计+浏览器兼容性相关的用例
(6)时间充足的情况下,设计接口的测试用例,从而保证接口数据的用等价类划分方法补充一些测试用例完整性和正确性。

11.你觉得测试项目的具体工作是什么?

(1)搭建测试环境
(2)撰写测试用例
(3)执行测试用例
(4)写测试计划,测试报告
(5)测试,并提交bug表单
(6)跟踪bug修改情况
(7)执行自动化测试,编写脚本,执行,分析,报告
(8)进行性能测试,压力测试等其他测试,执行,分析,调优,报告

software-testing's People

Contributors

jay711 avatar

Stargazers

AlexChen avatar

Watchers

James Cloos avatar

Forkers

pinkuburu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.