软件测试面试过程中常见的问题-论登录功能用例设计

测试用例设计:考察测试人员在用例设计方面考虑是否全面,以及对测试需求的分析能力;
最常被问到的,现在软件有一个登录模块,有用户名和密码,以及登录按钮,请你来设计测试用例;

首先说一下我的经历:
目前参加了5场面试,没有收到一个offer, 几乎每一场面试都会被问到这个问题,第一次我的回答是这样子的:
(面试官说给我两分钟,让我写一个登录功能的测试用例,登录界面只有用户名,密码和登录按钮,面试官还说,2分钟够吗?我肯定的回答,够了)
然后我在纸上写下了我的答案:
我的回答1:
测试步骤:
输入用户名和密码,点击登录按钮;
输入数据:
用户名和密码均为空
用户名或者密码为空
用户名不存在;
密码错误;
用户名或者密码输入最大长度;
用户名或者密码输入特殊字符;
用户名和密码输入正确;
然后我给面试官说我写好了,他说你这就考虑了功能方面,其他方面都不用考虑吗?…后来回来想了以下,好像确实考虑的不够,又去百度了以下,用例设计应该从哪些方面去考虑,我查到的是一般从,用户界面,功能,安全,性能,兼容性方面去考虑;
然后我用在了下一次被问到的这个问题中。

我的回答2:
一般从以下几个方面考虑:

  1. UI界面上:查看风格是否合理,输入框以及按钮设计是否好用;

  2. 功能上:针对用户名和密码,以及验证码,考虑多种无效输入和有效输入的情况下,系统是否能正确处理;

  3. 安全性方面:①考虑用户权限,使用不同的用户登录进去,查看能访问的功能是否符合要求;②页面超时是否有处理;③用户A登陆后,在当前标签退出后,立马再不同标签中等录B用户,再去操作上一个标签中用户A操作的界面,看系统是否做出正确的处理;

  4. 接口测试方面:如果在接口测试中有涉及登录的,可以在请求中对参数做出缺省测试,或者修改参数名称以及修改参数的值等进行验证;

  5. 性能测试方面:如果在性能测试需求中有涉及登陆的话,就按照性能的需求去设计用例;

    说完了之后,我说“嗯,用例设计的话大致可以从这几个方面去考虑”,面试官感觉听得有点找不着头脑,莫名的尬笑了一下。我自己心里想,我说了这么多,应该考虑得算比较全面了吧…看到这里你有什么想法呢?

    回到家我仔细回想了一下我的回答,第一,我所描述的给人的感觉不是我在设计测试用例,而是我在告诉别人怎么写测试用例,且不说我说的是否正确;
    仔细想想,我所说的这些测试类型在测试过程之中确实是需要考虑的,但是针对面试官的问题,针对登录功能设计测试用例,我说了很对没用的,例如接口测试和性能测试,还要安全性方面的,特别是我在网上看到的,关于安全性方面的(主要是考虑session),用户退出后在其他界面用不同的用户登录,再去操作用户A的信息,系统是否做出正确处理,首先我说的完全有漏洞,(虽然面试关没有继续追问,可能他觉得我已经跑题了),例如用户A退出登录后,界面怎么会还显示用户A相关的信息呢,描述应该是这样的,在一个页面访问了用户A的信息,再新的假面退出登录,再用B用户登录,然后去操作用户A访问过的信息,这也是测试过的一种方法,但是显然,跟现在对登录模块用例设计没有半毛钱关系了…作为一个有3年测试经验的我,你、给出这样的回答,我真是要醉了。
    回来后,我针对登录模块的用例设计去百度了以下,得到的结果是这样的:

此题的考察目的:
1、了解需求(测什么都是从了解需求开始);
2、是否有设计Test Case的能力
3、是否熟悉各种测试方法;
4、是否有丰富的Web测试经验;
5、是否了解Web开发;
了解需求
测试需求分析过程,可以从质量要求出发,来展开测试需求分析,如从功能、性能、安全性、兼容性等各个质量要求出发,不断细化其内容,挖掘其对应的测试需求,覆盖质量要求。也可以从开发需求(如产品功能特性点、敏捷开发的用户故事)出发,针对每一条开发需求形成已分解的测试项,结合质量要求,这些测试项再扩展为测试任务,这些测试任务包括了具体的功能性测试任务和非功能性测试任务。在整理测试需求时,需要分类、细化、合并并按照优先级进行排序,形成测试需求列表。
1、登录界面应该是弹出窗口式的,还是直接在网页里面;
2、账号长度和密码的强度(比如需要多少位、大小写敏感、特殊字符混搭等);
3、界面美观是否有特殊要求?(即是否要进行UI测试);
4、····
用例设计:
测试需求分析完成后,开始用例设计,主要可以从以下几个方面考虑:

功能测试(Function Test)
1、输入正确的账号和密码,点击提交按钮,验证是否能正确登录。(正常输入)
2、输入错误的账号或者密码, 验证登录会失败,并且提示相应的错误信息。(错误校验)
3、登录成功后能否跳转到正确的页面(低)
4、账号和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示)
5、账号和密码,中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤)
6、记住账号的功能
7、登录失败后,不能记录密码的功能
8、账号和密码前后有空格的处理
9、密码是否加密显示(星号圆点等)
10、牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
11、登录页面中的注册、忘记密码,登出用另一帐号登录等链接是否正确
12、输入密码的时候,大写键盘开启的时候要有提示信息。
13、什么都不输入,点击提交按钮,看提示信息。(非空检查)

就从功能测试这一块,我用蓝色标记的地方,我现在一看,这些我也做过测试,但是为什么我在面试的时候完全忽略掉了这些基本的功能呢?我想一方面是我在用例设计时,压根没有吧这些考虑进去,没有形成用例,自然没有印象,就是在测试的时候,会想到就测试一下。

界面测试(UI Test)
1、布局是否合理,2个Testbox 和一个按钮是否对齐
2、Testbox和按钮的长度,高度是否复合要求
3、界面的设计风格是否与UI的设计风格统一
4、界面中的文字简洁易懂,没有错别字。
5、不同的浏览器窗口大小,下面,界面和功能是否正常

UI测试我也回答了,考虑界面设计风格是否良好等,但是没有具体进行描述,按照我的描述,测试的时候是完全无法进行测试的,比如怎样才算良好,怎样才算不良好呢?以上蓝色标记的地方,我一看,我平时也是这么测的呀,要是没对齐,或者有错别字,我一看就知道这是bug呀,但是我在设计用例的时候,单纯的写了,界面风格良好,便于用户使用。所以这就是我为什么不能当着面试官的面有条有理的回答出来。

性能测试(Performance Test)
1、打开登录页面,需要几秒
2 、输入正确的账号和密码后,登录成功跳转到新页面,不超过5秒

性能测试,我脑海里,第一浮现的就是用户并发测试,并且总想往这上面靠,然而我说的,确实跟这个登录的功能的性能不搭嘎。这些标蓝的地方,如果测试时遇到了,我肯定知道有问题,例如打开登录页面时,页面一直加载等,但是我说不出来,也是我在平时写用例时没有写到测试用例里面,这里我想到了第二家面试的时候,面试官问我,一般一个测试一个软件,你设计的用例大概有多少,我说一个功能多点的软件的话,大概三四百个吧,前面还问了我一个软件能提多少个bug,我说刚开始测试时候可能两百多个吧…我确实是根据我曾经写过的测试用例去描述的,不过bug数,实际上,可能不到100个…经过几轮测试的可能也不到200个,现在看来一个登陆模块用例设计可能都有几十条了,显然我所说的功能多点的三四百条用例,设计出来肯定很多地方没有具体到用例里面去,就靠测试人员的细心程度和经验了…

安全性测试(Security Test)
1、登录成功后生成的Cookie是否有HttpOnly(降低脚本盗取风险)
2、账号和密码是否通过加密的方式,发送给Web服务器
3、账号和密码的验证,应该是用服务器端验证,而不能单单是在客户端用javaScript验证
4、账号和密码的输入框,应该屏蔽SQL注入攻击
5、账号和密码的的输入框,应该禁止输入脚本(防止XSS攻击)
6、错误登录的次数限制(防止暴力破解)
7、考虑是否支持多用户在同一机器上登录;
8、考虑一用户在多台机器上登录

我所说的安全性测试也是测试的方法之一,但是呢,跟这个登录模块就有点连不上去了,第4点和第5点,在某些回答中,我也提到过,但是没有实际测过,也没有深入去了解,所以说出来很怕面试官会继续追问,在安全测试方面我确实没什么经验,自己做过较多的就是权限的验证,还有登陆过期这类的,不过个人感觉在面试中,就算安全测试技术层面没什么经验,至少6,7,8应该能说出来,因为在平时用过的软件,很多都会遇到这样的问题,也是属于安全方面的。

可用性测试(Usability Test)
1、是否可以全用键盘操作,是否有快捷键
2、输入账号,密码后按回车,是否可以登录
3、输入框是否可以以Tab键切换

这个的话不是必要的,但是能说出来更好,因为其实不是所有的软件都支持回车可以登录,tab可以切换下一个输入框的,这些如果在设计说明说着软件需求上没写,也是可以作为用户体验方面去测试。

兼容性测试(Compatibility Test)
1、主流的浏览器下能否显示正常已经功能正常(IE6~11, FireFox, Chrome, Safari 等 )
2、不同的平台是否能正常工作,比如Windows, Mac
3、移动设备上是否正常工作,比如iPhone, Android
4、不同的分辨率

兼容性方面应该是比较容易想到的,但是我确实忽略了,后来面试官问我,还有别的吗,我说没有了,面试官说,你们平时用什么浏览器测试...我就立马补充道,噢,用例设计的话也需要考虑兼容性方面,比如不同的浏览器上功能是否正常等,不过这个要考虑软件开发设计所支持的浏览器和操作系统以及分辨率等。

本地化测试 (Localization Test)
1、不同语言环境下,页面的显示是否正确。
软件辅助性测试 (Accessibility Test)
软件辅助功能测试是指测试软件是否向残疾用户提供足够的辅助功能
1、高对比度下能否显示正常(视力不好的人使用)

最后两点的话,看软件设计的需求吧,很多软件基本没考虑。

综合以上面试经验,很重要的是,能说的有条理,能针对具体功能去设计用例,希望自己在下一次面试中针对这个问题,能给面试官一个较为满意的回答。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试面试,常常会被问及关于测试用例问题。以下是一些常见的测试用例类型,你可以参考: 1. 正常情况下的功能测试用例: - 验证软件的基本功能是否按照需求规格说明书的要求正常工作。 - 确保各种输入和操作都能正确处理,并产生预期的输出和结果。 2. 边界值测试用例: - 验证软件在边界值和极端情况下的行为。 - 确保软件能够正确处理最小和最大的输入值,以及边界条件。 3. 异常情况下的测试用例: - 验证软件在异常情况下的反应和处理能力。 - 确保软件能够正确地处理错误输入、异常条件和错误操作。 4. 性能测试用例: - 验证软件在负载、并发和压力下的性能表现。 - 测试软件的响应时间、吞吐量和资源利用率等性能指标。 5. 安全测试用例: - 验证软件的安全性和防护措施。 - 测试软件的身份验证、权限控制、数据加密和漏洞等方面。 6. 兼容性测试用例: - 验证软件在不同操作系统、浏览器和设备上的兼容性。 - 确保软件能够在各种环境正确运行和显示。 7. 用户界面测试用例: - 验证软件的用户界面是否符合设计规范和易用性要求。 - 测试软件的布局、颜色、字体、按钮和输入字段等方面。 8. 回归测试用例: - 在软件更新或修改后,重新执行之前正常的功能和场景的测试用例。 - 确保软件的修改不会对原有功能产生负面影响。 以上只是一些常见的测试用例类型,实际的测试用例会根据具体的软件系统和需求进行设计和编写。在回答面试问题时,可以结合自己的经验和项目经历来举例说明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值