2023年11月26日发(作者:)

软件测试52-笔记(持续更新中...

软件测试52

01 | 你真的懂测试吗?从⽤户登录测试谈起

在测试⼯作当中,设计测试⽤例⽅法包括很多种:等价类划分、边界值分析、错误推测、因果图、判定表驱动、正交试验设计、功能图、场

景等。但是作为测试⼯程师,我们的⽬标是要保证系统在各种应⽤场景下的功能是符合设计要求的,所以我们就要考虑⽤例内容就需要更

多、更全⾯。

当我们拿到“⽤户登录”的功能需求时,可以结合等价类划分和边界值分析⽅法来设计测试⽤例:

⼊门级别的测试⽤例:

1. 输⼊已注册的⽤户名和正确的密码,验证是否登录成功;

2. 输⼊已注册的⽤户名和不正确的密码,验证是否登录失败,并且提⽰信息正确;

3. 输⼊未注册的⽤户名和任意密码,验证是否登录失败,并且提⽰信息正确;

4. ⽤户名和密码两者都为空,验证是否登录失败,并且提⽰信息正确;

5. ⽤户名和密码两者之⼀为空,验证是否登录失败,并且提⽰信息正确;

6. 如果登录功能启⽤了验证码功能,在⽤户名和密码正确的前提下,输⼊正确的验证码,验证是否登录成功;

7. 如果登录功能启⽤了验证码功能,在⽤户名和密码正确的前提下,输⼊错误的验证码,验证是否登录失败,并且提⽰信息正确。

有了些许经验的会增加测试点的⽤例:

1. ⽤户名和密码是否⼤⼩写敏感;

2. 页⾯上的密码框是否加密显⽰;

1. ⽤户密码后台存储是否加密;

2. ⽤户密码在⽹络传输过程中是否加密;

3. 密码是否具有有效期,密码有效期到期后,是否提⽰需要修改密码;

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

1. ⽹络延迟或者弱⽹或者切换⽹络或者断⽹时是否正常登录;

2. 是否⽀持第三⽅登录;

3. 是否可记住密码,记住的密码保存是否加密,记住密码是否有有效期,过期之后是否会清空密码;

4. 密码强弱性校验,数据库设计和数据操作时是否合理;

5. ⽤户登录过程中log是否对个⼈信息及密码明⽂打印;

6. 登录⽤户限制:⽐如同时⽀持10个⽤户登录,同时9个或者11个⽤户登录是否正常或者提⽰信息正确;

7. 未激活的⽤户登录;

8. 被停⽤的⽤户登录;

9. 涉及资产风险的,对登录设备和地区检测;

第⼀、等价类划分⽅法

等价类中任意⼀个输⼊数据对于揭露程序中潜在错误都具有同等效果。后续我们只要从每个等价类中任意选取⼀个值进⾏测试,就可以⽤少

量具有代表性的测试输⼊取得较好的测试覆盖结果。

有效等价类:年按⼈类最⾼年龄120岁推算,有效年份应为2019~1899年中间;⽉应为1~12⽉;⽇应为1~31⽇;

以“⽤户登录”的功能性测试需求为例,我们⾸先应该对“⽤户名”和“密码”这两个输⼊项分别进⾏等价类划分,列出对应的有效等

价类和⽆效等价类,对于⽆效等价类的识别可以采⽤错误推测法(如⽤户名包含特殊字符等),然后基于两者可能的组合,是基础第⼀

批测试⽤例。

等价类划分完后,我们还需要补充“⽤户名”和“密码”这两个输⼊项的边界值的测试⽤例,⽐如⽤户名为空(NULL)、⽤户名长度

刚好⼤于允许长度等。

⾃动化测试本质是先写⼀段代码,然后去测试另外⼀段代码,所以实现⾃动化测试⽤例本⾝是属于开发⼯作,需要投⼊⼤量时间和精⼒,并

且已经开发完成的⽤例还必须随着被测对象的改变⽽不断更新,还需要为此付出维护测试⽤例的成本,⽽当维护成本⾼于其节省的测试成本

时,⾃动化也就失去了价值与意义,我们也就需要在是否使⽤⾃动化测试上做权衡取舍了。

为什么需要⾃动化测试?

代码级集成测试的⾃动化技术

代码级集成测试是指将已经开发完成的软件模块放在⼀起测试。从测试⽤例设计和测试代码结构来看,它和单元测试⾮常相似,都是对被测

试函数以不同的输⼊参数组合进⾏调⽤并验证结构,只不过代码级集成测试的关注点,更多的是软件模块之间的接⼝调⽤和数据传递。⽽与

单元测试最⼤的区别只是,代码级集成测试中被测函数内部调⽤的其他函数必须是真实的,不允许使⽤桩代码代替,⽽单元测试汇总允许使

⽤桩代码来模拟内部调⽤的其他函数。

⾏覆盖率⼜称为语句覆盖率,指已经被执⾏到的语句占总可执⾏语句(不包含类似C++的头⽂件声明、代码注释、空⾏等等)的百分

⽐。这是最常⽤也是要求最低的覆盖率指标。实际项⽬中通常会结合判定覆盖率或者条件覆盖率⼀起使⽤。

判定覆盖⼜称为分⽀覆盖,⽤以度量程序中每⼀个判定的分⽀是否都被测试到了,即代码中每个判定的取真分⽀和取假分⽀是否各被覆

前置条件是指测试步骤开始前系统应该处在的状态,其⽬的是减少缺陷重现步骤的描述。合理地使⽤前置条件可以在描述缺陷重现步骤

时排除不必要的⼲扰,使其更有针对性。

⽐如,某个业务操作需要先完成⽤户登录,你在缺陷重现步骤⾥就没有必要描述登录操作的步骤细节,可以直接使⽤“前置条件:⽤户

已完成登录”的描述⽅式。

6)缺陷重现步骤

1. 很难确切地知道具体的测试范围,已经应该采取的具体测试策略;

2. 很难预估具体的⼯作量和所需要的测试⼯程师数量,同时还会造成各个测试⼯程师的分⼯不明确,引发某些测试⼯作被重复执⾏⽽有

些测试则被遗漏的问题;

3. 测试的整体进度完全不可控,甚⾄很难确切知道⽬前测试的完成情况,对于测试完成时间就更难预估准确的时间节点了;

4. 整个项⽬对潜在风险的抵抗能⼒很弱,很难应对需求的变更以及其他突发事件。

所以,⼀份好的测试计划要包括:测试范围、测试策略、测试资源、测试进度、和测试风险预估,这五⼤⽅⾯,并且每⼀部分都要给出应对

可能出现的问题的解决办法。

测试范围

测试范围描述的是被测对象以及主要的测试内容。

对于性能测试,需要在明确了性能需求(并发⽤户数、响应时间、事务吞吐量等)的前提下,结合被测系统的特点,设计性能测试场景

并确定性能测试框架。

⽐如,是直接在API级别发起压⼒测试,还是必须模拟终端⽤户⾏为进⾏基于协议的压⼒测试。再⽐如,是基于模块进⾏压⼒测试,还

是发起全链路压测。

09 | 软件测试⼯程师的核⼼竞争⼒是什么?