テスト
- ユニットテストあれこれ〜Haskellerの視点から〜
- Haskellの単体テスト最前線
- Testing
- https://twitter.com/datgame/status/563269982721941505
- Functional TDD: A Clash of Cultures
- Practical testing in Haskell
- Flame graphs for GHC time profiles with ghc-prof-flamegraph
- CRogers/should-not-typecheck
- Announce: dejafu-0.1.0.0
- feuerbach/smallcheck
- Tasty
- Dynamic Test Suites in Haskell using Hspec and Tasty - YouTube
- Unit testing IO in Haskell
- The webdriver package
- Hspec: A Testing Framework for Haskell
- IO 部分の自動テスト
- 5 Ways to Test Applications that Access a Database in Haskell
- Breaking the Law: Verifying Typeclass Laws with QuickCheck and Deja Fu
- barrucadu/dejafu
- dejafu/async-dejafu
- 24 days of Hackage, 2015: day 3: HSpec; the importance of testing
- 24 days of Hackage, 2015: day 5: should-not-typecheck: making Haskell sort of dynamically typed with deferred type errors
- Phantheck, the Type-Level QuickCheck
- 24 days of Hackage, 2015: day 15: IOSpec: testing IO; and some QuickCheck tricks
- Hspecベストプラクティス
- Tests vs. Types
- Testing GHC with Stackage
- Speeding up the automated building and testing of our Haskell projects
- Fuzz testing distributed systems with QuickCheck
- Property-based Testing with QuickCheck in Playgrounds
- Lysxia/generic-random
- Quickfix all the things with Sarsi
- karun012/arion
- Test your benchmarks!
- Haskell Tutorials, a tutorial
- Behavior-driven development (BDD) in Haskell with Hspec
- async exceptions, STM, and deadlocks
- Behavior-driven development (BDD) in Haskell with Hspec
- rudymatela/fitspec
- Using types to unit-test in Haskell
- Fuzz testing Hexml with AFL
- stack runghcでtestを実行する
- Lysxia/metamorph - Monomorphize polymorphic functions for testing
- Code Checking Automation - Computerphile - YouTube
- hedgehog: Hedgehog will eat all your bugs.
- State machine testing with Hedgehog
- Invert Your Mocks!
- Reddit - Signature Inference for Functional Property Discovery: Thesis document
- OverloadedStringsとANNプラグマが干渉する場合の回避方法 - Qiita
- Stackで単体テストを書いて実行する - Haskell入門より - Qiita
- WAIアプリケーションの単体テスト - Haskell入門より - Qiita
- QuickFuzz Testing for Fun and Profit - YouTube
- Writing a Concurrency Testing Library (Part 1)
- Introduction to golden testing
- Neil Mitchell’s Haskell Blog: Understanding HLint rules
- 将来も使えるテストスイート (和訳) - Qiita
- HLint のルールを理解する (和訳) - Qiita
- 現在時刻をモックする Haskell ライブラリ time-machine を作ってみました - チェシャ猫の消滅定理
- Lysxia - A quick tour of generic-random
- Introducing Toxiproxy Haskell | Jake Pittis
- Haskell Stack + HSpecで特定のモジュールのテストだけ実行 - Qiita
- jship - Type-level Unit Testing in Haskell
- Fake: Generating Realistic Test Data in Haskell
-
[Testing Failure with Either Instead of Exception Haskell at Work](https://haskell-at-work.com/episodes/2018-03-18-testing-failure-with-either-instead-of-exception.html) - David Peter: Interactive Tests and Documentation via QuickCheck style Declarations - λC 2016 - YouTube
- Property based integration testing using Haskell!
- [1803.07130] A promise checked is a promise kept: Inspection Testing
- Keep Your Laziness in Check
- Queensland FP Lab - Introduction to state machine testing: part 1
- Queensland FP Lab - Introduction to state machine testing: part 2
- Philip Cunningham - Testing distributed-process Apps Using Hspec
- Well-Typed - The Haskell Consultants: An in-depth look at quickcheck-state-machine
- psibi/fakedata: Haskell Library for producing quality fake data
- A gentle introduction to symbolic execution | Monic Blog
- Property-Based Testing in a Screencast Editor, Case Study 1: Timeline Flattening | Oskar Wickström
- HSpec と ghcid でHaskellの快適なTDD環境を構築する - Qiita
- graninas/automatic-whitebox-testing-showcase: Showcase for an approach how to make automatic white-box testing with Free monads.
- [1803.07130] A promise checked is a promise kept: Inspection Testing
- Time Travelling and Fixing Bugs with Property-Based Testing | Oskar Wickström
- using-brain-less-refactoring-yahtzee
- Unit testing effectful Haskell with monad-mock
- HUnit vs. QuickCheck
- How to use Hedgehog to test a real world, large scale, stateful app – jacobstanley.io
- 5 tips for better Hedgehog tests – jacobstanley.io
- Testing Haskell code with Stack, Ghcid and Hspec · PatchGirl
- HMock: First Rate Mocks in Haskell | by Chris Smith | Jun, 2021 | ITNEXT
- Hspec Hooks
- Hello from Sandwich | Sandwich
Property Testing
- How can I test a higher-order function using QuickCheck?
- The Design and Use of QuickCheck
- QuickCheck and Magic of Testing :: FP Complete
- Code your own QuickCheck (HOF) – Deque
- QuickCheck is fun, deal with it – Deque
- Code your own QuickCheck (Shrink) – Deque
- QuickCheck experiments on a DSL – Deque
- HaskellでのQuickCheckとData.ByteString.Char8の罠 - Qiita
- QuickCheck, Hedgehog, Validity
- Well-Typed - The Haskell Consultants: Integrated versus Manual Shrinking
- How to Specify it!
- Do disturb me | Verifying the Titular Properties of a Leftist Heap
- Effectful Property Testing
- pureblog - Migrating from QuickCheck to Hedgehog: mixed results
- 純粋関数のプロパティを記述するには - John Hughes氏のLambda Days 2020での講演より
import Data.List
import Test.QuickCheck
prop_sort :: [Int] -> Bool
prop_sort xs = sort xs == sort (sort xs)
$ ghci test.hs
...
Ok, modules loaded: Main.
*Main> quickCheck prop_sort
+++ OK, passed 100 tests.
*Main> verboseCheck prop_sort
Passed:
[]
Passed:
[-1]
Passed:
[6,-2]
Passed:
[5,-3,0,0,-5,-3,-3]
...
+++ OK, passed 100 tests.
HipSpec
- danr/hipspec
- Proving Type Class Laws for Haskell
- HipSpec: Automating Inductive Proofs of Program Properties
- Automating Inductive Proofs using Theory Exploration
- HipSpec - Automating Inductive Proofs using Theory Exploration
Doctest
- sol/doctest: An implementation of Python’s doctest for Haskell
- ドキュメントのテスト (doctest)
- Using doctest-discover with Stack
- phadej/cabal-doctest: A Setup.hs helper for doctest running
- Haskell で doctest(unittest)と QuickCheck(Property-based Testing) - ペンギン村 Tech Blog
デバッグ
- Debug.Trace
- 2.5. GHCiデバッガ
- criterion
- A criterion tutorial
- Tweag I/O - DIY benchmark history with Criterion and Shiny
- Perf for low-level profiling
- Control.Exception.Base (assert)
- 【Haskell】Debug.Traceとプロファイリングで幸せなデバッグ生活
- 24 days of Hackage, 2015: day 21: hood, GHood, Hoed: observation oriented debugging in Haskell
- JohnReedLOL/HaskellPrintDebugger
- 秒速でコピペしたいHaskellデバッグ用関数 - Qiita
- The Haskell Tracer Hat
- Haskell Object Observation Debugger
- 多相関数のprintfデバッグをGHCiで - www.kotha.netの裏
- Debugging C with Haskell’s Divisible
- bitemyapp - Alternatives to Typed Holes for talking to your compiler
- Neil Mitchell’s Haskell Blog: Announcing the ‘debug’ package
- Haskell でのデバッグ手法あれこれ | 雑記帳
- debug パッケージのアナウンス (翻訳)
- Moving Towards Dialogue: Collaborating with your computer using typed holes! by Vaibhav Sagar - YouTube
- Typed-Holes and Valid Hole Fits | Octopi
- Moving Towards Dialogue - Vaibhav Sagar
- Detecting the undetectable: custom type errors for stuck type families – ( )
- Valid Hole Fits
- github/deli
- When children processes exit - a debugging story
- 🚰 Hunting leaks with GDB
- Implement With Types, Not Your Brain! :: Reasonably Polymorphic
- GHCiでHaskellデバッグ チートシート - Qiita
- ghc-debug/call-for-participation.md at master · bgamari/ghc-debug
- libdw で遊ぶ - Qiita