面试准备——(一)测试基础(3)测试用例的编写
http://www.cnblogs.com/lesleysbw/p/6402364.html
一、游戏测试
1. 你有玩过什么游戏
一般玩的比较多的是手游,比如:糖果传奇、消灭星星、密室逃脱,以及前段时间比较风靡的阴阳师。
在电脑上,QQ欢乐四川麻将,以前还会玩一些经营类游戏,初高中的时候是:QQ宠物、QQ农场,大学的时候玩过模拟人生
2. 什么样的游戏可以称为一个好的游戏
1. 首先,最直观的感觉,精致的画风、恰到好处的背景音乐和优秀的故事情节。
对于游戏第一眼是UI界面,整体的画风、恰到好处的背景音乐,会让玩家赏心悦目,眼前一亮。
其次,一个大型的一点的游戏,相当于是一个虚拟世界,所以这个世界首先要有逻辑、故事情节不用太复杂,但是引人入胜。
2.易操作性
操作不能过于复杂和困难。
最经典的俄罗斯方块,操作只有上下左右,但是却一直延续至今
3. 竞技性,设置的关卡难但是经过努力会过,关卡过了以后有奖励机制
游戏中设置关卡是一定有难度阶梯的,随着前几关的熟悉,到后面越来越难。但是难度也不能特别不合理,不能称为一种套路
例如,之前我有玩过一个游戏,叫做小时代的换装游戏。
每一个关卡就是一个女生在打扮自己,然后评分,只有达到一定分数才能成功闯关,并且解锁更高级的衣服。
开始我玩的挺开心的,但是后面发现,每套衣服的搭配成了一种套路,不管这一关卡的主题, 只要搭配了其中几件很难得到的衣服就绝对可以有高分。同时,到了后面,关卡所必须的衣服实在太难,只能花钱购买。所以无奈之下只有弃玩。
4. 有抽奖或者连续登录、节假日奖励机制,可以让玩家保持一个新鲜度,并且刺激每天玩耍。
比如之前我玩的糖果传奇,累计登录的时间越久获得的奖励越高级,一旦终止所有奖励从头开始,于是我为了这个奖励每天都会登录,一登录就会忍不住玩耍。
其次,抽奖的东西是不确定的,存在是特别好的道具的可能,所以我每天最期待的就是抽奖。
2. 游戏测试:
1. UI测试:
画风、故事情节、背景音乐、文字的契合度
图片的显示、文字的排版、布局等
2. 功能测试
游戏分类很广泛,例如:射击类、经营类、竞技类等等。首先根据需求说明书,确定所测部分的具体流程、功能。
1. 我认为游戏测试最重要的是数值。
数值代表了一个角色的多种状态、行为、装备、技能、财富,一旦一个发生了变化,其他也会随之变化。同时如果一旦出错,例如我之前玩candy crush原有的金币全部消失,则会引起玩家极大的不满,或者弃玩。
所以尽可能的用边界值分析法和等价类划分法去模拟各种可能,测试角色的各种情况。
2. 活动
游戏会根据节假日、累计登录、抽奖创建各种抽奖或者奖励活动。所以我们需要确认活动的开始、终止时间,累计登录的次数、奖励是否和预期相同等
对于组队完成任务这种,更加复杂,需要将多角色融合在一起。
3. 存档。
- 如果暂停,是否有存档
- 在游戏中途如果退出是否有存档
- 如果需要联网,如果断网,是否有存档
3. 可用性测试
比如:
1. 需要重力感应的游戏,是否能够很好的识别到我们的动作。
2. 触屏的接触点灵敏
4. 性能测试
在游戏中,打开时间太长,或者游戏过程中出现卡顿都是会让玩家有厌倦感的。
1)手游:主要是客户端的性能测试
打开游戏、在游戏中响应时间、是否出现卡顿情况,内存占有、耗电量、流量等。
2)网游:服务器端的性能也十分重要
所以还需要对服务器端的CPU、内存情况进行测试
5. 安全测试
1. 用户端:用户是否需要登录/注册,如果需要注册,在注册框应该考虑:
- 防止JS脚本注入、SQL语句注入
- 防止暴力登陆——登录密码连续错误几次,需等待时间或者短信验证
- 是否允许一台机器多用户,或者一个用户在多台机器上登录
2. 服务器端:
- 用户存档信息是否安全、完整
- 禁止外挂
- 合服时,信息的存储
6. 兼容性测试
不同的浏览器、手机端、电脑系统。
7. 压力测试、强度测试
长时间多用户在线,服务器的CPU、内存情况,
3. 测试俄罗斯方块
1. UI界面
图像显示、文字排版是否合理规范,背景音乐是否恰当
2. 功能测试:
首先分析,俄罗斯方块主要有四个操作:左移、右移、变换方块、向下加速。
操作过程是:一个方块如果填补了一行的空缺之处,则消除对应行,否则一直累积,如果累积的高度达到了最大限制,则失败。
结合等价类划分法和边界值分析法,我们设计测试用例主要从几个方面:
- 四个操作是否恰到好处,反应不会太迟钝也不会太灵明
- 当一个方块掉下去填补了一行的空缺处后,是否填补行消除,但是方块其他部分没有消失,未消除行整体向下移。
- 当一个方块掉下去后,若没有行被填补,则行数累加
- 一些边界值情况:只有一行就到最大行了,这个时候消除一行是否有效降低行数;不做操作,等待游戏自己结束的情况等。
- 如果暂停,是否有存档
- 在游戏中途如果退出是否有存档
- 如果需要联网,如果断网,是否有存档
3. 可用性测试;
- 如果是四个上下左右键,则检查灵敏度且键盘放置的位置是否合适
- 如果是按照重力感应,检测对动作的识别度
4. 性能测试:
1. 客户端:CPU、内存、耗电情况、流量情况、游戏
5. 安全性:
1. 用户端:用户是否需要登录/注册,如果需要注册,在注册框应该考虑:
- 防止JS脚本注入、SQL语句注入
- 防止暴力登陆——登录密码连续错误几次,需等待时间或者短信验证
- 是否允许一台机器多用户,或者一个用户在多台机器上登录
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. 安全测试
- 检查登录生成的Cookie是否为httpOnly,这是为了防止XSS(跨站脚本攻击),窃取cooki内容。
- 用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
- 用户名和密码的输入框,应该屏蔽SQL 注入攻击
- 错误登录的次数限制(防止暴力登录)
- 用户名和密码是否通过加密的方式,发送给服务器
- 用户明和密码的验证,应该是服务器端验证,而不能单单是在客户端用JavaScript
- 考虑是否支持多用户在同一机器上登录
- 考虑同一用户在多台机器上运行
5. 可用性测试
- 是否可以全用键盘操作——快捷键
- 输入用户名、密码后,按回车能否登录
6. 兼容性测试
- 不同的浏览器
- 不同的设备:电脑、手机、IPad
- 不同的平台:Mac、Windows
-
不同的分辨率
(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)兼容性测试
- 主流浏览器
- 不同电脑平台:Windows、Mac
- 不同移动设备:iPad、手机(Android、iPhone)
- 不同分辨率
二、实物的测试
1. 杯子的测试
首先分析杯子的设计需求说明书,确定它的界面设计、功能可和另一些制作技术(例如:材质,耐热程度等),其次从以下几个方面进行测试:
1. 界面测试
- 杯子图案是否符合设计需求,印刷合理、规范
- 杯子颜色是否符合设计需求
- 杯子形状是否符合设计需求
- 杯子上的印刷字体是否符合设计需求、排版合理、没有错别字
- 杯子的重量是否符合设计需求
- 杯子是否有异味
2. 功能测试
根据杯子的用途、规格、承受的冷热程度等(假设杯子的规格为:100ml,杯子承受的最高温度:100度),依据边界值分析法和等价类划分法,确认测试用例如下:
- 杯子能否装100ml的水
- 杯子盛入50摄氏度的水
- 杯子盛入100摄氏度的水
- 杯子盛入0摄氏度的水
- 快速的装满水,看是否漏水
- 装满水后,放置几天,查看是否漏水
- 用过几天以后,杯子的内壁颜色是否脱落
3. 安全性测试
- 杯子的材料是否有害人身体健康
- 放入微波炉中,是否会爆炸、融化
- 从桌子掉到水泥地会否破碎
- 杯子边缘是否有缺口,容易划伤嘴巴
- 杯子内壁的燃料会否溶解到水中
4. 可用性测试
- 是否容易导热-烫手
- 是否有杯柄,方便端
- 杯子是否有防滑垫
对一个自动贩卖机进行功能测试
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命令设计测试用例