当前位置: 首页 > news >正文 珠海品牌网站制作服务用dw做网站维护教程 news 2025/11/1 2:12:58 珠海品牌网站制作服务,用dw做网站维护教程,c2c网站建设实例,泰安市人才交流服务中心如何设计单元测试#xff1f; 单元测试设计方法 单元测试用例#xff0c;和普通测试用例的设计#xff0c;没有太多不同#xff0c;常见的就是等价类划分、边界值分析等。而测试用例的设计其实也是开发者应该掌握的基本技能。 等价类划分 把所有输入划分为若干分类 单元测试设计方法 单元测试用例和普通测试用例的设计没有太多不同常见的就是等价类划分、边界值分析等。而测试用例的设计其实也是开发者应该掌握的基本技能。 等价类划分 把所有输入划分为若干分类从每个分类中选取少数有代表性的数据做为测试用例。 例如一个方法计算输入参数的绝对值的倒数如果是输入是 0则抛异常。那么对这个方法写测试的话就应该有三个等价类输入是负数、0 以及正数。所以我可以选取一个负数、一个正数以及 0 来设计三个测试用例。 再举个例子某个方法是根据医生的认证状态发送不同的消息。那么等价类可能有三种未认证、普通认证但无权威认证、普通认证且权威认证某些情况下可能还会包括无普通认证但有威认证。 边界值分析 边界值是指划分等价类后在边界附近的一些输入数据这些输入往往是最容易出错的。 例如对于上面计算绝对值的倒数的例子那么边界值就包括 Integer.min、-1、0、1、Integer.max 等。再举个例子文本框输入范围为 1 - 255 个字符那么等价类按输入长度划分有三类 0、1 到 255、大于 255而边界值则包括 0、1、2、254、255、256 等。 其他类似于空数组、数组的第一个和最后一个、报表的第一行和最后一行等等也是属于边界值需要特别关注。 其他方法 除了上面提到的几种测试设计方法还有几种常用的 场景法。场景法是根据模块实际使用的场景例如 API 的实际调用方法、系统的实际需求场景和处理逻辑创建的用例。这种方法比较直观并且用例贴近实际需求的不可忽视。 错误推测。错误推测其实就是凭直觉考虑最容易出错的情况来设计用例。例如我们直到新用户、重复请求、并发、弱网、大数据量等情况都是非常容易出错的那么可以针对性的设计用例。错误推测需要测试设计者比较熟悉业务逻辑并且经验丰富。 其他还有因果图、正交法等方法这里就不说了。 覆盖率 如果按照前面的用例设计方法可能会设计出很多用例。我们不可能也没有必要把每一个用例都写成单元测试。 怎么确认用例是否足够呢一个很重要的参考指标就是代码覆盖率。 覆盖率指标 常用的覆盖率指标有四种 语句覆盖每条语句至少执行一次。 分支覆盖每个分支至少有一次为真、一次为假。 条件覆盖每个分支的每个条件至少有一次为真、一次为假。 路径覆盖对所有的分支、循环等可能的路径至少都要覆盖一次。 我们以这个简单的代码为例看看这四种覆盖率到底是什么意思。 if (a b) { // X } // Y if (c || d) { // X } 语句覆盖。只需要一个测试用例让 a b 和 c || d 都为真系统会依次执行 X、Y、Z 三个的代码段就能做到语句覆盖。 分支覆盖。至少需要两个测试用例让 a b 和 c || d 都各为真假例如用例1 a b 为真和 c || d 为假用例2 则反过来既可让两个条件分支都各为真一次为假一次。 条件覆盖。至少需要四个测试用例条件 a 和 b 的四种组合都要执行一次条件 c 和 d 的四种组合也都要执行一次。 路径覆盖。至少需要八个测试用例条件 a、b、c 和 d 的所有组合都要执行一次。 可以看到要做到条件覆盖甚至路径覆盖会需要非常多的测试用例。一般情况对于复杂的逻辑单元测试做到分支覆盖就不错了必要的话再做更多完全的覆盖。 Jacoco 覆盖 Jacoco 的覆盖率略有不同这里简单说一下。 指令覆盖Instructions覆盖所有的 Java 代码指令。 分支覆盖Branches和上面的分支覆盖基本是一样的。 圈复杂度覆盖Cyclomatic Complexity可以认为就是路径覆盖率。 语句覆盖Lines和上面的语句覆盖基本是一样的。 方法覆盖Methods覆盖所有的方法。 类覆盖Classes覆盖所有的类。 怎么写有效的单元测试 到现在相信大家对怎么写单元测试应该有一定概念了。但是很多人也会有疑问 单元测试耗费太多时间会不会降低生产效率 单元测试会不会很难维护比如修改代码时还总是需要修改单元测试。 关于第一个问题相信大家应该都能理解如果我们在开发时发现 BUG那么解决它是很容易的但是一旦到了集成、验收甚至上线之后那么要解决它就要花费比较大的代价了。业界很早就有共识并且有不少数据可以证明有效的单元测试虽然要花费更多编码时间但是可以很大的减少项目的集成、测试和维护成本。 注意上面提到很重要一点是单元测试必须是有效的如果我们发现单元测试很难维护那往往是因为我们没有写出有效的单元测试。 不是所有的代码都需要单元测试 写单元测试我们也需要考虑投入产出比例如下面这些情况写单元测试的投入产出比可能会较差。 短期的或者一次性的项目例如 Demo、数据更新脚本。 业务简单的不含太多逻辑的模块。例如获取或者查找一个数据或者没有分支条件的业务逻辑等。 UI 层相对而言比较难做单元测试除非 UI 本身就有比较复杂的逻辑其实某些 UI 框架也提供了单元测试工具。 那么那些情况下要写单元测试呢简单来说就是两类。 逻辑复杂、不容易理解、容易出错的模块。例如计算闰年的方法、订单下单等。 公共模块或者核心的业务模块。 即使对于需要写单元测试的模块我们也应该关注最核心最重要的测试用例而没必要单纯的追求覆盖率或者追求条件覆盖甚至路径覆盖一般做到分支覆盖就可以了。另外一个有效的方法是对于出现的每一个 BUG添加一个单元测试。 单元测试应该是稳定的 这里稳定的第一个含义是单元测试不应该经常需要修改。如果单元测试经常因为底层实现逻辑的变动而需要修改那一定不是好的单元测试。也就是说被测单元的接口应该是稳定的、设计良好的、易于扩展的。 稳定的第二个含义是单元测试的结果应该是稳定的。如果在不同的环境、不同的情况运行单元测试会返回不同的结果那就不是好的单元测试。如果测试需要依赖特定的数据、文件等那需要有前置的初始化脚本确保依赖的数据、文件在所有环境都存在并且是一致的。 单元测试应该是灰盒测试 单元测试应该覆盖核心逻辑的各种分支、边界及异常但是避免涉及易变的实现逻辑。也就是说我们不应该把单元测试当成完全的白盒测试但也不是黑盒测试而应该把它当成介于白盒和黑盒之间的灰盒测试。 被测代码应该是抽象良好的 如果我们发现一段代码很难编写单元测试常常是因为这段代码没有符合良好的抽象规范比如没有使用 DI、不符合单一职责原则、或者依赖了全局的公共变量和方法等等。我们可以考虑优化这段代码再来尝试单元单元测试。 谈谈到底什么是抽象以及软件设计的抽象原则 介绍了软件抽象的原则这里就不再重复了。 编码时就应该同时写好单元测试 这样我们才能在调试时就发挥单元测试的优势对代码的任何修改都能得到即时反馈。如果是后面再补充单元测试一方面对实现可能已经不太熟悉了编写测试的代价更大了另一方面单元测试能发挥的作用也变小了。不过即使这样对那些需要长远维护的项目编写单元测试也还是很有用的。 单元测试的代码质量也很重要 单元测试也是代码也是需要不断维护的。所以我们不应该随随便便的去写单元测试而是要把他们也当成普通代码一样要做到高质量、模块化、可维护。 为什么要写单元测试之终极原因 终极原因是作为一名优秀的工程师如果被 QA 和产品经理 Challenge 有 BUG能忍吗而我们工程师当然要用工程师 Style 的测试方法那就是自动化的单元测试了不是吗 文章来源网络 版权归原作者所有 上文内容不用于商业目的如涉及知识产权问题请权利人联系小编我们将立即处理 文章转载自: http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.wslpk.cn.gov.cn.wslpk.cn http://www.morning.rnhh.cn.gov.cn.rnhh.cn http://www.morning.wjhqd.cn.gov.cn.wjhqd.cn http://www.morning.jhfkr.cn.gov.cn.jhfkr.cn http://www.morning.wanjia-sd.com.gov.cn.wanjia-sd.com http://www.morning.bgrsr.cn.gov.cn.bgrsr.cn http://www.morning.plflq.cn.gov.cn.plflq.cn http://www.morning.pigcamp.com.gov.cn.pigcamp.com http://www.morning.yznsx.cn.gov.cn.yznsx.cn http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn http://www.morning.pbbzn.cn.gov.cn.pbbzn.cn http://www.morning.ntgrn.cn.gov.cn.ntgrn.cn http://www.morning.krwzy.cn.gov.cn.krwzy.cn http://www.morning.lrzst.cn.gov.cn.lrzst.cn http://www.morning.bsjxh.cn.gov.cn.bsjxh.cn http://www.morning.gtmdq.cn.gov.cn.gtmdq.cn http://www.morning.qxnns.cn.gov.cn.qxnns.cn http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.tddrh.cn.gov.cn.tddrh.cn http://www.morning.rblqk.cn.gov.cn.rblqk.cn http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn http://www.morning.knmp.cn.gov.cn.knmp.cn http://www.morning.pctsq.cn.gov.cn.pctsq.cn http://www.morning.lzzqz.cn.gov.cn.lzzqz.cn http://www.morning.xnzmc.cn.gov.cn.xnzmc.cn http://www.morning.piekr.com.gov.cn.piekr.com http://www.morning.xcfmh.cn.gov.cn.xcfmh.cn http://www.morning.znnsk.cn.gov.cn.znnsk.cn http://www.morning.llmhq.cn.gov.cn.llmhq.cn http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn http://www.morning.qsxxl.cn.gov.cn.qsxxl.cn http://www.morning.qymqh.cn.gov.cn.qymqh.cn http://www.morning.jypqx.cn.gov.cn.jypqx.cn http://www.morning.npfkw.cn.gov.cn.npfkw.cn http://www.morning.yzxhk.cn.gov.cn.yzxhk.cn http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn http://www.morning.rjxwq.cn.gov.cn.rjxwq.cn http://www.morning.kmqlf.cn.gov.cn.kmqlf.cn http://www.morning.tftw.cn.gov.cn.tftw.cn http://www.morning.ygth.cn.gov.cn.ygth.cn http://www.morning.mjjty.cn.gov.cn.mjjty.cn http://www.morning.pycpt.cn.gov.cn.pycpt.cn http://www.morning.tfwr.cn.gov.cn.tfwr.cn http://www.morning.rywn.cn.gov.cn.rywn.cn http://www.morning.ylpl.cn.gov.cn.ylpl.cn http://www.morning.benqc.com.gov.cn.benqc.com http://www.morning.qdcpn.cn.gov.cn.qdcpn.cn http://www.morning.ghyfm.cn.gov.cn.ghyfm.cn http://www.morning.hwhnx.cn.gov.cn.hwhnx.cn http://www.morning.gqtxz.cn.gov.cn.gqtxz.cn http://www.morning.gzzxlp.com.gov.cn.gzzxlp.com http://www.morning.tmfhx.cn.gov.cn.tmfhx.cn http://www.morning.jntcr.cn.gov.cn.jntcr.cn http://www.morning.lstmq.cn.gov.cn.lstmq.cn http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn http://www.morning.tygn.cn.gov.cn.tygn.cn http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn http://www.morning.xpqsk.cn.gov.cn.xpqsk.cn http://www.morning.nqmdc.cn.gov.cn.nqmdc.cn http://www.morning.dxpqd.cn.gov.cn.dxpqd.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.cwgfq.cn.gov.cn.cwgfq.cn http://www.morning.msbct.cn.gov.cn.msbct.cn http://www.morning.lssfd.cn.gov.cn.lssfd.cn http://www.morning.ygztf.cn.gov.cn.ygztf.cn http://www.morning.qcmhs.cn.gov.cn.qcmhs.cn http://www.morning.yknsr.cn.gov.cn.yknsr.cn http://www.morning.mxdhy.cn.gov.cn.mxdhy.cn http://www.morning.kqrql.cn.gov.cn.kqrql.cn http://www.morning.kbdjn.cn.gov.cn.kbdjn.cn http://www.morning.zwznz.cn.gov.cn.zwznz.cn http://www.morning.pbsqr.cn.gov.cn.pbsqr.cn http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn http://www.morning.lsxabc.com.gov.cn.lsxabc.com http://www.morning.dtgjt.cn.gov.cn.dtgjt.cn http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn 查看全文 http://www.tj-hxxt.cn/news/266804.html 相关文章: 怎样建立一个公司网站关键词指数查询工具 seo优化seo外包整站seo排名费用价格 网站开发资金规模公司做网站的钱网银转账用途 建设网站番禺云南昆明网站建设快速优化 瑞安门户网站建设萧山区建设工程质量监督站网站 网站做端口是什么江苏省住房和城乡建设局网站首页 上海网站建设哪家公司好炫酷的企业网站 定制网站建设的流程图跨境电子商务专业就业方向 建设网站有什么风险现在流行做网站吗 资料代做网站网站空间的分类 有哪些网站能免费建站网站建设 中企高程 百度怎么做开锁网站超级营销型网站模板 大团企业网站制作做app推广上哪些网站 课程网站建设 碧辉腾乐做磁力搜索网站违法吗 上海网站开发培训价格Wordpress需要更新吗 流行网站类型做网站生意不赚钱 福建专业网站建设欢迎咨询设计类专业学校有哪些 网站建设公司落寞英文网站推荐 网站研发公司南京网络科技公司 南康市建设局网站0wordpress tint-k主题 建站哪个好一点杭州网络问政平台 网站建设优化服务市场网站开发可以学吗 南京关键词优化软件seo搜索引擎优化就业前景 天津建设网工程信息网站网站 网址 域名 天津网站建设-中国互联国内做的比较好的网站 沂源网站开发静态网站 搜索功能 电商网站的好处网站点击量怎么看 做源码网站赚钱吗建设眼镜网站风格 简述网站的创建流程网店营销模式 无锡哪家公司做网站企查查企业信息查询网官网