V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ChrisFreeMan
V2EX  ›  程序员

请问怎么保证自己的项目不会每次更改一个地方就埋下数个新的 bug。

  •  1
     
  •   ChrisFreeMan · 14 天前 · 1110 次点击

    业余时间写了个个人项目(一个桌面 GUI 应用),代码量是自己个人项目中最大的,但目前没有多少用户,主要是自己在抽空开发和测试,经常因为功能改动或者优化导致出现一些难以发现的 bug ,很多时候 bug 要过好久才发现,绝大部分的用户宁愿直接卸载应用也懒得发一封反馈邮件。导致很多用户默默流失。

    现在也做了一些补救措施,比如延长自行测试的时间,极大地简化反馈的流程并主动无打扰的情况下邀请反馈,尽可能的减少破坏性的更改,并且在考虑给予终身免费会员来邀请一些朋友来作为活跃用户。

    我个人实在是认知有限,想恳请各位经验开发人士能够慷慨的指点一二。

    17 条回复    2024-12-05 08:47:26 +08:00
    h1298841903
        1
    h1298841903  
       14 天前   ❤️ 1
    1. 是个单机应用,无法联网吗? 正常来说,会对每个操作路径都进行埋点,看哪一步操作中间断掉了,数据有异常,可以及时发现。
    2. 另外,还是要完善自动化测试,编写 UI 点击脚本。
    3. 此外,可以增加不同版本,比如:内测版、先遣版、稳定版。
    ChrisFreeMan
        2
    ChrisFreeMan  
    OP
       14 天前
    @h1298841903 感谢回复,应用是本地应用加可选的联网功能,我没有写过 UI 自动化测试脚步,因为处于早期频繁开发状态,担心工作量太大难以维护。应用是上架在 app store ,目前的话有 testFlight 版本,但是未邀请任何其他人参加,不知道怎么找到意愿测试用户。
    fenglirookie
        3
    fenglirookie  
       14 天前
    Mac 软件呀
    ChrisFreeMan
        4
    ChrisFreeMan  
    OP
       14 天前
    @fenglirookie 是的
    hdfg159
        5
    hdfg159  
       14 天前
    单元测试全覆盖了吗
    lambdaq
        6
    lambdaq  
       14 天前   ❤️ 1
    你是否在寻找:

    全链路、全界面免埋点事件跟踪还原监控系统。
    Configuration
        7
    Configuration  
       14 天前   ❤️ 1
    无法绝对避免的,只能是多测试;也可以上 TestFlight 让用户帮你测
    jeesk
        8
    jeesk  
       14 天前 via Android   ❤️ 1
    让 反馈更加容易呗, 增加一个按钮,可以直接上传日志,或者发送邮件,邮件中携带附件。
    jeesk
        9
    jeesk  
       14 天前 via Android
    按钮旁边的文字最好温柔点:

    如果您有什么建议和反馈亲随时联系我们, 然后弹出界面,发送邮件或者反馈文字框。


    别忘了表达感谢,xx 应用离不开用户的支持。
    反馈让应用变得更加好用。
    ChrisFreeMan
        10
    ChrisFreeMan  
    OP
       14 天前 via iPhone
    @jeesk 感谢回复🙏目前的话反馈按钮隐藏在 macOS 顶部菜单栏的帮助栏里面,为了不影响界面整洁,我在考虑怎么引入到更合适免打扰的位置,我会加上那些感谢信息的。
    skydcnmana
        11
    skydcnmana  
       14 天前   ❤️ 1
    单元测试啊,高覆盖的单元测试,每次修改时都跑一遍,就行了
    importmeta
        12
    importmeta  
       14 天前   ❤️ 1
    学过软件工程这门课吗? 可以选择适合自己的软件工程测试阶段常用的测试方法和覆盖标准, 可以找找软件工程书籍看看, 大致看看就行了. 然后再结合 AI 与你的项目代码实践一下, 估计学个几天就差不多了.
    importmeta
        13
    importmeta  
       14 天前   ❤️ 1
    一定要找一个适合你的覆盖标准来写或者生成测试用例, 我也在开发自己的项目, 我也写了好多测试, 我用的路径覆盖, 但是花了我大量的时间
    donaldturinglee
        14
    donaldturinglee  
       14 天前   ❤️ 1
    可以去了解一下 TDD
    ChrisFreeMan
        15
    ChrisFreeMan  
    OP
       14 天前
    @importmeta 感谢回复,这方面知识确实薄弱,非科班,我主要也是怕写测试太花时间,本来能专注写代码时间不多,我会了解一下,希望能找到平衡的方法。
    sampeng
        16
    sampeng  
       13 天前 via iPhone   ❤️ 1
    不写单元测试就是这样了,单元测试的最大价值就是保证你改一处不会买一送一。你的担心是多余的,维护单元测试时间和你延长 release 时间没区别。而且吧,现有 ai 最大的辅助地点就是秒写几百行单元测试用例,改吧改吧就能用了。单元测试后补工作量巨大,我的建议是发现一个 bug ,把这个 bug 涉及的函数进行单元测试。但是,后加单元测试有个巨坑:你的代码大概率不适合单元测试,就要重构。从目前来看,可能最合适的就是 ui 的自动化集成测试比较适合。这样一来只需要对 ui 进行黑盒测试。只需要解决数据的先后关系就行了。比对虽有函数都单元测试工作量小多了。相当于你延长发布时间用来写 ui 的单元测试。相当于给自己请了个测试工程师
    ChrisFreeMan
        17
    ChrisFreeMan  
    OP
       13 天前
    @sampeng 感谢回复,我还没搞过 UI 自动化测试,看来是有必要了解一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3206 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:14 · PVG 20:14 · LAX 04:14 · JFK 07:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.