Das ist tatsächlich möglich, indem man `` ` `` zu einem aktiven Zeichen macht. Aktive Zeichen sind quasi Befehle, die nur aus einem Zeichen ohne vorngestellten Backslash (oder genauer: ohne vorangestelltes Escape-Zeichen) bestehen. Man muss nicht einmal `` ` `` generell zu einem aktiven Zeichen machen. TeX bietet nämlich die Möglichkeit, Zeichen auch nur im Mathemodus aktiv zu machen, indem man ihnen den Mathematik-Code "8000 (=32768) gibt:
\documentclass{article}
\usepackage{amsmath}
\mathcode`\`="8000 % mache ` zu einem aktiven Zeichen im Mathemodus
\begingroup
\uccode`\~`\`
\uppercase{%
\endgroup
\def~#1`{\text{#1}}}
\begin{document}
\begin{align}
a&=`Testtext` \\
b&=`Testtext mit {`Hochkomma'}`\\
c&=`{Ebenfalls mit `Hochkomma`}`
\end{align}
\end{document}
Der Weg über `\uccode` und `\uppercase` ist dabei ein gängiger Trick, der auch im TeXbook beschrieben wird und der notwendig ist, weil `` ` `` ja im Textmodus, in dem die Definition eigentlich stattfindet, gar nicht aktiv ist, also eigentlich nicht als Anweisung definiert werden kann.
Das Beispiel zeigt auch wie man `` ` `` innerhalb des Textes trotzdem verwenden kann, indem man entweder Gruppenklammern (Fall `b`) oder Argumentklammern (Fall `c`) verwendet. Es ist zu beachten, dass das `\endgroup` hier im Argument von `\uppercase` steht und das Argument bis nach der Definition von `~` reicht. Grob umrissen wird dabei `~` aufgrund der `\uccode`-Änderung am Anfang der Gruppe von `\uppercase` durch das (aktive) `` ` `` ersetzt.
Außerdem wird eine Definition mit einem sogenannten *begrenzten Argument* verwendet. Dabei wird das Argument nicht (zwingend) durch Argumentklammern begrenzt, sondern durch Zeichen im Argumentdeklarationsteil der Definition. Im Beispiel ist das begrenzende Zeichen wiederum ein `` ` ``. Übrigens sind optionale Argumente in LaTeX ebenfalls über ein *begrenztes Argument* definiert. Dabei wird `[` als vordere und `]` als hintere Grenze verwendet. Deshalb muss man für ein `]` in einem optionalen Argument auch denselben *Trick* verwenden, den ich oben verwendet habe, um ein `` ` `` innerhalb des Textes verwenden zu können.
In einem Kommentar habe ich skizziert, dass es für die Darstellung im Editor eventuell besser wäre, ein aktives Zeichen mit regulärem Argument zu definieren. Allerdings ist das dafür von mir ins Spiel gebrachte Zeichen `§` nicht wirklich gut geeignet. Da es von der Eingabecodierung abhängig ist, ob dies ein reguläres Zeichen *reguläres Zeichen* ist oder nicht, funktioniert das folgende Beispiel *nicht* mehr, wenn man bei `inputenc` die Option in `utf8` ändert (und die Datei auch in dieser Codierung speichert):
\documentclass{article}
\usepackage{amsmath}
\usepackage[latin1]{inputenc}% Mit utf8 funktioniert das Beispiel nicht!!!
\mathcode`\§="8000 % mache ` zu einem aktiven Zeichen im Mathemodus
\begingroup
\uccode`\~`\§
\uppercase{%
\endgroup
\def~#1{\text{#1}}}
\begin{document}
\begin{align}
a&=§{Testtext} \\
b&=§{Testtext mit \S}\\
c&=\mathsection §{ links mit mathematischem \S}
\end{align}
\end{document}
Kein Problem gibt es hingegen bei Verwendung von `lualatex` oder `xelatex` mit der nativen UTF-8-Eingabe, weil dabei das `§` ebenfalls ein reguläres Zeichen *reguläres Zeichen* ist. Dann können sogar die `\S` im Beispiel durch `§` ersetzt werden.
Aus diesen Gründen würde ich tatsächlich die von @jan12 in der Frage vorgeschlagene Lösung mit `` `text` `` als die bessere Variante bezeichnen.