面试准备——(一)测试基础(3)测试用例的编写

一、游戏测试

1. 你有玩过什么游戏

一般玩的比较多的是手游,比如:糖果传奇、消灭星星、密室逃脱,以及前段时间比较风靡的阴阳师。

在电脑上,QQ欢乐四川麻将,以前还会玩一些经营类游戏,初高中的时候是:QQ宠物、QQ农场,大学的时候玩过模拟人生

2. 什么样的游戏可以称为一个好的游戏

1. 首先,最直观的感觉,精致的画风、恰到好处的背景音乐和优秀的故事情节。

对于游戏第一眼是UI界面,整体的画风、恰到好处的背景音乐,会让玩家赏心悦目,眼前一亮。

其次,一个大型的一点的游戏,相当于是一个虚拟世界,所以这个世界首先要有逻辑、故事情节不用太复杂,但是引人入胜。

2.易操作性

操作不能过于复杂和困难。

最经典的俄罗斯方块,操作只有上下左右,但是却一直延续至今

3. 竞技性,设置的关卡难但是经过努力会过,关卡过了以后有奖励机制

游戏中设置关卡是一定有难度阶梯的,随着前几关的熟悉,到后面越来越难。但是难度也不能特别不合理,不能称为一种套路

例如,之前我有玩过一个游戏,叫做小时代的换装游戏。

每一个关卡就是一个女生在打扮自己,然后评分,只有达到一定分数才能成功闯关,并且解锁更高级的衣服。

开始我玩的挺开心的,但是后面发现,每套衣服的搭配成了一种套路,不管这一关卡的主题, 只要搭配了其中几件很难得到的衣服就绝对可以有高分。同时,到了后面,关卡所必须的衣服实在太难,只能花钱购买。所以无奈之下只有弃玩。

4. 有抽奖或者连续登录、节假日奖励机制,可以让玩家保持一个新鲜度,并且刺激每天玩耍。

比如之前我玩的糖果传奇,累计登录的时间越久获得的奖励越高级,一旦终止所有奖励从头开始,于是我为了这个奖励每天都会登录,一登录就会忍不住玩耍。

其次,抽奖的东西是不确定的,存在是特别好的道具的可能,所以我每天最期待的就是抽奖。

2. 游戏测试

1. UI测试:

画风、故事情节、背景音乐、文字的契合度

图片的显示、文字的排版、布局等

2. 功能测试

游戏分类很广泛,例如:射击类、经营类、竞技类等等。首先根据需求说明书,确定所测部分的具体流程、功能。

1. 我认为游戏测试最重要的是数值

数值代表了一个角色的多种状态、行为、装备、技能、财富,一旦一个发生了变化,其他也会随之变化。同时如果一旦出错,例如我之前玩candy crush原有的金币全部消失,则会引起玩家极大的不满,或者弃玩。

所以尽可能的用边界值分析法和等价类划分法去模拟各种可能,测试角色的各种情况。

2. 活动

游戏会根据节假日、累计登录、抽奖创建各种抽奖或者奖励活动。所以我们需要确认活动的开始、终止时间,累计登录的次数、奖励是否和预期相同等

对于组队完成任务这种,更加复杂,需要将多角色融合在一起。

3. 存档

  1. 如果暂停,是否有存档
  2. 在游戏中途如果退出是否有存档
  3. 如果需要联网,如果断网,是否有存档

3. 可用性测试

比如:

1. 需要重力感应的游戏,是否能够很好的识别到我们的动作。

2. 触屏的接触点灵敏

4. 性能测试

在游戏中,打开时间太长,或者游戏过程中出现卡顿都是会让玩家有厌倦感的。

1)手游:主要是客户端的性能测试

打开游戏、在游戏中响应时间、是否出现卡顿情况,内存占有、耗电量、流量等。

2)网游:服务器端的性能也十分重要

所以还需要对服务器端的CPU、内存情况进行测试

5. 安全测试

1. 用户端:用户是否需要登录/注册,如果需要注册,在注册框应该考虑:

  1. 防止JS脚本注入、SQL语句注入
  2. 防止暴力登陆——登录密码连续错误几次,需等待时间或者短信验证
  3. 是否允许一台机器多用户,或者一个用户在多台机器上登录

2. 服务器端:

  1. 用户存档信息是否安全、完整
  2. 禁止外挂
  3. 合服时,信息的存储

6. 兼容性测试

不同的浏览器、手机端、电脑系统。

7. 压力测试、强度测试

长时间多用户在线,服务器的CPU、内存情况,

3. 测试俄罗斯方块

1. UI界面

图像显示、文字排版是否合理规范,背景音乐是否恰当

2. 功能测试:

首先分析,俄罗斯方块主要有四个操作:左移、右移、变换方块、向下加速。

操作过程是:一个方块如果填补了一行的空缺之处,则消除对应行,否则一直累积,如果累积的高度达到了最大限制,则失败。

结合等价类划分法和边界值分析法,我们设计测试用例主要从几个方面:

  1. 四个操作是否恰到好处,反应不会太迟钝也不会太灵明
  2. 当一个方块掉下去填补了一行的空缺处后,是否填补行消除,但是方块其他部分没有消失,未消除行整体向下移。
  3. 当一个方块掉下去后,若没有行被填补,则行数累加
  4. 一些边界值情况:只有一行就到最大行了,这个时候消除一行是否有效降低行数;不做操作,等待游戏自己结束的情况等。
  5. 如果暂停,是否有存档
  6. 在游戏中途如果退出是否有存档
  7. 如果需要联网,如果断网,是否有存档

3. 可用性测试;

  1. 如果是四个上下左右键,则检查灵敏度且键盘放置的位置是否合适
  2. 如果是按照重力感应,检测对动作的识别度

4. 性能测试:

1. 客户端:CPU、内存、耗电情况、流量情况、游戏

5. 安全性:

1. 用户端:用户是否需要登录/注册,如果需要注册,在注册框应该考虑:

  1. 防止JS脚本注入、SQL语句注入
  2. 防止暴力登陆——登录密码连续错误几次,需等待时间或者短信验证
  3. 是否允许一台机器多用户,或者一个用户在多台机器上登录

2. 服务器端:

  1. 用户存档信息是否安全、完整
  2. 禁止外挂

6. 兼容性测试

不同的浏览器、手机端、电脑系统

7. 压力测试、强度测试

长时间多用户在线,服务器的CPU、内存情况,

一、应用模块的测试

1.如何按排对农餐的测试?

农餐对接系统分为了两大子系统,一个是个人订餐系统,二是餐馆、个人与农产品供应商进行农产品交易系统。我主要负责组织测试人员对该系统进行测试。

第一步,分析需求规格说明书,制定测试计划。测试计划包括了5W1H,也就是Why、When、What、Who、Where、How。

首先,我们确定选用了禅道Bug管理系统,用来管理需求、测试用例和Bug。

其次,根据项目的开发时间和条件,确定使用:Jenkins持续集成工具、git版本控制工具,以及Selenium自动化测试工具、Unittest框架。

第二步,了解技术架构,设计测试方案、测试用例。

首先,因为最开始有涉及到使用Junit进行单元测试,所以对系统的架构有一定的了解,定位可能存在问题的瓶颈点

其次,将测试用例涵盖的范围设定在7个方面:数据库测试、功能测试、性能测试、压力测试、安全性测试、兼容性测试、易用性测试。其中,设计测试用例的原则是:利用等价类划分法、边界值分析法、场景设计法等尽量多的覆盖所有的路径。——设计测试用例

第三步,进行测试。——搭建项目框架

在测试前先搭好测试框架,准备好各种测试要用到的工具,然后按照测试方案流程进行测试。

1. 使用PO设计模式

将一个页面内的操作对象(按钮框、输入框等)和操作的步骤封装在每个Page里面,以Page为单位进行管理。这样Selenium测试用例能够通过调用页面类来获取页面元素,从而巧妙的避开了当页面元素的ID等属性发生变化时,修改代码的情况。——>提高了代码的复用性、可读性及减少工作量。

2. Selenium+Unit test搭建四层框架——实现数据、脚本、业务逻辑分离(关键字驱动)

1)基础层(BasePage)

设计一个基本的Page类,所有页面皆继承该类。提供了一个页面需要实现的基本功能及公共方法

2)业务逻辑层(Pages):

按照PO设计模式,将每个页面抽象为一个类,放在Pages包里面,每个页面继承Basepage,可调用Data层数据,内容包括:

  • 该页面所有的操作对象属性
  • 实现的功能

3)数据层(Data)

该层存放相关数据,例如:用户数据和密码。在测试用例可通过调用数据层的数据来进行操作。

4)测试用例层(Testcases)

每一个测试用例testcase都对应Pages里面的一个页面,继承unnitest.TestCase类。通过调用对应页面类的方法,数据层的数据、增加断言(assert)来验证功能的正确性。

此外通过Jenkins自动执行测试、代码质量检测和部署到测试服务器、部署到生产服务器上

3. 自动化测试执行策略——三个阶段

使用Jenkins持续集成工具来执行测试脚本和部署,主要设置了三个任务:

  • tm_test:用于执行自动化测试脚本,检测代码质量
  • tm_staging_deploy:用于在测试服务器上部署代码
  • tm_deploy:用于在生产服务器上部署

我们将测试分为三个阶段

1. 开发新的需求时,创建分支devN。当在这个分支中,需求开发完成或者Bug修复,就配合测试人员利用JUNit框架进行单元测试以及功能测试。通过测试后,合并到master上

2. 当master有变动,则触发tm_test任务,执行自动化测试脚本和代码质量检测。如果通过则自动出发tm_staging_deploy,部署到测试服务器,如果没有通过,自动化测试脚本会将Bug截图发送给测试人员。

3. 登陆生产服务器上,对网站进行功能测试。如果通过测试,则手动触发tm_deploy,部署到生产服务器。如果没有通过,在禅道管理系统上把bug指派给相应模块的开发人员。

第四步,发布

首先考虑灰度发布,先让小部分群体试用,如果有什么问题就能够及时发现、改正。

2. 选择农餐的一个测试模块,设计测试用例。

(1)登录模块

先分析这个模块的需求设计说明书,确认这个模块的界面、实现功能和步骤、其他技术设计。确定容易出错的地方。

1)这个模块界面组成部分:用户名输入框、密码输入框、登录按钮、“记住用户名”单选项、忘记密码链接、免费注册链接。

2)功能实现步骤:

输入用户名——输入密码——输入验证码——点击“登录”,则可以跳转到对应的页面(验证点:跳转页面有:欢迎xxx登录),最后退出。

3)其他设计需求:例如用户名的限制是:长度6-18位的非汉字,数字、字符、下划线的组合

其次确认测试的方案:

  • 测试分为六个方面
  • 使用等价类划分法和边界值法,
  • 用人工测试实现。
  • 测试的目标:当测试用例基本都通过,没有一、二级的BUG出现,剩余BUG不影响功能则可以验收本功能模块

1. 界面测试:

  • 界面布局是否合理,文字排版是否整齐
  • textbox和按钮的长度、高度是否符合要求

2. 功能测试:

我们根据等价类划分法和边界值分析设计测试用例:

  • 链接测试:点击“忘记密码”和“免费注册”能够正确的链接到相应的页面
  • 输入正确的用户名、密码,点击“登录”按钮,验证是否跳转到正确的界面。
  • 输入错误的用户名、密码,点击“登录”,验证是否为提示“用户名/密码错误”
  • 输入的用户名或密码,点击“登录”,验证是否提示“用户名/密码不能为空”
  • 输入的用户名和密码中含有特殊的字符,和其他非英文字符,系统会提示或者过滤
  • 用户名和密码前后有空格的情况
  • 密码是否以星号显示
  • 点击“记住用户名”,刷新页面后,用户名输入框能够自动填充

3. 性能测试:

在客户端:

  • 打开登录页面所需要的时间,是否满足设计的需求
  • 当输入正确的用户名和密码后,登录成功跳转到新页面,不超过5秒(满足设计需求)

在服务器端:资源利用率(CPU使用率,内存占用率),吞吐率,发布耗时,各接口平均响应时间等等

其次,我们设定预期正常并发用户量为1000,最高并发量为3000,我们使用Jmeter+BadBoy测试在这两个并发量范围内的网站响应速度和内存使用情况。

4. 安全测试

  1. 检查登录生成的Cookie是否为httpOnly,这是为了防止XSS(跨站脚本攻击),窃取cooki内容。
  2. 用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
  3. 用户名和密码的输入框,应该屏蔽SQL 注入攻击
  4. 错误登录的次数限制(防止暴力登录)
  5. 用户名和密码是否通过加密的方式,发送给服务器
  6. 用户明和密码的验证,应该是服务器端验证,而不能单单是在客户端用JavaScript
  7. 考虑是否支持多用户在同一机器上登录
  8. 考虑同一用户在多台机器上运行

5. 可用性测试

  1. 是否可以全用键盘操作——快捷键
  2. 输入用户名、密码后,按回车能否登录

6. 兼容性测试

  1. 不同的浏览器
  2. 不同的设备:电脑、手机、IPad
  3. 不同的平台:Mac、Windows
  4. 不同的分辨率

 (2)对搜索栏进行测试——对百度首页进行测试

首先根据需求说明书对这个功能模块进行分析,确认UI界面、实现的功能和步骤、其他技术设计。确定容易出错的地方。

1)模块的界面:首先搜索类别(食品还是餐馆)的下拉框,其次有一个输入框供输入查询的内容,在输入框右边有一个查询按钮,下边是热搜菜品。

2)模块的功能及实现步骤:

1. 直接点击:搜索框下面的热搜菜名,就可以跳转到对应菜品所在搜索页面;2. 首先选择类别:食品或者餐馆,其次在输入框中输入查询的内容,最后点击查询。

3)其他技术设计:

  • 搜索框能进行模糊匹配、完全匹配;
  • 搜索框能够识别出以空格/tab/逗号隔开的关键字
  • 输入框的的字符长度限制,

其次确认测试的方案:

  • 测试分为六个方面
  • 使用等价类划分法和边界值法,
  • 用人工测试实现。
  • 测试的目标:当测试用例基本都通过,没有一、二级的BUG出现,剩余BUG不影响功能则可以验收本功能模块

1. 界面测试:

  • 搜索页面布局合理,无错别字
  • 查看选择类别框、输入框及查询按钮是否在同一水平线、布局合理
  • 查看输入框下边的热搜菜品是否布局合理、无错别字
  • 搜索出的结果展示,布局合理
  • 已查看过的菜品、店铺链接颜色呈灰色处理,与没有点击过的结果链接区分
  • 结果数量庞大时,分页布局合理

2. 功能测试。

按照等价类划分法和边界值法设计测试用例

  • 链接测试:点击输入框下面的热搜菜名,会正确跳转到该菜名指向的页面
  • 选择搜索“菜品”,输入部分菜品名,点击查询,查看显示结果是否正确
  • 选择搜索“菜品”,输入完全的菜品名,点击查询,查看显示结果是否正确
  • 选择搜索“餐馆”,输入部分餐馆名,点击查询,查看显示结果是否正确
  • 选择搜索“餐馆”,输入完全的菜品名,点击查询,查看显示结果是否正确
  • 多个关键字中间加入空格/tab/逗号后系统的结果是否正确
  • 输入内容为,点击“查询”,验证系统如何处理
  • 输入内容为空格,点击“查看”,验证系统如何处理
  • 输入合法长度的字符串后,加空格,验证搜索结果
  • 输入空格+合法长度的字符串,验证搜索结果
  • 入字符串长度等于及超过允许的字符串范围,验证系统如何处理
  • 输入特殊字符,验证系统如何处理
  • 多次输入相同内容,结果是否相同

3. 可用性测试:

  • 在输入框是否可以用快捷键
  • 输入框是否支持回车

4. 安全测试

  • 输入框禁止脚本
  • 输入框禁止SQL注入,检索sql select语句等
  • 特殊字符的检索
  • 被删除、加密、授权的数据是不允许被查出来的(淘宝!)

5. 性能测试

在客户端:

  • 搜索页面打开的速度是否满足设计需求
  • 搜索出结果消耗的时间是否满足设计需求

在服务器端:资源利用率(CPU使用率,内存占用率),吞吐率,发布耗时,各接口平均响应时间等等

6. 兼容性测试

  • 多平台:windows、MAC
  • 移动设备:android、iphone、ipad、surface
  • 多浏览器:Safari、Ie、Firefox等
  • 不同分辨率

7. 本地测试

登录时,自动切换到响应国家的搜索页面(淘宝)

3. 如何测试微信红包——腾讯

将测试阶段分为四个步骤:

一、首先根据需求说明书确认这个模块的UI界面、实现的功能和步骤、及其他技术设计架构,定位可能出错的地方。

二、其次确认测试的方案(5W1H):

  • Why:测试的原因,即当前产品的现状,和测试的目标、上线的质量指标
  • What:测试的内容(微信红包模块)
  • When:测试的时间范围和周期
  • Who:测试的人员安排
  • Where:测试相关文档存放的位置
  • How:确定测试的策略:测试用例编写方法(例如:边界值分析、等价化分类等)、测试的工具等

三、进行测试。

在第一步中,我们已经确认了微信红包的功能及步骤:

一)作为发红包者:

1. 选择个人/群当作发红包对象

2. 进入聊天界面,点击右下角“+”——点击第二排第一个“红包”,进入“填写红包信息”页面

3. 在第一个输入框中:输入金额

4. 在第二个输入框中:输入红包祝福语如果是群发红包,还会输入红包的个数)

5. 点击“塞钱进红包”

6. 弹出支付提升框,选择“支付的方式”,点击“确认支付”,输入密码/输入指纹

7. 回到聊天界面,有一个红包显示,不会显示金额,但是会显示输入的红包祝福语

8. 如果该红包被领取了,会在聊天记录中,显示“XXX领取了你的红包”

9. 再点击红包,会显示你发的金额,及领取的人。(如果是在群发红包,会显示已领取红包的个数、金额,领取的人和对应的金额。全部红包领取完以后,会特别标记领取金额最多人为“手气最佳者”)

二)作为首红包者

1. 微信提示,收到红包(在电脑上不可显示)

2. 点击红包——点击“开”

3. 出现领取红包的信息,包括:红包祝福语、金额、“已存入红包、直接提现”——链接到“微信零钱”、“留言”、“查看我的红包记录”(如果是群发红包,还可以看到其他人领取的情况和最佳手气者)

4. 点击左上角“关闭”,聊天记录出现一条“你已领取XXX红包”

从测试的内容,我们确认测试从八个方面展开

1. UI界面测试:包括

  • 编写红包信息时,UI界面是否规范合理、无错别字
  • 发送红包后,在聊天界面中,红包显示是否规范、红包祝福语是否显示合理。
  • 再他人领取红包后,点击进红包,红包领取信息是否排版规范(特别是多人领取的情况)
  • 其他人领取红包后/自己领取他人红包后,在聊天界面显示领取红包信息是否规范、合理

2. 功能测试:

首先进行链接测试:链接页面的正确

一)发红包时

  • 刚点开一个人/群聊天框,点击右下角“+”,正确显示各项功能
  • 点击“红包”,正确链接到“填写红包信息”页面
  • 在“填写红包信息”页面,点击右上角问号,正确链接到“微信红包疑问解答”页面
  • 在“填写红包信息”页面点击“关闭”,则离开这个页面,回到聊天界面

二)在领取红包时

  • 点击红包,能够正确弹出“开红包”
  • 点击“开”后,正确链接到领取红包的信息
  • 在领取红包信息页面,点击“已存入零钱,可用于发红包”——链接到“零钱”
  • 点击“留言”,正确链接到填写留言页面
  • 点击“查看我的红包记录”,正确链接到“收到的红包”页面
  • 点击“返回”,返回聊天界面

其次,根据边界值分析法和等价类划分法设计测试用例,主要测试功能:

  • 输入金额(在0-200元之间,0元,-1元、200元,201元,0.00元,在特殊日子,测试520等;以及输入的金额与零钱不足——跳转到其他支付方式,如果输入金额其他支付方式也不满足)
  • 输入红包个数(0、100、101,超过群成员个数、小数、负数)
  • 输入红包祝福语:特殊字符、空格、空、超过字符串长度
  • 在支付时,选择各种支付方式,输入密码/指纹(正确、错误)
  • 点击红包(个人红包/群红包-可能已经抢完了,不能再抢;已过期红包-不能再抢)

3. 可用性测试:

  • 在输入框是否可以用快捷键
  • 输入框是否支持回车

4. 安全测试

  • 在输入红包信息的输入框中能识别特殊字符、禁止JS脚本、禁止SQL语句注入
  • 过期红包(>24小时),不能领取,并且退回到零钱里面
  • 调用“支付”接口的安全性(支付密码的安全传输、验证)

5. 性能测试:

即测试在客户端,发红包、打开红包等响应时间是否符合需求设计;

在服务器端,资源利用率(CPU使用率,内存占用率),吞吐率,发布耗时,各接口平均响应时间等等

6. 负载测试

其次,通过增加并发量来测试系统性能情况。

7. 压力测试

最后,还要进行压力测试,即评估系统处于、超过预期负载时的处理能力

还可以进行强度测试:检查程序对异常情况的抵抗能力,及在极限情况性能下降是否在允许的范围内

疲劳强度测试:测试系统在长时间运行后的性能测试表现

8. 兼容性测试

  • 不同的系统:安卓、苹果
  • 不同的移动设备:ipad、手机
  • 不同的分辨率

、最后发布

发布的时候必须要考虑灰度发布,先让小部分群体先试用,如果有什么问题能够更好更早的发现,然后进行相应的应对措施。

粲粲姐的答案:

第一步,根据需求进行分析,了解需求需要实现的是什么功能,假设我对这个需求比较了解,我还会对该需求的风险进行一个初步的判断。

第二步,我会先去大致了解微信红包的技术架构(定位可能存在问题的瓶颈点)然后根据需求拟定测试方案以及测试用例。测试方案所要考虑的内容比较多且也比较全面,主要包括:测试的范围(功能测试,性能测试,压力测试,安全测试,这些测试的测试点,测试的必要性,工具),测试目标,上线质量指标,测试策略,测试轮数,进度安排)测试方案涵盖所有测试过程,质量保障计划的提纲和方向。测试用例主要涵盖需求上的一些功能点以及异常点,边界值。

第三步,主要开始进行测试,在测试前先搭好测试框架,准备好各种测试要用到的工具,然后按照测试方案流程进行测试。对于微信红包,最基础的是要能够使得需求上的功能点都能正确实现。(这一点可以按照测试用例来进行,比如红包个数为零时,金额上限),因为考虑到微信红包的用户量大,高并发性,所以还需要考虑对各种性能的测试,比如资源利用率(CPU使用率,内存占用率),吞吐率,发布耗时,各接口平均响应时间等等,然后进行压力测试。因为使用的用户范围广,自然还要考虑到兼容性问题,是否不同的手机都能正常使用这一功能,并且还需要考虑安全测试。如果测试结束后能够达到上线指标,则可以考虑发布。

第四步,发布的时候必须要考虑灰度发布,先让小部分群体先试用,如果有什么问题能够更好更早的发现,然后进行相应的应对措施。

4. 微信公众号测试:

1)接口配置测试

由于微信公众号需要调用微信的接口,所以我们首先需要进行调用接口配置测试。查看调用接口后,基本原声功能是否正常运行。例如:自定义菜单展示和跳转、自动回复等功能

2)功能测试

其次,我们再测试自己设计的各项功能,主要从以下几个方面:

  • 界面测试:检查布局是否规范、字体和图片显示是否正常
  • 链接测试:能够正确的跳转公众号里面的页面
  • 逻辑功能测试:实现需求中所期望的功能

3)数据库测试

  • 检查数据库的一致性:例如用户提交的表单信息能否正确存入数据库并且读取
  • 对特殊字符的处理,例如:如果用户输入or,不处理读进数据库的话,可能导致严重的后果
  • 数据库的加密性:用户信息不会被泄漏
  • 当访问量过大时,数据库查询性能

4)性能测试

首先,我们设定一个预期的正常用户访问量和最高用户访问量,然后分别在这两个数值范围内设定并发用户数目,来测试在这些情况下系统的性能,例如:页面响应时间、内存使用情况。

其次,再逐步增加并发用户量,观察在各种负载情况下系统的性能,直到达到系统的瓶颈。也就是负载测试

最后,评估系统在处于超过预期并发数(或者内存耗尽)的情况下的处理能力。也就是压力测试。

5)安全性测试

主要考虑三个方面:

1. cookie为HttpOnly,防止XSS攻击

2. 在自己HTML5页面中传输数据时,数据会加密,不会被拦截

3. 如果与用户有交互,在用户输入框中,对特殊字符有处理、不能输入脚本、SQL语句

6)兼容性测试

  1. 主流浏览器
  2. 不同电脑平台:Windows、Mac
  3. 不同移动设备:iPad、手机(Android、iPhone)
  4. 不同分辨率

二、实物的测试

1. 杯子的测试

首先分析杯子的设计需求说明书,确定它的界面设计、功能可和另一些制作技术(例如:材质,耐热程度等),其次从以下几个方面进行测试:

1. 界面测试

  • 杯子图案是否符合设计需求,印刷合理、规范
  • 杯子颜色是否符合设计需求
  • 杯子形状是否符合设计需求
  • 杯子上的印刷字体是否符合设计需求、排版合理、没有错别字
  • 杯子的重量是否符合设计需求
  • 杯子是否有异味

2. 功能测试

根据杯子的用途、规格、承受的冷热程度等(假设杯子的规格为:100ml,杯子承受的最高温度:100度),依据边界值分析法和等价类划分法,确认测试用例如下:

  • 杯子能否装100ml的水
  • 杯子盛入50摄氏度的水
  • 杯子盛入100摄氏度的水
  • 杯子盛入0摄氏度的水
  • 快速的装满水,看是否漏水
  • 装满水后,放置几天,查看是否漏水
  • 用过几天以后,杯子的内壁颜色是否脱落

3. 安全性测试

  • 杯子的材料是否有害人身体健康
  • 放入微波炉中,是否会爆炸、融化
  • 从桌子掉到水泥地会否破碎
  • 杯子边缘是否有缺口,容易划伤嘴巴
  • 杯子内壁的燃料会否溶解到水中

4. 可用性测试

  • 是否容易导热-烫手
  • 是否有杯柄,方便端
  • 杯子是否有防滑垫

2. 对一个自动贩卖机进行功能测试

3. 对A4纸测试

2. 测试一个三角形

例子:有一个app,输入三角形的三条边长,判断是否能构成一个三角形(不考虑退化三角形,即面积为零的三角形),是什么样的三角形(直角、锐角、钝角、等边、等腰)。——考虑app兼容性!!

函数声明为:byte GetTriangleType(int ,int, int)。

(1) 如何用一个byte来表示各种输出情况?

(2) 如果你是一名测试工程师,应该如何写测试用例来完成功能测试呢?

答:

步骤一:分析这个函数的功能。

首先这个函数需要根据输入的a、b、c

  • 判断是否为三角形:
  • 识别等腰三角形
  • 识别等边三角形
  • 识别直角三角形
  • 识别锐角三角形
  • 识别钝角三角形

其次,用一个byte表示所有的输出情况。

步骤二:

首先根据等价化分类划分输入的等价类,用边界法来补充。

其次用一个byte表示所有的情况,1个byte有8位,考虑用0、1标志位编码表示输出的情况。例如:byte从右到左,第0位表示等腰三角形、第1位是等边三角形。。。第七位是三角形标志,剩余的第6位和第5位可以留作错误编码,比如用于表示两边之和小于第三边等。

分析条件有:

1. 是否是三角形:

(1) a>0

(2) b>0

(3) c>0

(4) a+b>c

(5) a+c>b

(6) b+c>a

(7)a<=0

(8)b<=0

(9)c<=0

(10)a+b<=c

(11)b+c<=a

(12)c+a<=b

2. 是否是等腰三角形

(13) a=b

(14) b=c

(15) a=c

(16) a^2 + b^2 >c^2

(17) b^2 + c^2 >a^2

(18) a^2 + c^2 >b^2 

(19) (a!=b)and(a!c)and(b!c)

3.是否是等腰直角三角形

(20) (A=B)and(A^2+B^2=C^2) 
(21) (B=C)and(B^2+C^2=A^2) 
(22) (C=A)and(C^2+A^2=B^2) 

4. 是否是等边三角形
(23) (A=B)and(B=C)and(C=A)   
(24) (A!=B)     (21)
(25) (B!=C)    (22)
(26) (C!=A)    (23)

再根据边界值法补充测试用例:

(27) 三个零

(28) 有特殊字符

(29) 超过边界值

测试用例id 条件 输入 预期输出 描述
1 (1)-(6) (3, 4, 5) 10001000 锐角三角形
2 (7) (1, 1, 3) 00000000  非三角形
3 (8) (0, 2, 3) 00000000  非三角形
4 (9) (1,0,2) 00000000 非三角形
5 (10) (1, 2, 3) 00000000 非三角形
6 (11) (1, 3, 2) 00000000 非三角形
7 (12) (3, 1, 2) 00000000 非三角形
8 (1)-(6)、(13)(16) (3, 3, 4) 1 等腰三角形
9 (1)-(6)、(14)(17) (3, 4, 4)   等腰三角形
10 (1)-(6)、(15)(18) (3 ,4, 3)   等腰三角形
11 (1)-(6)、(20) (2, 2, ^2)    
12 (1)      
13        
14        
15        
16        
17   (a, 1, 2)    
18   (@, 2, 3)    
19        

三、函数的测试

1. 对函数str()的测试

 主要考察:边界、基本情况、鲁棒性、性能及算法优化

2. 个函数实现对字符串中第三个字符的替换,设计测试用例

四、Linux下命令的测试

1. cp命令设计测试用例

 
原文地址:https://www.cnblogs.com/lesleysbw/p/6402364.html