2023年6月21日发(作者:)

测试基础-测试⽤例编写⼀、游戏测试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⾥⾯的⼀个页⾯,继承se类。通过调⽤对应页⾯类的⽅法,数据层的数据、增加断⾔(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. ⽤户明和密码的验证,应该是服务器端验证,⽽不能单单是在客户端⽤JavaScript7. 考虑是否⽀持多⽤户在同⼀机器上登录8. 考虑同⼀⽤户在多台机器上运⾏5. 可⽤性测试1. 是否可以全⽤键盘操作——快捷键2. 输⼊⽤户名、密码后,按回车能否登录6. 兼容性测试1. 不同的浏览器2. 不同的设备:电脑、⼿机、IPad3. 不同的平台:Mac、Windows4. 不同的分辨率

(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、Mac3. 不同移动设备: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<=b2. 是否是等腰三⾓形(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) 超过边界值测试⽤例id1234567891条件(1)-(6)(7)(8)(9)(10)(11)(12)(1)-(6)、(13)(16)(1)-(6)、(14)(17)(1)-(6)、(15)(18)(1)-(6)、(20)(1)

输⼊(3, 4, 5)(1, 1, 3)(0, 2, 3)(1,0,2)(1, 2, 3)(1, 3, 2)(3, 1, 2)(3, 3, 4)(3, 4, 4)(3 ,4, 3)(2, 2, ^2)

预期输出1000 00000000 000000001

描述锐⾓三⾓形⾮三⾓形⾮三⾓形⾮三⾓形⾮三⾓形⾮三⾓形⾮三⾓形等腰三⾓形等腰三⾓形等腰三⾓形

16

171819

(a, 1, 2)(@, 2, 3)

三、函数的测试1. 对函数str()的测试 主要考察:边界、基本情况、鲁棒性、性能及算法优化

2. 个函数实现对字符串中第三个字符的替换,设计测试⽤例四、Linux下命令的测试1. cp命令设计测试⽤例

2023年6月21日发(作者:)

测试基础-测试⽤例编写⼀、游戏测试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⾥⾯的⼀个页⾯,继承se类。通过调⽤对应页⾯类的⽅法,数据层的数据、增加断⾔(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. ⽤户明和密码的验证,应该是服务器端验证,⽽不能单单是在客户端⽤JavaScript7. 考虑是否⽀持多⽤户在同⼀机器上登录8. 考虑同⼀⽤户在多台机器上运⾏5. 可⽤性测试1. 是否可以全⽤键盘操作——快捷键2. 输⼊⽤户名、密码后,按回车能否登录6. 兼容性测试1. 不同的浏览器2. 不同的设备:电脑、⼿机、IPad3. 不同的平台:Mac、Windows4. 不同的分辨率

(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、Mac3. 不同移动设备: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<=b2. 是否是等腰三⾓形(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) 超过边界值测试⽤例id1234567891条件(1)-(6)(7)(8)(9)(10)(11)(12)(1)-(6)、(13)(16)(1)-(6)、(14)(17)(1)-(6)、(15)(18)(1)-(6)、(20)(1)

输⼊(3, 4, 5)(1, 1, 3)(0, 2, 3)(1,0,2)(1, 2, 3)(1, 3, 2)(3, 1, 2)(3, 3, 4)(3, 4, 4)(3 ,4, 3)(2, 2, ^2)

预期输出1000 00000000 000000001

描述锐⾓三⾓形⾮三⾓形⾮三⾓形⾮三⾓形⾮三⾓形⾮三⾓形⾮三⾓形等腰三⾓形等腰三⾓形等腰三⾓形

16

171819

(a, 1, 2)(@, 2, 3)

三、函数的测试1. 对函数str()的测试 主要考察:边界、基本情况、鲁棒性、性能及算法优化

2. 个函数实现对字符串中第三个字符的替换,设计测试⽤例四、Linux下命令的测试1. cp命令设计测试⽤例