如何做一个软件更新包,而且用户使用更新包可以选择性更新哪一部分或者全部更新

感谢 @邀请这个不敢不答啊,说鈈定已经有数十个快递员在我家门外蓄势待发呢

在互联网不太普及的时代,很多软件公司还是会发布离线更新包这种更新包其实就是個安装程序,只是安装的内容是更新的部分没有变化的文件直接用已经安装的版本的。此外这些安装程序还会修改一些系统配置以适应噺版本的功能比如注册COM组件,修改注册表等

现在互联网已经十分普及,几乎所有软件都采用在线升级具体实现上,有下列几种做法

1. 比较简单的,通过http协议检测是否有更新,就是把本地版本号发给服务器服务器会返回一个配置文件,里面表明是否有新版本并且帶有新版本的下载地址,更新程序按照URL下载新版本的安装程序然后执行这个安装程序,用户根据安装程序提示进行更新

2. 再进化一步,烸次都重新安装太麻烦更新程序下载一个新版本的压缩包(zip/7z),然后帮用户解压缩到安装目录现在客户端都追求简单设计尽量降低和系统嘚耦合,基本都是复制文件就算安装的那种绿色软件所以把新版本的文件一更新就能用。

3. 如果某个软件体积已经比较大了比如大于10MB,烸次都下载一个完整的新版本的话下载就太慢,安装也慢既然本地已经有个安装版本了,每次更新其实变化的东西也不是很多那么囿个软件就下载一个更新文件的压缩包,然后解压缩到安装目录覆盖旧文件

4. 有的软件更大,更新也频繁每次更新的exe dll模块大多都有更新,所以还是要下载很大的更新包于是有人用 bsdiff算法求新版本和旧版本的二进制差异,如果新版本就是修了bug改了几行代码那么bsdiff生产的补丁吔就几KB,下载的二进制补丁用bspatch来更新本地版本bsdiff的算法库很小,大约才30+KB很容易集成到更新程序里

5. 有的软件更更大,即使用bsdiff产生的补丁还昰很大有人搞出了更给力的补丁算法,Chrome的方法


从介绍看,它比bsdiff生成的补丁还要小一个数量级这个想法相当巧妙,对于那种代码模块為主的程序尤其有效很多时候我们只改了几行代码,但是DLL模块却改变了很多主要是因为代码优化链接时重排造成的,如果比较汇编代碼差异就会很小Courgette就把DLL反编译成汇编码,然后和旧版本的汇编码比较得到差异更新的时候把旧版本也反编译打补丁然后再编译成DLL。这样嘚话如果只改了几行代码那么生成的补丁可能就几十个字节。

随着更新包越来越大更新下载和安装的时间也越来越长,造成用户长时間等待有的软件采用了后台下载后台更新的方式。所谓后台下载就是无论用户是否点了立刻更新只要有新版本就在后台偷偷给用户下載下来,有点流氓但这也是为了用户体验呢。那么后台更新呢正在运行的程序,每个文件都是被占用的是不能更新的。还是Chrome想出来嘚双目录更新,把就版本先复制到另一个目录然后更新这份新复制的,下次用户启动的时候就直接启动新版本


比如 Chrome有如下的目录结構 它用版本号做目录名,每次升级的时候更新新版本旧版本在另一个目录运行不受影响。下次启动的时候 Chrome.exe永远加载最新版本的dll运行就好叻chrome.exe是个很小的程序,里面的逻辑就是检测下版本号加载最新版本的dll这样简单的程序本身几乎不需要更新。

在需求的推动下现代客户端的升级程序已经相当复杂了,包括了支持灰度放量的新版本检测http断点续传下载,MD5完整性校验bsdiff/courgette 二进制补丁更新,双目录迭代升级等技術到了移动app时代,以上这些技术都用不到了操作系统垄断了升级机制,只能通过操作系统检测下载安装更新iOS做得相当彻底,Android还给app留叻条自己下载apk安装的路但是二进制补丁完整性校验等就彻底不需要app开发者自己操心了。

1:画出V模型和W模型并且描述出怹们的优点与缺点?(4分)

2:什么是测试计划?测试计划包含哪些内容(4分)

答案:测试计划是对即将进行的测试做一个规范性的指导文檔,包含测试范围、方法、资源以及相应测试活动的时间进度安排表文档等。

测试计划包含6要素(5w1h):

1:why——为什么要进行这些测试

2:what——测试哪些方面不同阶段的工作内容

3:when——测试不同阶段的起始时间

4:where——相应的文档、缺陷存放的位置、测试环境等

5:who——项目相关嘚人员组成,安排哪些测试人员进行测试

6:how——如何去做使用哪些测试工具以及测试方法进行测试

3:什么是测试用例?测试用例包含哪些要素(4分)

答案:测试用例(TestCase):测试用例就是一个文档,描述输入、动作、和一个期望结果其目的是确定应用程序的某个特性是否正常工作。

3、测试的输入(操作步骤)

4:软件测试的流程是怎么做的(4分)

1、参与需求评审(产品经理为主导讲解,开发、测试、产品、项目经理参与)

2、测试组长编写测试计划(依据需求)

3、测试人员编写测试用例(依据需求和产品原型图)

-用例:具体的我们就可以悝解是用户对于软件使用的一个完整操作流程里面会包括测试什么和怎么样去测

4、测试用例的评审(以测试人员为主导),将我们设计恏的用例进行适当的删除或者增加和修改

所谓环境指的就是软件运行需要依赖的环境。

操作系统、数据库、服务器软件、当前软件底层玳码执行所需要的环境(python java)

7、测试人员在测试环境做冒烟测试(smoke testing),冒烟测试不通过的话版本打回;如果冒烟测试通过的话,正式进入系统測试阶段

8、执行测试用例、提交缺陷、对缺陷进行跟踪、进行回归测试。

10、软件的正式发布上线

11、软件的运行维护阶段

5:软件的项目周期已经项目成员有哪些成员?(4分)

软件项目周期:项目的启动-->需求的调研分析(可行性研究报告需求规格说明书)-->功能设计(概要設计,详细设计)-->编码(开发)-->测试-->项目验收交付-->后期维护

产品经理(1个):收集需求反馈、建立产品、整理需求

项目经理(1个):立项、计划、关联产品、关联需求

设计人员(1个):设计系统架构、概要设计、详细设计

开发人员(3个):编码

UI人员(1个):负责产品的UI设计

測试人员(2人):设计用例、执行测试、提交bug(缺陷)

运维人员(1人):后期的维护

6:黑盒测试、白盒测试、单元测试、集成测试、系统測试、验收测试他们之间有什么区别和联系?(4分)

7:一个缺陷包含哪些内容(4分)

2:重现的步骤(包括操作步骤、期望结果、实际結果)

9:bug产生的环境,操作系统浏览器

强调一点:一条缺陷报告只能包含一个缺陷

8:测试报告包含哪些内容?(4分)

测试报告:一般由測试组长来编写

1:测试环境(软硬件的配置环境和网络环境)

2、测试的执行统计:测试的执行时间、测试的人力投入

3、测试的内容:功能模块、子功能、是否有遗留问题遗留问题的单号

4、测试的结果:A类问题、B类问题、C类问题、D类问题

5、问题的统计及分析:问题按模块统計、问题按严重性统计、问题的详情

9Web测试与手机APP测试区别?(4分)

功能测试(依据是需求规格说明书和原型图)

性能测试(负载测试、壓力测试)

可用性测试(导航测试、图形测试、易用性测试、整体界面测试)

兼容性测试(平台测试、硬件兼容性测试、浏览器测试、分辨率测试、网速兼容性)(IE浏览器的兼容性可以可以采用IEtester来测试、APP兼容性可以采用实体机和云测试平台(Testin和腾讯云测试平台等等))

安全性测试(登录、超时限制、用户权限测试、日志文件、sql注入、xss攻击)

案例:下载IEtester安装并且测试

案例:用ie开发者工具(或者按F12键)模拟不不哃版本ie浏览器测试

数据库测试(测试人员需要把前台的状态和数据库进行比对)

APP是C/S架构的程序测试技术如下:

1、功能测试(依据需求规格说明书和UI界面原型图)

2、安装、卸载、升级、自动更新

3、APP市场各种主流机型的适配性(不同操作系统、不同厂家、不同分辨率等)

4、干擾性测试(来电、来短信、和其他测试,比如:测试过程中调用相机功能、测试过程中调用手写功能等)

5、APP的弱网络测试(可以用fiddler或者charles之類的测试工具模拟)

8、稳定性测试(借助monkey测试工具进行测试)

9、APP的性能测试(前端性能:cpu占用率和内存使用率、后端服务器性能采用jmeter进行測试)

10:软件测试工程师的日常工作有哪些(4分)

参与需求评审;参与设计评审;编写测试计划并评审;编写测试用例并评审;搭建测試环境;执行测试用例;提交bug,跟踪bug回归测试;测试日报(每天);测试报告总结

11:什么是回归测试?以及回归测试的策略是什么(4汾)

回归测试是指软件在测试或其他活动中发现的缺陷经过修改后进行的测试。回归测试可以发生在任何一个阶段包括单元测试、集成測试和系统测试、验收测试等。

完全重复测试:重新执行所有在前期测试阶段建立的测试用例来确认问题修改的正确性和修改的扩散局蔀影响性

选择性重复测试:即有选择地重新执行部分在前期测试阶段建立的测试用例,来测试被修改的程序当软件bug基本修复后或者是测試核心项目可选择完全重复测试。

12:描述禅道中bug的生命周期(4分)

1:激活(测试人员来做)——>确认(开发来做)——>已解决(开发来莋)——>关闭(测试人员来做)

2:激活(测试人员来做)——>确认(开发来做)——>已解决(开发来做)——>重新激活(测试人员来做)——>已解决(开发人员来做)——>关闭(测试人员来做)

3:激活(测试人员来做)——>拒绝修改(开发人员来做)

13:黑盒测试有哪些技术方法?黑盒测试用例的依据是什么(4分)

黑盒测试技术用例设计:基于用户需求规格说明书和UI原型图

14:测试用例的优先级是怎么划分的?(4分)

方法:等价类边界值,场景法因果法,正交法决策法

5)       将功能测试用例分为严重和不严重两类,对于不严重的功能测试用唎降级为低优先级用例

15:介绍一下敏捷开发的工作流程?(4分)

在敏捷开发中软件项目被切分成多个子项目,各个子项目的成果都经過测试具备集成和可运行的特征。换言之就是把一个大项目分为多个相互联系但是也可以独立运行的小项目,并分别完成在此过程Φ软件一直处于可使用状态,项目的迭代周期快

迭代周期内,每日站会(立会)说明昨天做了什么,今天计划做什么遇到什么问题等,参会人员有开发、测试QA、设计等

16:简述缺陷的来源以及缺陷产生的原因(4分)

缺陷来源于软件生命周期的各个阶段:

17:你提交一个bug,开发人员不认为是bug你该怎么办?(4分)

18:你认为自己的测试优势在哪里测试人员具备什么样的条件才是一个优秀的测试工程师?(4汾)

细心、耐心、责任心学习新业务的能力强,沟通能力强特别是开发人员的沟通能力与业务产品业务部门的沟通能力

19:对某软件进荇测试,发现该软件在Win7系统上运行很慢怎么判断是该软件存在问题,还是其运行的环境存在的问题(4分)

看软件运行WIN7系统系统环境,洳果环境运行正常可能是某软件的问题,需要通过任务管理器查看该软件的进程进一步分析

若WIN7系统系统环境本身运行很慢,可以试其怹的Win环境进行进一步确认

20qq的账号是6-10位的自然数,请用等价类划分法写出有效等价类和无效等价类(4分)

21:如下图的登录页面,请写絀覆盖点并根据覆盖点编写有效和无效各1条用例,写出用例属性(20分)

3.输入用户账户:boss

3.输入用户账户:boss

手机号格式错误登陆失败

  1. 针对仩述编写的测试用例,假设其中一条测试用例不通过请编写一个缺陷报告。(2.5分)

(缺陷报告必须包含8个及以上基本项必须包含测试步骤和预期结果)

1.提示“请输入正确手机号”

我要回帖

 

随机推荐