测试怎么做 如何做好app的测试工作

作者&投稿:储庆 (若有异议请与网页底部的电邮联系)
最近,很多小伙伴正在面试新工作做准备。所以我整理一下软件测试的基本工作流程和一些测试用例编写方法。大致内容如下,希望这些内容对大家有帮助。

首先,作为测试人员需了解业务,分析需求点

为什么测试人员要参加需求分析?也就是进行测试需求分析的目的是什么?

第一、把用户需求转化为功能需求

1)对测试范围进度量

2)对处理分支进行度量

3)对需求业务的场景进行度量

4)明确其功能对应的输入、处理和输出

5)把隐式需求转变为明确

第二、明确测试活动的五个要素

测试需求是什么、决定怎么测试、明确测试时间、确定测试人员、确定测试环境、测试中需要的技能,工具以及相应的背景知识,测试过程中可能遇到的风险等等。测试需求需要做到尽可能的详细明确,以避免测试遗漏和误解。

那么,接下来怎么进行测试需求分析?

1)确认功能

(业务功能、辅助功能、数据约束、易用性需求、编辑约束、参数需求、权限需求、性能约束)

1、业务功能:与用户实际业务直接相关的功能或者细节;

2、辅助功能:辅助完成业务功能的一些功能或者细节,例如:设置过滤条件;

3、数据约束:功能的细节,主要是用于控制在执行功能时,数据的显示范围,数据之间的关系等;

4、易用性需求:功能的细节,产品中必须提供,便于功能操作使用的一些细节,例如:快捷键等;

5、编辑约束:功能的细节,在功能执行时,对输入数据项目的一些约束条件,例如:只能输入数字等;

6、参数需求:功能的细节,在功能执行时,需要根据参数设置不同,进行不同处理的细节;

7、权限需求:功能的细节,在功能执行的过程,根据不同的权限进行不同的处理,不包括直接限制某个功能的权限;

8、性能约束:功能的细节,执行功能时,必须满足的性能需求;

2)场景分析

1、考虑场景的调用者:考虑每一个场景提供的服务是供哪些外部模块或者系统调用的,找出所有调用者。调用前提,约束都要考虑。每一个调用都可以考虑成一个大的业务流程(一般和外部有交互的业务出错率比较大,需要重点关注)。

2、考虑系统内部各个场景之间的联系:形成内部业务流程,需要分析每个场景之间的约束关系,执行条件,组织出各种业务流程图。

3)挖掘隐性需求

这需要测试工程师的经验积累:

1)常用的或者规定的业务流程

2)各个业务流程分支的遍历

3)明确规定不可使用的业务流程

4)没有明确规定但是应该不可使用的业务流程

5)其他异常或者不符合规定的操作

接下来,一起说说测试用例设计那点事儿

1、如何进行测试用例的设计?

编写测试用例之前,我们需要对项目的需求有清晰的了解,对要测试什么,按照什么顺序测试,覆盖哪些需求做到心中有数,作为测试用例的编写者不仅了解要有常见的测试用例编写方法,同时需要了解被测软件的设计、功能规格说明、用户使用场景以及程序/模块的结构。

步骤

1)测试需求分析:从项目部拿到软件的需求规格说明书后,开始对项目的需求进行分析,通过自己的分析、理解,整理成为测试需求, 清楚分析出被测试对象具有哪些功能。明确测试用例中的测试集用例与需求的关系,即一个或多个测试用例集对应一个测试需求。

2)业务流程分析:分析完需求后,明确每一个功能的业务处理流程,不同的功能点做业务的组合,以及项目的隐式需求。如遇复杂的测试用例设计前,先画出软件的业务流程。从业务流程上,应得到以下信息:

A、主流程是什么?

B、条件备选流程是什么?

C、数据流向是什么?

D、关键的判断条件是什么?

3)测试用例设计:

完成以上两步则可进行测试用例设计,功能测试用例,应尽量考虑边界、异常、性能的情况,以便发现更多的隐藏问题。设计测试用例的常见方法:

等价类 → 边界值 → 因果图 → 判定表 → 状态迁移 → 正交实验 → 场景法 → 错误推断(注意:编写测试用例时,我们尽可能取的不应该是有效等价类而应该是无效等价类)

4)编写完成后自我检查以及部门内部评审:

①测试用例本身的描述是否清晰,语言准确;是否存在歧义性;

②测试用例内容是否完整,是否清晰的包含输入和预期输出的结果;测试步骤是否清晰;

③测试用例中使用的测试数据是否恰当,准确;

④测试用例是否具有指导性,是否能灵活的指导软件测试工程师通过测试用例发现更多的缺陷,而不是限制他们的思维;

⑤是否考虑到测试用例执行的效率。对于不断重复执行的步骤,是否保证了验证点相同;或者测试用例的设计是否存在冗余性等。这些都可能导致测试用例执行效率低下;

⑦画出软件需求跟踪矩阵,验证测试用例是否完全覆盖了需求,验证测试用例的覆盖性;

⑧测试用例是否完全遵守了软件需求的规定。这一点其实有一些难做到。考虑到时间/成本的关系,应该视具体情况而定。

5)测试用例更新完善:

测试用例编写完成之后需要不断完善,如遇需求更改或功能新增时,测试用例必须配套修改更新,同时在测试过程中发现设计测试用例时考虑不周,需要对测试用例进行修改完善;在软件交付使用后客户反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成,也需要对测试用例进行完善。

紧接着,测试用例执行的过程

首先搭建测试环境,准备好测试数据,进行预测,预测通过之后,按照测试用例进入正式测试,有效的测试执行可以将测试用例发挥最大的价值。因此,测试用例规范执行有助于更好的发现代码中存在的缺陷。根据个人测试工作经验,好的测试执行应该包含如下内容:

①测试执行中评估测试执行时间不足,需及时上报风险。满足质量优先,进度其次原则。

②测试用例按优先级顺序执行,通常是基本、详细和异常顺序执行。

③未执行用例、标志为删除或者无效的用例,需注明原因。

④执行过程中有疑问的测试用例(场景、操作步骤、检查点等)需找测试设计人员澄清。

⑤测试执行需对用例描述的检查点逐一检查,避免遗漏。

⑥重视不易重现的缺陷场景,可能是一个bug。

⑦执行过程中发现有前期设计遗漏用例需补充到用例文档并执行验证。

⑧建议测试人员交叉执行重复测试用例,用例执行对相同测试人员有免疫性。避免可能的缺陷一直遗漏到现在。如有需要,建议保留测试结果,结果可视。以便于不同版本间的测试结果对比。已确认问题需及时按照问题单提单要求(规范和缺陷定级)提单。

⑨跟踪问题单修复情况并回归验证问题单。每轮次测试结束,find一下是否有core文件产生。测试结束,将最终测试用例文档上传到归档目录,实现用例重用。

以上是针对一般的软件测试流程,如果是自动化测试的话,应该还有根据测试用例进行脚本编写,运行脚本等。此处可能写的不详细,希望大家可以在下方评论让我完善。

最后已达到准确要求的,根据测试情况写测试报告,对整个测试过程和版本的质量做一个评估。

测试报告是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。测试报告是测试阶段最后的文档产出物。优秀的测试经理或测试人员应该具备良好的文档编写能力,一份详细的测试报告包含足够的信息,包括产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终的测试结果分析。

接口测试应该怎么做~

对于接口测试来说,项目测试用例的重复运行首先是表现在单个测试用例的独立性方面的,也就是说,每一个测试用例的运行除了依赖被测对象和对应的数据库环境外,是不依赖于其他任何测试用例的,并且这个测试用例执行完毕后,对系统来说,也是没有任何痕迹的,这样就保证了每个测试用例运行时,都在一个干净的环境中运行。要实现测试用例的独立性,就必须对被测系统的设计有详细的了解,这样,不会出现测试用例执行后遗漏数据,环境未改变,另外,还需要对测试用例进行详细的设计。另外,要保证测试用例的重复使用,还需要做到测试用例的及时更新,在这个方面,我们是做接口测试的人会维护对应的系统的接口测试用例,要保证,代码每次更新,测试用例都必须全部执行通过。
接口测试用例的设计方法其实和功能测试用例的设计方法是类似的,因为接口是需要满足需求的,而接口测试所依赖的也是需求说明书,但是,因为接口测试毕竟是通过代码去测试代码,所以,为了保证覆盖率,可能会使用到单元测试的方法,具体的测试用例设计,我考虑的如下,请参考,如果有错误,一起讨论。
输入参数测试:针对输入的参数进行测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法,输入参数不合法,输入参数为空,输入参数为null,输入参数超长;
功能测试:接口是否满足了所提供的功能,相当于是正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性。
逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常; 异常情况测试:接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何的异常都进行处理。

  测试人员常被看作bug寻找者,但你曾想过他们实际是如何开展测试的吗?你是否好奇他们究竟都做些什么,以及他们如何在一个典型的技术项目中体现价值?

  作者将带你经历测试人员的思维过程,探讨他们测试移动app时的各种考虑。本文的目的在于揭示测试人员的这一思维过程,并展示他们通常所考虑内容的广度和深度。



测试人员需要询问问题

  测试人员的核心能力在于提出有挑战性的相关问题。如果你能将调查、询问技巧和技术、产品的知识结合起来,渐渐地,你也会成为一个好的测试人员。

  比如,测试人员可能会问:

  · 这个App应该在什么平台上使用?

  · 这个App到底是干什么的?

  · 如果我这样做,会发生什么情况?

  诸如此类。

测试人员能从各种场景中发现问题,它们可能来自对话、设计、文档、用户反馈或者是产品本身。这些可能性太多了……因此,让我们一探究竟吧!



从哪里开始测试

  理想情况下,测试人员应该掌握所测产品的所有最新细节资料。但事实上这很少见,因此,像其他人一样,测试人员只能将就使用手上有限的资料。但这不是不能测试的借口!测试人员其实是可以从内部和外部多种不同的来源处收集信息的。

  这个阶段,测试人员可以问这些问题:

  ·  有哪些信息:规格?项目会议?用户文档?知识渊博的团队成员?有支持论坛或者是公司在线论坛提供帮助?有现存Bug的记录吗?

  · 该应用是在什么系统、平台和设备上进行运作和测试?

  · 该应用是处理什么类型的数据(比如个人信息、信用卡等等)?

  · 该应用有整合外部应用(比如API和数据来源)吗?

  · 该应用需要用到特定的移动端网页吗?

  · 现有消费者如何评价这个产品?

  · 有多少时间可用于测试?

  · 测试的优先级和风险是什么?

  · 哪些用户使用起来不愉快,为什么?

  · 如何发布和更新?

  基于以上收集的信息,测试人员可以制定测试计划了。通常预算决定测试方法,一天测完,一个星期或一个月测完的方法肯定不同。当你逐渐熟悉团队、工作流程以及这类问题的解决方式时,你就更容易预测结果了。



案例:Facebook App的社会评论

  当作为一名测试人员收集信息时,我喜欢选用Facebook App作为案例,因为用户的抱怨到处都是。以下仅仅展示了部分遇到难题的用户在iTunes App Store中发表的评论,网络上还有很多。



  iPhone上的Facebook App有很多负面的评论

  如果我接受挑战去测试Facebook这个App,我肯定会考虑这些反馈,否则就是傻子。



测试人员的创造力

  你可能知道这个App原本想做的事,但是它究竟可以做什么事呢?用户实际上是如何使用它的?测试人员擅长作为旁观者来思考,尝试不同的事物,以及不断地询问“如果。。。会怎么样”和“为什么”的问题。

  比如,移动端的测试人员常常以不同的用户角色进行测试——当然有点夸张,但是,这种把自己当成不同用户进行思考、分析和设想的能力对测试是备受启发的。

  测试人员可能会设想自己是以下用户:

  · 毫无经验;

  · 很有经验;

  · 爱好者;

  · 黑客;

  · 竞争对手。

  当然还有更多可选的角色,这主要取决于你们所开发的产品是什么。其实除了角色特点外,其操作行为和工作流程也很重要。人们使用产品方式常常很奇怪,比如:

  · 在不应该返回的时候返回了;

  · 不耐心而且多次敲按键;

  · 输入错误的数据;

  · 不理解该怎么做;

  · 可能没有按要求进行设置;

  · 可能会自以为是地认为自己知道该怎做什么(比如通常不阅读说明)。



  测试人员遇到这些问题时,也常常发现意料之外的Bug。有时候,这些Bug微不足道,但是更深入的调查就会发现更严重的问题。

  很多问题是可以被预先确定和测试的。测试移动端App时,以下的问题并不都有关,但是也可以尝试问问:

  · 是否按照所说的来做呢?

  · 是按设计完成任务的吗?

  · 不是按设计完成任务的吗?

  · 如果处于一直被使用或者负荷情况下,状况会怎么样?会反应迟钝吗?会崩溃吗?会更新吗?有反馈吗?

  · 崩溃报告会反馈到App吗?

  · 用户可能有哪些创造性的、逻辑性的或是消极的导航方式?用户相信你的品牌吗?

  · 用户的数据安全如何?

  · 有可能被中断或是被破解吗?

  · 运行到极限时会发生什么状况?

  · 会要求打开相关服务吗(如GPS、Wi-Fi)?如果用户打开会怎样?没打开又会怎样?

  · 将用户重新引向哪儿?去网页?还是从网页到App?这会导致问题出现吗?

  · 沟通过程和市场反馈是否符合该App的功能、设计和内容?

  · 登录流程是怎样的?能在App上直接登录还是要去网页端?

  · 登录是否整合了其他服务,比如用Facebook和Twitter帐号登录?



案例:Run Keeper’s gy Update

RunKeeper,是一款能跟踪你健身活动的App,最新发布的版本里有个“目标设置”的功能,对此我很感兴趣去体验一下,一部分从测试人员的角度来看,更多的是作为一个真心喜欢产品的用户来体验。但我发现了一些问题:

1. 默认单位是英镑,我却想要把公斤作为重量单位;

2. 英镑和公斤间的切换根本不好用;

3. 当设定目标后,会导致展示错误的数据和图表,这让我很迷惑;

4. 由于第3条,我想删除目标,但却根本找不到删除的地方;

5. 为了解决这一问题,我不得不改变的个人体重的值,直到 “目标设置“范围之内,这样目标达到了,就能重新设定目标了;

6. 我会再次尝试添加目标;

  正因为以上疑惑,我花了更长的时间把玩它,看能不能找到其他的问题;

  以下是一些发现问题的屏幕截图:



  该App的最新版本包含了一个新的“目标”部分。设置日期的时候,我发现开始和结束的日期都可以从公元1年开始,另外,为什么有两个1年可选(译者注:年份那列从上往下应该显示为“1、2、3”)?

 

  另一个Bug,是“当前体重”部分的一个拼写错误,当清空数据时会出现拼写错误的“Enter“(应用中用的是Etner),这只是一个小Bug,但是看上去非常不专业。



  发现问题没有捷径,你只能反复的慢慢的试用。每个App及其团队都会面临很多不同的挑战。但是,测试人员的典型的特点就是:超越极限,做一些非
常规的、可以改变周围事物的事情,保持长时间的测试(测试几天、几个星期甚至几月,而不是几分钟就测完),即使明明知道这些事情是不可能发生的。这些也正
是可以找到和引出的场景所在。



哪儿有所有的数据?

  测试人员喜欢从数据上找问题,这让开发人员有时候很郁闷。事实上,用户或者是软件开发人员在信息流中确实太容易迷惑了,因为可能会出现很多错误,所以基于数据和云的服务更为重要   

  也许你可以尝试在以下场景中检查出问题:





·  移动设备数据已满;





· 测试人员移除了所有的数据;





· 测试人员删除了App,那数据怎么办?





·  测试人员删除并重装了App,数据怎么办?





·  过多或者过少的内容导致设计和布局的改变;





· 在不同的时间段和时区使用;





·  数据不同步;





· 同步被中断;





· 数据更新影响其他的服务(比如网页和云端服务);





· 快速处理数据或是处理大量的数据;





· 使用无效的数据;



案例:Soup.me的错误





  我试用过的Soup.me, 是一个可以通过地图和颜色将个人Instagram 中的照片进行分类的网页服务,但是我却没用多久。当注册时,
它提示我Instagram上的照片不够多,然而我的账号中明明有500多张照片。我并不清楚问题出在哪儿,也许是数据问题,也许是表现层的问题,也有可
能是该App出错提示的问题。







另一个案例:Quicklytics

Quickytics是一个iPad上的网页分析应用。在使用过程中,尽管我已经从Google Analytics中删除了网站配置,但它仍然存在。这里有一些问题:



   · 我已经删除了网站配置,为什么还是有这些信息?





   · 左边模块没有解释为什么“该操作无法完成”,那么是不是可以改进以避免迷惑用户呢?









  测试人员也很喜欢测试极限数据下的情况。他们常常是作为典型用户来了解这个App,所以极限下的测试并不会花很长的时间。数据是混乱的,所以测试人员要考虑到软件的用户类型,以及在不同的数据场景下如何进行测试。





比如,他们可能尝试以下场景:





· 测试用户可输入的极限值;





· 用重复的数据进行测试;





· 在全新无数据的手机里测试;





· 在老手机上测试;





· 预先安装不同类型的数据;





· 考虑聚集大家的资源来进行测试;





· 让一些测试自动化;





· 用一些超出预期的数据去测试,看它是怎么处理的;





· 分析信息和数据是怎么影响用户体验的;





· 不管用户看到的是否正确,都要一直问问题。







创建出错提醒和消息



  这里,我不是从设计师的角度来要谈论好的错误消息的设计,而是想从用户或是测试者的角度来看这个问题。出错提醒和消息是测试人员很容易发现问题的地方。

 关于错误信息要问的问题:

  请考虑以下问题:





· 出错提醒的UI设计可以接受吗?





· 错误信息内容可以理解吗?





· 错误信息是否保持一致?





· 这些错误信息有帮助吗?





· 错误信息内容是否合适?





· 这些错误是否符合惯例和标准?





· 这些错误信息本身是否安全?





· 运行记录和崩溃是否能被用户和开发者获得?





· 是否所有的错误都被测试过?





· 用户处理完错误信息后,将处于什么状态





· 是否在用户应该接受错误信息时,却没有错误信息弹出?





  错误信息会影响用户体验。然而,不好或无用的出错提醒无处不在。虽最理想的状态是避免用户遭遇错误信息,但这几乎不可能。出错情况的设计、实现和确认可能与预期相反,但是,测试者往往善于发现意料外的Bug,并能仔细考究是否改进它们。

泰式按摩是什么怎么做的,有什么作用?
答:泰式按摩非常注重背部、腰部的舒展,其按摩项目从脚趾开始一直作业到头顶才算结束一套动作,从足部向心脏方向进行按摩。手法几乎涵盖了按、摸、拉、拽、揉、捏等所有动作.泰式按摩是跪式服务,左右手交替动作,用力柔和、均匀、速度适中、顺序进行。浴后经泰式保健按摩,可以使人快速消除疲劳,恢复体能,还...

心肺复苏内容是什么?怎么做?
答:内容:心肺复苏就是当病人停止呼吸和心脏骤停时,用人工呼吸和胸外按压进行救的一种技术。心肺复苏是大家熟知的名词,这是一种急救技术,当然出现心搏骤停的时候,就必须要马上做心肺复苏了,要抓住宝贵的时间抢救人的生命,避免患者的大脑以及身体器官受到不可逆的损害。步骤:一、先要判断患者意识 大声...

你有没有什么成功运营自媒体账号的经历?你当时是如何做的?
答:1、不是会写作就能做好自媒体自媒体并不是我们认为的单纯的写作,它是有一定技巧的。刚开始做自媒体的新手往往就像无头的苍蝇一样,不知道从哪里下手。其实这个也简单,很多自媒体平台都有专门针对新手的写作教程,大家可以好好学习研究一下。平台内部的教学资料是最好的,也是最核心的,它会把这个平台的喜...

凉拌茄子怎么做?茄子是怎么弄熟的?
答:01.准备好拌料才是凉拌茄子,最重要的一个步骤。做凉拌茄子这道菜的一个关键步骤就是要准备好拌料。拌料就是我们的辣椒酱。首先把茄子和辣椒摘好,洗干净,然后一起放入蒸锅把它们蒸熟。几分钟后打开锅盖,把茄子和辣椒拿出来。拿出辣椒后把辣椒剁碎,放在一旁等待。然后再把蒸好的茄子拿出来,用手...

腐竹是怎么做出来的?
答:腐竹是一种由大豆制成的豆制品。即把大豆磨成豆浆,然后将豆浆加热煮沸,保温一段时间后,表面形成一层薄膜,挑出来下垂成树枝,再烘干。因其形似竹枝而被称为腐竹。1.泡豆子。黄豆需要泡8-10个小时,洗干净沥干,半斤干黄豆可以泡出一斤左右的湿黄豆。2.制浆。用料理机或豆浆机研磨制成豆浆。冷水和...

对于一个新手来说 应该怎么去做销售,主要的是什么?
答:1、肯定自己。销售活动最重要的组成要素是销售员。销售员要接受自己,肯定自己、喜欢自己。如果你连自己都嫌弃自己,却指望顾客会喜欢你,那实在太难为顾客了。香港销售大王冯两努说得好:“销售员成功的秘密武器是,以最大的爱心去喜欢自己。”2、养成良好的习惯。有人习惯每天至少打50个业务电话,也有人...

怎么做那个教程详细
答:做那个教程详细如下:1、首先要找一个优雅的房间,一张大床 2、时间最好是晚上,因为第一次在白天的话会比较害羞。3、事前,双方可以洗个澡,接吻是最重要的,可以激发双方的欲望。4、洗完之后一起到床上开始前奏,前奏不需要太长,10分钟足矣。等到双方欲望都上来了,就可以开始了。5、采用女下式...

什么是豆奶?具体怎么做的?
答:豆奶就是豆浆和牛奶的混饮品,做法如下:主料:黄豆50克、牛奶适量 辅料:冰糖适量、清水适量 1、黄豆提前一晚泡软。2、然后洗净挑出坏的。3、将黄豆倒入豆浆机内。4、加入适量的清水。5、启动豆浆机的豆浆功能。6、将榨好的豆浆倒出过滤出渣。7、加入适量的冰糖。8、待豆浆稍凉后再加入适量的牛奶...